<?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>218427</bug_id>
          
          <creation_ts>2020-11-01 11:30:42 -0800</creation_ts>
          <short_desc>[GPU Process] Control the life cycle of the platform image by a new class named NativeImage</short_desc>
          <delta_ts>2021-02-08 06:52:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219267</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221550</see_also>
          <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>217596</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703407</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 11:30:42 -0800</bug_when>
    <thetext>A new class is needed to allow:

1. Caching the platform image in the GPU side when it is first painted. This can be done by assigning a unique RenderingBackendIdentifier to each NativeImage.
2. Remove the platform image from the GPU side when the NativeImage is being destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703415</commentid>
    <comment_count>1</comment_count>
      <attachid>412868</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 12:50:58 -0800</bug_when>
    <thetext>Created attachment 412868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703416</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-11-01 12:51:51 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703436</commentid>
    <comment_count>3</comment_count>
      <attachid>412877</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 20:26:55 -0800</bug_when>
    <thetext>Created attachment 412877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703438</commentid>
    <comment_count>4</comment_count>
      <attachid>412879</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 20:52:50 -0800</bug_when>
    <thetext>Created attachment 412879
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703439</commentid>
    <comment_count>5</comment_count>
      <attachid>412880</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 21:16:25 -0800</bug_when>
    <thetext>Created attachment 412880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703440</commentid>
    <comment_count>6</comment_count>
      <attachid>412881</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 21:38:21 -0800</bug_when>
    <thetext>Created attachment 412881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703446</commentid>
    <comment_count>7</comment_count>
      <attachid>412885</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 22:20:28 -0800</bug_when>
    <thetext>Created attachment 412885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703449</commentid>
    <comment_count>8</comment_count>
      <attachid>412887</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 23:19:52 -0800</bug_when>
    <thetext>Created attachment 412887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703453</commentid>
    <comment_count>9</comment_count>
      <attachid>412890</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 00:12:04 -0800</bug_when>
    <thetext>Created attachment 412890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703454</commentid>
    <comment_count>10</comment_count>
      <attachid>412891</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 00:16:33 -0800</bug_when>
    <thetext>Created attachment 412891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703457</commentid>
    <comment_count>11</comment_count>
      <attachid>412893</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 00:27:40 -0800</bug_when>
    <thetext>Created attachment 412893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703463</commentid>
    <comment_count>12</comment_count>
      <attachid>412894</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 01:44:11 -0800</bug_when>
    <thetext>Created attachment 412894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703828</commentid>
    <comment_count>13</comment_count>
      <attachid>412894</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 23:40:54 -0800</bug_when>
    <thetext>Comment on attachment 412894
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImage.h:74
&gt; +    RenderingResourceIdentifier m_renderingResourceIdentifier { RenderingResourceIdentifier::generate() };

It&apos;s a bit surprising the Image owns this itself, rather than a higher level

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:460
&gt; +        subImage = tileImage-&gt;platformImage();

I wish there was a way to get rid of this extra typing. Requiring it doesn&apos;t seem to actually add much clarity to the code. Can we do an operator PlatformImagePtr()?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:87
&gt; +        image = NativeImage::create(CGBitmapContextCreateImage(context.get()));

I wish we could make this implicit.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:864
&gt; +DrawNativeImage::DrawNativeImage(RenderingResourceIdentifier renderingResourceIdentifier, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options)

Most of this patch is an introduction and migration to a new type, but this looks like an intentional behavior change. It seems like a good idea to split this out, just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704567</commentid>
    <comment_count>14</comment_count>
      <attachid>412894</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-04 12:52:21 -0800</bug_when>
    <thetext>Comment on attachment 412894
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:369
&gt; +        m_decodedImage = NativeImage::create(CGBitmapContextCreateImage(bitmapContext.get()));

Does this leak the image?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:73
&gt; +        return NativeImage::create(CGImageCreateWithImageInRect(image-&gt;platformImage().get(), CGRectMake(0, 0, backendSize.width(), backendSize.height())));

(Ditto about the leak)

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:87
&gt;&gt; +        image = NativeImage::create(CGBitmapContextCreateImage(context.get()));
&gt; 
&gt; I wish we could make this implicit.

(Ditto about the leak)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704584</commentid>
    <comment_count>15</comment_count>
      <attachid>412894</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-04 13:22:04 -0800</bug_when>
    <thetext>Comment on attachment 412894
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:159
&gt; +        image = NativeImage::create(CGImageCreate(pixelArrayDimensions.width(), pixelArrayDimensions.height(), 8, 32, 4 * pixelArrayDimensions.width(), sRGBColorSpaceRef(), kCGBitmapByteOrderDefault | kCGImageAlphaNoneSkipLast, dataProvider.get(), 0, false, kCGRenderingIntentDefault));

IIUC, these are going to leak as well since CGImageCreate returns a +1 object.

We could use adoptCF here to fix this.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:169
&gt; +        image = NativeImage::create(CGBitmapContextCreateImage(context.get()));

(Ditto)

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:114
&gt; +        return NativeImage::create(CGBitmapContextCreateImage(context().platformContext()));

(Ditto)

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:117
&gt; +        return NativeImage::create(CGImageCreate(

(Ditto)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705499</commentid>
    <comment_count>16</comment_count>
      <attachid>413507</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 20:03:35 -0800</bug_when>
    <thetext>Created attachment 413507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705500</commentid>
    <comment_count>17</comment_count>
      <attachid>413508</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 20:12:22 -0800</bug_when>
    <thetext>Created attachment 413508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705504</commentid>
    <comment_count>18</comment_count>
      <attachid>413511</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 20:45:40 -0800</bug_when>
    <thetext>Created attachment 413511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705518</commentid>
    <comment_count>19</comment_count>
      <attachid>413517</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 21:45:11 -0800</bug_when>
    <thetext>Created attachment 413517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705519</commentid>
    <comment_count>20</comment_count>
      <attachid>413518</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 22:20:22 -0800</bug_when>
    <thetext>Created attachment 413518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705525</commentid>
    <comment_count>21</comment_count>
      <attachid>413521</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-06 23:40:20 -0800</bug_when>
    <thetext>Created attachment 413521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705534</commentid>
    <comment_count>22</comment_count>
      <attachid>413521</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-07 08:46:34 -0800</bug_when>
    <thetext>Comment on attachment 413521
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:369
&gt; +        m_decodedImage = NativeImage::create(CGBitmapContextCreateImage(bitmapContext.get()));

Nit - still have a leak here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705600</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-08 11:31:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/71167282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705669</commentid>
    <comment_count>24</comment_count>
      <attachid>413566</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-09 01:15:25 -0800</bug_when>
    <thetext>Created attachment 413566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705749</commentid>
    <comment_count>25</comment_count>
      <attachid>412894</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-09 10:02:36 -0800</bug_when>
    <thetext>Comment on attachment 412894
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/NativeImage.h:74
&gt;&gt; +    RenderingResourceIdentifier m_renderingResourceIdentifier { RenderingResourceIdentifier::generate() };
&gt; 
&gt; It&apos;s a bit surprising the Image owns this itself, rather than a higher level

The identifier is removed for now. 

We agreed on having a RenderingResourceIdentifier for ImageBuffer regardless it is a remote ImageBuffer or not. This solved the problem of recording and replaying resource items such as DrawImageBuffer. A HashMap of Ref&lt;ImageBuffer&gt; is filled while recording and is passed when replaying back. DrawImageBuffer contains only the RenderingResourceIdentifier of the ImageBuffer. So I may use the technique with NativeImage.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:460
&gt;&gt; +        subImage = tileImage-&gt;platformImage();
&gt; 
&gt; I wish there was a way to get rid of this extra typing. Requiring it doesn&apos;t seem to actually add much clarity to the code. Can we do an operator PlatformImagePtr()?

I added it at some point but I realized that I need it in cases like CGImageGetWidth(tileImage-&gt;platformImage().get()). It was a little bit confusing when you need and when you do not need it. The RefPtr has its operator to NativeImage and this makes difficult to differentiate between them.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:369
&gt;&gt; +        m_decodedImage = NativeImage::create(CGBitmapContextCreateImage(bitmapContext.get()));
&gt; 
&gt; Does this leak the image?

Yes. Thanks for catching this. I think I could avoid writing adoptCF. I did not realized is going to increment the ref count instead of adopting the existing one.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:73
&gt;&gt; +        return NativeImage::create(CGImageCreateWithImageInRect(image-&gt;platformImage().get(), CGRectMake(0, 0, backendSize.width(), backendSize.height())));
&gt; 
&gt; (Ditto about the leak)

Yes searching for &quot;NativeImage::create(CG&quot; should get this as well.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:864
&gt;&gt; +DrawNativeImage::DrawNativeImage(RenderingResourceIdentifier renderingResourceIdentifier, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options)
&gt; 
&gt; Most of this patch is an introduction and migration to a new type, but this looks like an intentional behavior change. It seems like a good idea to split this out, just in case.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705860</commentid>
    <comment_count>26</comment_count>
      <attachid>413566</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-09 13:41:30 -0800</bug_when>
    <thetext>Comment on attachment 413566
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImage.h:37
&gt; +class NativeImage : public RefCounted&lt;NativeImage&gt; {

WTF_MAKE_FAST_ALLOCATED

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:341
&gt; +    RetainPtr&lt;CGImageRef&gt; image = m_cgImage-&gt;platformImage();

The member variable isn&apos;t a CGImage any more, so maybe rename it.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:376
&gt; +    image = m_cgImage-&gt;platformImage();

Hard to see where &apos;image&apos; comes from.

&gt; Source/WebKitLegacy/mac/DOM/DOM.mm:539
&gt; +            RetainPtr&lt;CGImageRef&gt; contentImage = image-&gt;nativeImage()-&gt;platformImage();

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705930</commentid>
    <comment_count>27</comment_count>
      <attachid>413639</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-09 16:20:24 -0800</bug_when>
    <thetext>Created attachment 413639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705943</commentid>
    <comment_count>28</comment_count>
      <attachid>413645</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-09 16:48:50 -0800</bug_when>
    <thetext>Created attachment 413645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705963</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-09 19:14:43 -0800</bug_when>
    <thetext>Committed r269614: &lt;https://trac.webkit.org/changeset/269614&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413645.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412868</attachid>
            <date>2020-11-01 12:50:58 -0800</date>
            <delta_ts>2020-11-01 20:26:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101125057.patch</filename>
            <type>text/plain</type>
            <size>228320</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YTUyY2YxYWIxNWNi
MjU0Y2Y1MzEyMzY5N2NjMWY2MzM3ZDFmZC4uYzBjMDg2Mjc3NDg4NzcyZjZkNmVmMmRlMDhjZTBi
MzNjY2E3MDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4OSBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6cGxhdGZvcm1JbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6c2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VQdHIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXll
ck1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRG
cmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVs
bHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRh
dGVDb250ZW50c0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
bGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZv
cm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9J
bWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFz
QWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVs
U29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJT
dWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Omlt
YWdlRm9yU291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0lt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUlu
Qnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpv
cGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1J
bWFnZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVj
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1h
Z2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1Bs
YXRmb3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246
OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZv
cm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJh
d05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFw
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZl
SW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZl
SW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxl
SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVBdHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZl
SW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorCiAyMDIwLTEwLTMxICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIExpbmVJdGVyYXRvck1vZGVyblBhdGg6OnRvcC9ib3R0b20gbWFwIHRvIExpbmU6OmVuY2xv
c2luZ1JlY3Q6OnRvcC9ib3R0b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjI3ZDdiYmMwMTljOTFkOTE5YzRlOGMw
ZWQ4ZGFjNzI1NDJjOThmNy4uZjdmOTEwNThkYWM0YTlmZjBjMzA2MmEzYWJlZjg2NGVhNzA5MTU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMC0xMS0wMSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENvbnRyb2wgdGhl
IGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNsYXNzIG5hbWVkIE5h
dGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9j
Zy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
ZW5jb2RlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChJUEM6OmRlY29kZVBsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAoSVBDOjplbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAo
SVBDOjpkZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjplbmNvZGVO
YXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2ZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6
OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6XSk6CisgICAgICAgICh1
aUltYWdlRm9ySW1hZ2UpOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVEcm9wQnlJ
bnNlcnRpbmdJbWFnZVBsYWNlaG9sZGVyczpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9wcmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xvcik6CisKIDIwMjAtMTAt
MzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xl
YW4gdXAgQm94U2lkZSBhbmQgQm9yZGVyRWRnZSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggOWY2ZjVjMDc1YmE5Zjk1NDk0YjQ0OTE5OWNmOGM4OTZjZDhiY2ZiNS4uOGE2N2Q4
ZTIzYTMzZDkxNzNkN2JhZDFkYzEyZDViZTkxOGEwMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAxICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlm
ZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZl
SW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTph
bmRSZWN0czpdKToKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJD
YWNoZSBpbWFnZUZvclVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlVJVGV4dEluZGljYXRvckRhdGEgaW5pdFdpdGhJbWFnZTp0ZXh0SW5kaWNhdG9y
RGF0YTpzY2FsZTpdKToKKwogMjAyMC0xMC0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgW1Rlc3RpbmddIFJlbW92ZSByZXF1aXJlbWVudCBvZiBhZGRpbmcgbmV3
IFNQSSBmb3IgZWFjaCBwcmVmZXJlbmNlIHRoYXQgbmVlZHMgdGVzdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggNDA2ZTA0ZTlmNTUwMTA1MGU4YmE3ZWYxMWFhNDFiMGJiYmJlYzBjMy4uNzZhOWRj
MWNkODg4ZTE3ZTgwODNjNzNiODAwMDZlNThjMzRhNTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMjA0LDcgKzEyMDQsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVu
R0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjEzLDYgKzEyMTIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRleHRUcmFjay5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDYzNzcxYjA0MDU4N2E5NDg1ZjQ0NjA4
ZjhjMTI4M2VmNzZjNjE1ZjkuLmY3YmUyNWE2MDA3NGI3YzQyYzNiMDg2ZDU1ZGQ2MWFjMDMxNWQy
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTM5LDYgKzE5MzksNyBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9MYXlvdXRTaXplLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZl
cnNhbFN0YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
NmFmNTBkMjFlYzI3NzY0NmRjMTQ3ZTQ4Njg2NTJiYWMyNTA2NzJlLi45NTVjMThhY2E4ZjQ2MmYy
N2YxNjM3ZjA0ZDgxMmRlN2I0ZjI4NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTU3LDcgKzIxNTcsNyBAQAogCQk3MjRF
RDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZC
IC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTEx
REM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAw
QTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5
MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2
RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAv
KiBQbGF0Zm9ybUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFE
ODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
OTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkyMjYsNiArOTIy
Niw3IEBACiAJCTU4MkRFMzIyMUMzMEM4NTQwMEJFMDJBOCAvKiBUZXh0RGVjb3JhdGlvblBhaW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dERlY29yYXRp
b25QYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgyREUzMjMxQzMw
Qzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0RGVjb3JhdGlvblBhaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTg2OEM3QzQyNTM5REEzMzAwQkY5REYzIC8qIEpTUmVzaXplT2JzZXJ2
ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZXNp
emVPYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4NjhD
N0Q1MjU0NkUwQjMwMEJGOURGMyAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODg0RkU1NjIyODEz
RTJEMDA0MEFGRjYgLyogSlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVzaXplT2JzZXJ2ZXJFbnRyeUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4OTU1NkVDMThENEE0NDAwMDc2NEIw
MyAvKiBCb3JkZXJFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvcmRl
ckVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThBRUUyRjMxOEQ0QkNDRjAw
MjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQm9yZGVyRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTM0
LDYgKzk5MzUsNyBAQAogCQk3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1p
bk1heC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVEJsZW5kTWluTWF4
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRFMURDN0YyNUIwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
dGl2aXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5h
dGl2ZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTMyMjQxQkNFMjAwODMzOTc1IC8qIFNWR1By
b3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDE0MjI0MUJG
QjIwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjY2RjAxNTIyNDFDMDk4MDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFu
aW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTQ0LDcgKzk5NDYsNyBA
QAogCQk3MjY2RjAyODIyNDMxMjAzMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0
RnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1
bmN0aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAyOTIyNDMx
MkIxMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAv
KiBOYXRpdmVJbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVB0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTgg
LyogRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAv
KiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDE2LDcgKzEwMDE4LDYgQEAKIAkJNzdBMTdBQTMx
MkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3N0FBRDY4MzFFQ0ZCNjYyMDBCRkEyRDEgLyogQ3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QUFENjg1
MUVDRkJEMzkwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTg2OEM3RDUyNTQ2RTBCMzAwQkY5REYzIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRl
cnNlY3Rpb25PYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc3QzEzRjA0MjE2NTY1OEEwMDJEOUM1RiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdDQUFBRUYxRjJGQzM1
MDAwQ0I1QzhEIC8qIFZpc3VhbFZpZXdwb3J0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBW
aXN1YWxWaWV3cG9ydC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3RDUwRkZB
MUVENEVDNzgwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNjM1OSw4ICsyNjM2MCw4IEBACiAJCQkJMDdCOTNGRjkyM0I5
MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZC
MDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNB
NTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJ
NzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEz
MzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1
M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUz
ODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZl
cnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2MzcxLDYgKzI2MzcyLDcgQEAKIAkJCQlBOEZBNkU1QjBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhE
NzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAw
QUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEy
NTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1
NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMz
REMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4
NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzgy
LDcgKzMzMzg0LDYgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2Rl
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAg
LyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAy
RUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhC
Q0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjA4LDYgKzMzNjA5LDcgQEAKIAkJCQlBNzIzRjc3QjE0
ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkw
IC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRE
NDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXgg
MGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZj
YTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1Zp
ZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZl
MGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4yYzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2
NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4
ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0
ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVk
aWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYwMGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNj
Yi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJmOTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYzNSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRl
CiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsKIAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZl
SW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAg
ICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0
aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1
dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAg
Yy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwg
dmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFmZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZi
ZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsx
NjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBU
ZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAKICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxv
Z2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAg
Y29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRz
SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChp
bmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAg
Y29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxzZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGlt
ZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0
ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJ
bmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRp
b24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhL
ZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJ
bWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRl
bnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFk
ZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2JyaWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsK
ICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNd
OwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5k
ZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4
ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVy
KiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIp
CiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsK
QEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNv
ZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQp
CiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVz
IC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBf
X0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0
YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAg
LTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdl
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1f
c291cmNlLT5mcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdl
dENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCht
X2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdl
OjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9y
aWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAg
YXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwog
CkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJh
bnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0
UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxv
YXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJh
d05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsg
b3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUlt
YWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRt
YXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1l
Q291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2Ug
JiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYg
aW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0K
IApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2
ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1
cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1h
cEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+
IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJ
bWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7
CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFn
ZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjExLDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGlj
IGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50
U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFs
bGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2
ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1h
Z2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWln
aHQoKSkKICAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUu
dHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGlu
ZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZv
ckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywg
c291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1
cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNj
YWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29k
aW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VS
VCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2Fu
aW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAg
aWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAg
ICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRp
b24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0
LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBv
cmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0
aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0
LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9w
dGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3
YzVhMWZkYTM0MzY4YWM3YzEyMy4uMzQ4MGZhMDdlMjM3NzAyMmVlNmZjODc4OTNiZjE5ZWVlODIy
OWY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFRpbWVyOwogCiBjbGFzcyBCaXRtYXBJbWFnZSBm
aW5hbCA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJbWFn
ZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoUmVm
UHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFn
ZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsKICAgICB9CkBAIC0xMzUsMjMgKzEz
NSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJ
bWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFu
c2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9u
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAjaWYgVVNFKENH
KQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPE5h
dGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+
IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAgICB2b2lkIGltYWdlRnJhbWVBdmFp
bGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYm
KTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShOYXRpdmVJbWFn
ZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEJp
dG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxw
dHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOyB9Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4KGlu
ZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKIAogICAgIC8vIENhbGxlZCB0
byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3ZSB3
aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxsIHRo
ZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRp
ZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+Jik7CisgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8
TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGNsZWFyVGltZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUwLi45ZTI3
MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0x
MTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9iYWNrZW5kID8gbV9i
YWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAgICAgfQogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3Jl
dGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRv
KiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgZmx1c2hE
cmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5ZGVkMGVlNzUxM2MxOGY5NGQzMmZh
Mzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2ZTMwMTE2ZmE1YjUzMDYzMmMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAg
ICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwp
IHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMp
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRyYXdQ
bGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2EuLjYxNDMzMDBjODhiMmQ3
ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNzksNyArMzc5LDggQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9
KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAg
IHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7Ci0KICAgICBG
bG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25z
dCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVk
TGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4MzdmZTA2ZGYw
YWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHJp
dmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFn
ZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2Rl
Y29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICBV
bmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlmZGUyNDhmODIzOGMzOWNlLi40NGQ1
MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03
NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRp
bGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BsYXRm
b3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRhNzlhZGQ5ODg0MTM2ZDdkLi41YzI4
NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9STShNQUMpCiBPQkpDX0NMQVNTIE5T
SW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRzIGFuZCBy
ZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29u
Rm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7Cisg
ICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDRiOWJlZWQ4NjU3
ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIzN2Q2YzhlYzZmMDBmNGZlYjRkZDM2
ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNs
dWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAgcHVibGljOgogCiAgICAgZW51bSBU
aWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9
OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRy
dWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRT
aXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFn
ZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRhNjM0ZTlmNzgzODU5OGQwZWRhYjBj
ODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNiOTZiZjFmODE3MTVhYjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VCYWNraW5nU3RvcmUob3RoZXIpKTsK
ICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0OworICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFmZjAzODE5OTViNWRlNWJkM2E1NTU4
YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2NTM5OWIwMDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xODgs
NyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29w
eVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QKICAgICByZXR1cm4gYnVmZmVyOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9O
YXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2FlNzUxNzZhMjk5NDIzMmJkYWRmMmE0
Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRmOGY4MDM3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKIAotICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
PSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNl
cnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBi
dWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlz
IGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCi0gICAgc3Rh
dGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRp
dmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObyk7
CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQ
dHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNv
bHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAK
aW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBmMjUxZjY5ODNhMS4uZjFmMzY3YzA2
YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAgICAgcmV0dXJuIGJhY2tlbmRTaXpl
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZl
SW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1NjdmMDg4M2I1YmQwMmUwZWVjYjhj
ZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2QxODZmYjY1Yzg0MDE2MjdjOGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5o
IgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXpl
LmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5
Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBO
YXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3Vt
aW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4ODVkNzA5YmQ5ODE3Li5lNGFhNTI0
NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1h
Z2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25k
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6
ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAppbmRleCA4M2I3OGI2ZWMwMDZm
YzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2MDI5NWNlMGM1YjlkYjE0MTUwNGNl
Y2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNpZ25lZCBJbWFnZUZyYW1lOjpjbGVh
ckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVzKCk7
CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1fbmF0aXZlSW1hZ2UpOworICAgIG1f
bmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAgbV9uYXRpdmVJbWFnZSA9IG51bGxw
dHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGluZ09wdGlvbnMoKTsKIApAQCAtMTIx
LDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNv
bnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEp
KQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJldHVybiBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFn
ZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1NGE5YzlkZjMzYjRkMzNiMTI3NWY5
MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZhYzQyMWVjMzVjM2U2YzY3MTgxMWU3
YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXplKCkuYXJlYSgpICogc2l6ZW9mKHVp
bnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGluZ0xldmVsOyB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7
IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlv
bjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIERlY29kaW5nU3RhdHVzIG1fZGVj
b2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCB9OwogICAgIEludFNpemUgbV9z
aXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBs
aW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0IH07CiAgICAgRGVjb2RpbmdPcHRp
b25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAyOGMzYzNiM2Y2MTZjNmExMzc4YTk0
ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVkZmYzNTYxM2VjNDc0MzNmNTUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2Uq
IGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDbwogewogfQogCi1JbWFn
ZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKK0ltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAg
ICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQogewogICAgIG1fZnJhbWVDb3VudCA9
IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Z3Jvd0ZyYW1lcygpCiAg
ICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNl
dE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCit2b2lkIEltYWdlU291
cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiB7
CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsKICAgICBJbWFnZUZyYW1lJiBmcmFt
ZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNl
dE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCiAgICAgZnJhbWUubV9u
YXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogCiAgICAgZnJhbWUubV9kZWNvZGlu
Z1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsKLSAgICBmcmFtZS5tX3NpemUgPSBu
YXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7Ci0gICAgZnJhbWUubV9oYXNBbHBo
YSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRpdmVJbWFnZSk7CisgICAgZnJhbWUu
bV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgpOworICAgIGZyYW1lLm1faGFzQWxw
aGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgpOwogfQogCiB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCkBAIC0yNjcs
NyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4KIAogICAgIGlmIChmcmFtZS5tX2Rl
Y29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgIEFTU0VSVChmcmFt
ZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VT
aXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5u
YXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLm1fc2l6ZSA9
IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAK
QEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgogICAgICAgICBmcmFt
ZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CiB9
CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdl
UHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3Jt
SW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewog
ICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJh
bWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwg
c2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTW92ZSB0aGUgbmV3IGltYWdlIHRv
IHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFn
ZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNvZGluZ09wdGlvbnMgPSBkZWNvZGlu
Z09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2Us
IHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQoZnJhbWUuZnJhbWVCeXRlcygpKTsK
IH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRp
dmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMs
IERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVQ
bGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdl
LCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5n
U3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdl
QXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpegogICAgIEFTU0VS
VChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2
ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdU
Rk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRp
b25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRp
b25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAt
ICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4KTsKIAogICAg
IC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGluZXNzIG9mIHRoZSBuZXcgZnJhbWUg
TmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRB
c3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHN0YXJ0aW5nVGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZyYW1lIE5hdGl2ZUlt
YWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAgICAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZy
YW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVx
dWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKQorICAg
ICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7CisgICAgICAgICAgICBpZiAo
cGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4gZGVjb2RlZF0iLCBfX0ZVTkNU
SU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFt
ZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTE9H
KEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZGVjb2RpbmcgZm9yIGZy
YW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwg
c291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CkBAIC0zNzUsMTIg
KzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAg
ICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1l
Ojpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNh
Y2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUg
TWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0
ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5hdGl2ZUlt
YWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNv
ZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0
ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJl
cXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBtYXkgaGF2
ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdlLCBzdG9w
QXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICBpZiAocHJv
dGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVl
dWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21t
aXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1vdmVGaXJzdCgpOwotICAgICAgICAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKFdU
Rk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJz
YW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3Qu
ZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNo
ZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVS
ZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0
LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291
cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdpbGwgbm90IGNhY2hlZF0iLCBfX0ZV
TkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBm
cmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7CkBAIC00NTQsOSArNDU0LDkgQEAg
Y29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQo
c2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYgKGZyYW1lLmhhc0Z1bGxTaXplTmF0
aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Ly8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGltYWdlIGRlY29kaW5nIGluIHRoaXMg
Y29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBtX2RlY29kZXItPmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOworICAg
ICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwogICAgICAgICAvLyBDbGVhbiB0aGUg
b2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4KLSAgICAgICAgY2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
VmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CisgICAg
ICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC02OTcsMTkgKzY5Nywy
MSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNvZGVyQXZhaWxhYmxlKCkgPyBtX2Rl
Y29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6
IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9kZWNvZGVyLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxOYXRpdmVJbWFnZVB0
cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKKyAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6
bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlm
TmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSks
IG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBs
aW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8
UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBu
dWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGlu
Z0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGQ5
OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYwMWQuLmE2ZjRhYjEzZGVlZmRhMzY1
MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGltYWdlLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEltYWdl
U291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKKyAgICBzdGF0aWMg
UmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92
ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCBwdWJsaWM6CiAj
aWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4dChjb25zdCBHcmFwaGlj
c0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7Ci0gICAg
TmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRlOgogICAgIEltYWdlU291cmNlKEJp
dG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBw
bGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgSW1hZ2VTb3Vy
Y2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQg
KEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAgICAgVCBtZXRhZGF0YShjb25zdCBU
JiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwpAQCAt
MTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY29kZWRTaXplUmVzZXQodW5z
aWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKEVu
Y29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwog
ICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBE
ZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0
YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5h
dGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdlQXRJ
bmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1JbWFn
ZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYs
IERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFnZUZyYW1lUmVxdWVzdDsKICAgICBz
dGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdhYWExZWZiM2E1ZTM1MzYxNmIy
MjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3NmRmYTdm
MTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbgogICAg
IHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250
ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVk
aWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3By
aXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDMzYzFkY2E4ODI0MTAyMGY0
ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3MDdjODU1Njk2NGE1MzZlOWFiNjRh
NTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpOZXR3
b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRl
eCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAzOGIwYjkxLi43ZTkwY2RkZGZjODcw
MWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTYxLDcgKzE2MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsg
fQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGlu
dCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMzdlZGUwODFjZjJjYTI0NTlmMzNjNjM1MWUzNGUwNGIwYzUwNzkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3Bw
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYm
IHBsYXRmb3JtSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2Uo
V1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisgICAgOiBtX3BsYXRmb3JtSW1hZ2Uo
V1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworTmF0aXZlSW1hZ2U6On5OYXRpdmVJbWFn
ZSgpCit7CisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUlt
YWdlV2lsbEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFl
MThlNWIuLjU0Njc0ZWEwZTliYjVmMDA0ZmE0NzgyZDUzOGNkYmQ4NWEyZjJmNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYg
KzI3LDQ2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2lu
Y2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xh
c3MgSW50U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxOYXRpdmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0
dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7
CisgICAgfTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+
IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYpOworICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBJ
bnRTaXplIHNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgfk5hdGl2ZUltYWdlKCk7CisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7IH0KKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0KKworICAgIEludFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdlKTsgfQorICAgIGJvb2wgaGFzQWxwaGEo
KSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdDsKKworICAg
IHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNl
cnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKKyAgICAKK3ByaXZhdGU6CisgICAg
TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmKTsKKworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
bV9wbGF0Zm9ybUltYWdlOworICAgIE9ic2VydmVyKiBtX29ic2VydmVyIHsgbnVsbHB0ciB9Owor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciB7IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNk
NzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0MDcxZDA3Yzk1ODIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1
Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQ
dHJDYWlyby5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIK
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0cpCi10eXBlZGVmIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShESVJFQ1QyRCkK
LXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShD
QUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci0j
ZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkyZDA3Zjk0NGU5ZTM5OGZjZjUy
NGZhMTllZjA0NTkxMTAxM2QxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VQdHIuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0
IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiUmVmUHRy
Q2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQordXNpbmcgUGxhdGZv
cm1JbWFnZVB0ciA9IFJldGFpblB0cjxDR0ltYWdlUmVmPjsKKyNlbGlmIFVTRShESVJFQ1QyRCkK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBDT01QdHI8SUQyRDFCaXRtYXA+OworI2VsaWYgVVNF
KENBSVJPKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
OworI2VsaWYgVVNFKFdJTkdESSkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8U2hh
cmVkQml0bWFwPjsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAppbmRleCAxYjA3Zjg2ZjM5MzE3OGY0Y2Y3
ZmU4M2E4MTQ3ODA4NGViZjIyODMxLi5hZDNjMWJiNzlhZWRjYWFlM2U3OTdmZDhmYjJkNmFhYTg2
ZWQzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Zp
ZGVvTGF5ZXJNYW5hZ2VyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiB2
aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKE5hdGl2ZUltYWdl
UHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUlt
YWdlKFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggOGE1ZjU4NzBhMzUzNTczZDg2
OTc2NjkzOTE1NGQ5N2I3MjJjZmMzMC4uZmIzYmZjZGMyYmUxZTc4MTY2NGEyNDE5NDkzZTk1YmE1
Mzc4N2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxp
bmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRT
aXplKGxvbmcgbG9uZykgZmluYWw7CiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDI1YmYxNTlkZTQ0NTM0OTE2ZjkwYWJkMDc1M2ExMTU1
NmFjNTEyYjcuLjhjZGZjNzFiNjQ1MDNkZTMzMzE2MzU5Y2QzMzlkZDBkMzQ4NGIxNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNTY3LDcg
KzU2Nyw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzCiAgICAgcmV0dXJuIChmcmFtZVNpemUu
YXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
ckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIg
aG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCA2YTZmZDcxODNhZTg5ZDM4NTgyYjYxMWRkNzAxNmE1M2FlOWMxZWE2Li4yNmIzZDc4ZmUx
YjBjZTZkNDc2ZDJhNWU3Mzg3NWUzOTBlM2VkZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpOwogICAgIHZvaWQg
cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFs
OwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogCiAg
ICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CkBAIC0zNDMsNyAr
MzQzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+
IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZQdWxsRGVsZWdhdGU+IG1f
dmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9s
YXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFzdEltYWdlOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1faW1hZ2VSb3RhdGlvblNlc3Npb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvVGV4dHVyZUNvcGllckNWPiBtX3ZpZGVvVGV4dHVyZUNvcGllcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGYyOTQ4ODE2ZWRkZTc5ZTc4
YTE5MzFkNWJjNmQzZWNlZWI1ZDg0N2YuLjNhYmJhOTJlNTA5YTIxNDA0OWQ1MDQxNmQ2NTI0MDFj
NDYxODc5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAg
UGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92aWRlb0xheWVyTWFu
YWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UpOworICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQog
CiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQpAQCAtMTEzOSw3ICsxMTM5LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKgogewogICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5MYXllcikK
ICAgICAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkp
OwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVv
RnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2Up
OworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVv
RnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2Ug
PyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiAgICAgdXBkYXRlRGlz
YWJsZUV4dGVybmFsUGxheWJhY2soKTsKIH0KIApAQCAtMjI5Myw3ICsyMjkzLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRl
VHlwZSB0eXBlKQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydCA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogCi0gICAgbV9sYXN0SW1hZ2UgPSBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJ
bWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0
SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0
ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSk7CiAKICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3JlYXRpbmcgYnVmZmVyIHRvb2sgIiwgKE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMoKSk7CiB9CkBAIC0yMzE0LDggKzIzMTQsOCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7
CiAKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChtX2xhc3RJ
bWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkpKTsKLSAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUo
KSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KHsgMCwg
MCB9LCBtX2xhc3RJbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
bV9sYXN0SW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAK
ICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQgYW4gQVZBc3NldEltYWdlR2VuZXJhdG9yIGluIHRo
ZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxlCiAgICAg
Ly8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQgbm93IHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRl
ZC4KQEAgLTIzNDEsNyArMjM0MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0
dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlB
bHBoYSwgZmxpcFkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFz
dEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBlN2JmN2E3NjczMzBhNjcyN2Yw
NjMyMTYxNGRlMWIwYTM4MDdmOWFiLi5hMGFmOWI4NzRjYWU4MmFiZDNmODA5MTBmNmJhMjlkOWUz
OTRiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92
ZXJyaWRlOwogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB1cGRh
dGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPGlkPiBtX3BlcmZvcm1UYXNrT2JzZXJ2ZXI7CiAgICAgUmV0YWluUHRyPEFWU3RyZWFt
U2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1h
Z2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gbV9yZ2JDb25mb3JtZXI7CiAgICAgUmVmUHRy
PFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKICAg
ICBEZXF1ZTxSZXRhaW5QdHI8aWQ+PiBtX3NpemVDaGFuZ2VPYnNlcnZlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggOTI1YmY0ZTFmOTBiNTRjNDI4NjZjMjY1ODA1OWM2MTFhY2Mx
YmIwZS4uOGJjNDhmYTNlMzI0NTI1Njc1ZDllOGM4OGRmOWYzYWMxNzQ0MDg4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTY0LDEwICs1NjQsMTAgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiAg
ICAgcmV0dXJuIGxvYWRpbmdQcm9ncmVzc2VkOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgp
OwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7
CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVM
YXN0UGl4ZWxCdWZmZXIoKQpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogICAgICAgICBtX3JnYkNv
bmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1f
cmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcmdiQ29u
Zm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQo
KSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MjYsOCArNjI2LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ28KICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwg
MCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5n
ZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6
ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAw
LCAwIH0sIGltYWdlLT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKQEAgLTEyMTksNyArMTIxOSw3
IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlk
ZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXIt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCmluZGV4IDA4OGYxZDkyYzk3ZjM5MjViZjlhOWJjMGIyMzc5ZDM1MGJk
YmJjYTkuLjg3ODA5NmFkYmQ2ZTI1ZDQzMTg2YmVlYjBiYWRmNDY4Zjg2Y2U0YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Q3VycmVudEZyYW1lUGFpbnRlcigpID0gZGVmYXVsdDsKICAgICAgICAgdm9pZCByZXNldCgpOwog
Ci0gICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlOworICAgICAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7CiAgICAgICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbWVkaWFT
YW1wbGU7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBw
aXhlbEJ1ZmZlckNvbmZvcm1lcjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDk4OWZiODlkYTJhYjM4ZDFmMWMxN2Q1YWZkMWNhODIyNjAyMjdjYjQuLjlhNTM2ZGI5MmIy
ZTA0MmQ4NzgxNGE5ZWVhYWE5M2VlYzgzODk4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTc2Miw3ICs3NjIsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgp
OwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVv
RnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBt
X2ltYWdlUGFpbnRlci5jZ0ltYWdlID8gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCkBAIC05
NTUsNyArOTU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVy
R2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxl
KCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9
IG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CisgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0
ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCkBAIC05
NzUsMTQgKzk3NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGlmICghbV9pbWFn
ZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLmdldCgp
OwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwg
Q0dJbWFnZUdldEhlaWdodChpbWFnZSkpOworICAgIGF1dG8mIGltYWdlID0gbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6
ZSgpKTsKICAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0pCiAgICAgICAgIG1fdmlkZW9UcmFuc2Zv
cm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBs
ZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gKm1fdmlkZW9UcmFuc2Zv
cm07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChkZXN0UmVjdCk7CiAg
ICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwotICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBp
bWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJP
YmpDLmgKaW5kZXggOTlkODViM2YyZGM4ZTc4YTU2ZDJiOTExN2RjZmIzY2Y4MGJmNzU4NS4uYjY5
YjEwNzA4OTY3Zjg3NWRiODBhZWM5ZDA5YzM2Y2RiM2FjMmRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1h
bmFnZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKQEAgLTYzLDEwICs2MywxMCBAQCBw
dWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0
aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCBmaW5hbDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShOYXRpdmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVW
aWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSBmaW5hbDsKICNlbmRp
ZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0
aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVy
TWFuYWdlck9iakMubW0KaW5kZXggZjY3OTUzZDYzMTNiN2Q5YjYyYWM2ZDFhNmU2NTZiODA4ODQ3
NzA0ZC4uZjExOGRiNWMzYzVjYmViZWRlNDExZWE1NGQ1ZWFmNmVjYTJhZjdjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9MYXllck1hbmFnZXJPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQpAQCAtMTAzLDcg
KzEwMyw3IEBAIFBsYXRmb3JtTGF5ZXIqIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dmlkZW9GdWxs
c2NyZWVuTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdl
dCgpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0ciBjdXJyZW50SW1hZ2Up
Cit2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyIGN1cnJlbnRJbWFnZSkKIHsKICAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3JlZW5MYXllcikgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qgdmlk
ZW9GdWxsc2NyZWVuRnJhCiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogfQogCi12b2lkIFZp
ZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0
aXZlSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSkKIHsKICAgICBp
ZiAobV92aWRlb0lubGluZUxheWVyKQogICAgICAgICBbbV92aWRlb0lubGluZUxheWVyIHNldENv
bnRlbnRzOihfX2JyaWRnZSBpZClpbWFnZS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBjMDA2
OWJkY2ZiZDYxZmY3NjU4ZWFjZDEwNjA4MmFlMGM2ZmQyMGQyLi4zYzhmN2MwMmEzOTlkMWFmZDg3
ZDZlZjc2Y2VlMWIwM2YxZWNhM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI1OTMsNyArMjU5Myw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKICAgICAgICAg
Ly8gRklYTUU6IG1heWJlIG9ubHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFnZSBpcyBiZWluZyBz
Y2FsZWQgZG93biwKICAgICAgICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBj
aGFuZ2VzPwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE1pbmlmaWNhdGlvbkZpbHRlcihQ
bGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcik7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7CisgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpKTsKICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG51bGxwdHI7CiAK
ICAgICAgICAgaWYgKG1fbGF5ZXJDbG9uZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggODg1Zjc5OWY2ZjEx
ZDRmOTU1MWY1NWFjNDZmY2UzY2U0ZThjZTk2MS4uYWVmM2MyNjhmNWQxMjRkNDc5ZTZkZmZhZDhj
MzQ3M2RjOTllNmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgRGlzcGxh
eUxpc3Q7CiAKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBJbWFnZTsKK2NsYXNzIE5h
dGl2ZUltYWdlOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJD
QSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsK
QEAgLTYwMCw4ICs2MDEsOCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3IgbV9jb250ZW50c1NvbGlk
Q29sb3I7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3RlZENvbnRlbnRz
SW1hZ2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7CiAgICAgCiAgICAg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYwYzcwNzY4MjBk
MDZhNTViYTVjNTU4MjQ4YzMuLmE3MTQyNjQyMWZjZmE1MmUwZmQ2ZjM3M2RiNzc1MmRkODUzMjU1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxMSArMTIzLDE2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tl
U3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0
byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAppbmRleCA4ZWY0Zjc4NmI3MjQ5MTQyNDU2ZWZmMWYwYWQ4MjE2Y2M5MDU1MzY3Li42NDQxMWU2
NDdmZTM4MDRlZDc3OGRjMDg2NjcwY2I2NWYyNDAyNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKQEAgLTI4NSw3ICsyODUsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYsIGMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5wbGF0Zm9ybUltYWdl
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAg
IGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKQEAgLTI5NSw3ICszMDAs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29ucwogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFj
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpk
cmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFn
ZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBv
cHRpb25zKTsKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVz
dFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTQyMSw3ICs0MjYsNyBAQCBJbnRSZWN0
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVy
LmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpj
bGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJl
Y3QpOworICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMWM4MjcxMzBjMmE1ZmUyOGY3NTM1
ZTE5NDVhMzNkYzk2ODYyMDUxNC4uNmRkNWFmM2VhYzQyMTg0Y2QxN2ViMzQ2Njk2NDE1YjI4ZWI1
NzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDgg
QEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdl
OjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1J
bWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dAogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGYxZjc1
NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uZjU0ZmQ4N2FkYWJmYjdmMmNiMzJi
NTYzZjFmODRhNzE0M2EwMjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7
CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0
KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgp
KTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUoY29weSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAg
ICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUobV9zdXJmYWNlKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2Vy
Y2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsK
ICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fc3VyZmFj
ZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3OTU4MjVkYzY3
NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYwY2JmNWViMjQx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGlj
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VU
b0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1h
Z2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4NDM0MTU4YjRkMDMz
MDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUzOTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0
Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUoaW1hZ2Uu
Z2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlID8gY2Fpcm9TdXJm
YWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRp
dmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZl
SW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdlIHx8IGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Cisg
ICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudCht
X3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CiB9CiAKLUNvbG9y
IG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAog
ewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEs
IDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEp
KQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90
eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisgICAgaWYgKGNh
aXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBDQUlST19TVVJG
QUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgdW5zaWduZWQq
IHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1f
cGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRpcGxpZWQoYXNTUkdC
QShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJp
bWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJp
bWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggY2Y4ZWMyOWI1Y2U2NGE1MjAx
N2I3NWQwOTBiNWY5MjZmZDU2MDEyYS4uMGExOTkwYWVhYzI5M2VkMTA5ODAyODk4NTJlMjRhZThl
NmZjNmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjgwLDExICsyODAsMTYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNl
clRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxD
R0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9y
bUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAjZW5kaWYKQEAgLTQ0NywyMyArNDUyLDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLnByZVRyYW5zZm9ybWVkTmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1h
Z2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFn
ZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmICh0aWxl
UmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZTsK
KyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVj
b2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBz
aG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25s
eSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFn
ZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7
Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBn
YXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFn
ZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZp
Y2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lk
dGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0
KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0g
aW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVp
Z2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0
byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJl
cGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0
LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KQEAgLTUxMiw3ICs1MTcsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0
aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpOwotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBuYXRp
dmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwogCiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTog
VGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBt
YXNrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGJiOTFkZWM5MTIyNGQ0MTk3ZWNh
ODFiYmRiYzRlMDU2N2U0M2MwNGQuLjA0MDM5NDY5MTM1YzM1NTU1MjQyZWM1YjlmN2EyZjg2MzA5
YzIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zMzgsOCArMzM4LDkgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGkKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZS5nZXQo
KSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlLmdldCgp
KTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkp
OworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKICAg
ICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0zNDcsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICAv
LyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUgaW1hZ2UgcmUt
cGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNvbG9yIHRhYmxl
IGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKKyAg
ICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdl
LmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JTcGFjZUdldE1v
ZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRl
eGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQ7CkBA
IC0zNjIsMjIgKzM2MywyNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0bWFwQ29udGV4
dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1f
aW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1f
aW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhl
IG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJp
dG1hcCBjb250ZXh0LgotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwotICAgICAgICBtX2NnSW1h
Z2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBOYXRp
dmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCkpKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAgICAgfQogCi0g
ICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudCht
X2NnSW1hZ2UuZ2V0KCkpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0
c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgaWYgKCFtX2NnSW1hZ2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9ybUltYWdlKCk7
CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVu
dChpbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRz
UGVyUGl4ZWwoaW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ICE9IDggJiYg
Yml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChi
aXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJpdHNQZXJDb21w
b25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZv
KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0
Qml0bWFwSW5mbyhpbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3VyY2UgPSBmYWxz
ZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBpbnRvIG9uZSBs
YXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90IHRvIHNvIHRo
YXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MTksNyArNDI0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGkKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvTm90aGluZzsKICAgICBBbHBo
YUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgeworICAgIHN3aXRjaCAoQ0dJbWFnZUdl
dEFscGhhSW5mbyhpbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAg
IG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvVW5tdWx0aXBseTsKQEAgLTQ2MywxNCArNDY4LDE0IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VGb3JtYXQgPT0g
RGF0YUZvcm1hdDo6TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9w
aXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQ
cm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZS5nZXQoKSkp
KTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0
Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgc3JjVW5wYWNrQWxp
Z25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJS
b3cobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0
Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcgPSBieXRlc1Bl
clJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYgKHBhZGRpbmcp
IHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBAIC01NDMsNyAr
NTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICBjb250ZXh0LnNjYWxlKEZsb2F0
U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZVNpemUuaGVpZ2h0
KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOworICAgIGNvbnRleHQu
ZHJhd1BsYXRmb3JtSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5k
ZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFmYTVjMTdiMy4uNTRiODc4YjQzNDc2
ZTE5YmQ2ZjYxNzFmOGI0OTYyNzc2M2UwZmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApA
QCAtNjcsMjQgKzY3LDI0IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4
dCgpCiAgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2Nh
bGUpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFn
ZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
KQorc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3Nh
cnkoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSkKIHsKLSAgICBpZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgIT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS53aWR0aCgpKSB8fCBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLmhlaWdodCgpKSkpCi0gICAg
ICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIENH
UmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCkp
KSk7Ci0gICAgcmV0dXJuIGltYWdlOworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpICE9
IGJhY2tlbmRTaXplKQorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdl
Q3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIENHUmVj
dE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCkpKSk7
CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVm
PiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAg
ICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGltYWdlID0gY3Jl
YXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoV1RGTW92ZShpbWFnZSksIGJhY2tlbmRTaXplKTsK
ICAgICBlbHNlIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgs
IDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxT
aXplOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7
Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpj
cmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0K
IAogICAgIGlmICghaW1hZ2UpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VS
ZWY+CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCkBAIC0xMTQsNyAr
MTE0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBzcmNSZWN0U2NhbGVkLnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUlt
YWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRD
b3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9u
cyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2Vu
ZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQpAQCAtMTM4LDcgKzEzOCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
CiAgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7CiAg
ICAgQVNTRVJUKHV0aSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHByb3RlY3RlZFBpeGVsQXJyYXk7CiAKICAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0KCksIGpwZWdV
VEkoKSkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAg
ICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlEaW1lbnNpb25z
LndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAzMiwgNCAqIHBpeGVs
QXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgICAgIGlt
YWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlEaW1lbnNp
b25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAzMiwgNCAqIHBp
eGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1h
cEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfSBl
bHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJ
Zk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CkBAIC0xNjUsMTIgKzE2NSwx
MiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tl
bmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBD
R0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAg
ICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgYmFj
a2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkp
OwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVp
Z2h0KCkpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0
KCkpKTsKICAgICB9CiAKICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKCFlbmNvZGVJbWFnZShpbWFn
ZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQorICAgIGlmICghZW5j
b2RlSW1hZ2UoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5
LCBjZkRhdGEuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBX
VEZNb3ZlKGNmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXgg
ZmZlZjY2MzMwZDFmYmUyNmM0YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uMzU2ZWI1MjYzMzc0MDcw
ODgzYTI5M2Q2NTBjNjg1NGI0N2VmZDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVo
YXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSkpOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKIAogICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUo
CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGUoCiAgICAg
ICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgs
IDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29s
b3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBtX2RhdGFQcm92aWRlci5nZXQoKSwKICAgICAg
ICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5YmQ3ZjFiYWI0N2ZmN2M3OTc0MzQ4MzNjMjdhNTQ5
NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2RkZjA2M2M0YTg2NDhmZGZmYWNlN2NmOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAK
ICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5h
dGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZGJjM2I3ZWI4YjNk
MWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAzMC4uYTlkNTQ4NWEyNjFiNWEwZGY1M2QyYjg5NzEw
YWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBA
IC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZvcm1hdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yRm9ybWF0OjpC
R1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5KSBjb25zdAogewotICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7Cisg
ICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50
b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKLSAgICByZXR1cm4gSU9TdXJmYWNlOjpz
aW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdl
OjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSkpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdl
ID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0MDMxMjRhOTA0
MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIwMWZmYzBmYjU3N2NmYjgyYmZlYzY5MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoK
ICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBleHRl
cm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4OTBhMDcxODEwOTIzZjc1YmEwZTIyOTNjNDZiZWE4
NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcyOTdlOWIxMDI5NDM3MGExZTI3NTA2ZmZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQ0c6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAg
ICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykK
IHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVyICVwIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBv
cHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1MTEzNTk1MWNkMWI1MzhiZGRmMWVjZTU0NTA2ZGRm
NmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFmOGU5YTE5MDU3MzEzZDU1MTY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CmluZGV4IDQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1YmQ5Y2I2NDZhNWJhZGViZGFkYzIuLmYyZmNlNGFh
NGI3NzFkYWUzZmI0MmQ1ZGJlM2FhMTFmYjBlNmExMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC0zNywyMCAr
MzcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUltYWdlOjpzaXpl
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGlt
YWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2Ug
PyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChwbGF0Zm9ybUltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChwbGF0Zm9ybUltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CiB9CiAKLWJvb2wgbmF0
aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29sIE5hdGl2
ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0g
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFnZUFscGhhSW5mbyBp
bmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwogICAgIHJl
dHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYmIChpbmZvIDw9
IGtDR0ltYWdlQWxwaGFGaXJzdCk7CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxT
b2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdl
OjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9y
bUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3Io
KTsKIAogICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKQEAgLTYwLDcgKzYwLDcg
QEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIENHQ29udGV4dFNl
dEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICBD
R0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAx
LCAxKSwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwog
CiAgICAgaWYgKCFwaXhlbFszXSkKICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrOwpAQCAtNjgsMTEgKzY4LDExIEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0Nv
bXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9
CiAKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAjaWYgQ0FDSEVf
U1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
OjpjbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyAgICBpZiAobV9wbGF0Zm9ybUltYWdlKQorICAg
ICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKG1fcGxhdGZvcm1JbWFnZS5n
ZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggY2JmNjI0ZjYyNzNjM2I1N2FiOWYzZGJjYzVhYjE3
ZDVlMzE5NmQ0YS4uNjc1MWJkNWU1ZTJkM2Q2YjYwMzE1MDM3YTIxZjMyMjcwZDM2N2MxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
CkBAIC02MywxMCArNjMsMTQgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50
cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGgg
ZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0
ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNr
cy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0
dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAg
IHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNw
YWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3Rl
cCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9N
QVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcs
NyArODEsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBt
X3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBw
YXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJp
bmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFn
ZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYg
cGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkubGVha1JlZigpOwog
CiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIHBh
dHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwogICAgIHJldHVybiBDR1Bh
dHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhT
dGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRl
cm5DYWxsYmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCmluZGV4IDUxM2Y0NTVjYWQ4ZTVlNjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODgu
LjJmYWI2OWUwMzMyNmMzN2I0YzNjMWM5ODNkOTQwODlhMjE4YzIzOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcs
NyBAQCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Omlt
YWdlRm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdl
QnVmZmVyPigqc291cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRo
SU9TdXJmYWNlOmRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSku
c3VyZmFjZSgpLnN1cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0
aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1
cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdl
KCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZF
Q29sb3JNYXRyaXgmIGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlu
cHV0SW1hZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNmJlMjc0YzY4ZGVlZmI0YzBk
NTM2MWJlNjQ4MTUyNDAzMmM5ZjQxLi4xZGQ0YTI0YWYyZTg4NzMzOTIzN2U5YTBkYTEzMGRkNmIy
NjQxM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjgsNiArNjgsNyBAQCBlbnVtIGNs
YXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAg
RHJhd0ltYWdlQnVmZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGxhdGZvcm1J
bWFnZSwKICAgICBEcmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAppbmRleCBmN2NhNmJiZmZkOThmYTBkZjY4YTgxMzQ4Y2FlZDU4NjNh
YTdkNTAzLi4xYmQ3YmQ4YTQ5MzVlY2FmZTc2M2Q5MzlkNzMyMTdiZWRhNzZjY2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29y
ZGVyQ29yZVRleHQuY3BwCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3Rh
dGUKICAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCByZWN0LnNpemUuaGVpZ2h0ICsgMiAqIHJlY3Qu
b3JpZ2luLnkpOwogICAgIG1fb3duZXIuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAKLSAgICBh
dXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKKyAgICBhdXRvIGltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZTo6Y3JlYXRlKGNnSW1hZ2UpKTsKICAg
ICBtX293bmVyLmFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd0ltYWdlOjpjcmVhdGUoaW1h
Z2UsIHJlY3QsIHt7IH0sIGltYWdlLT5zaXplKCl9LCB7IEltYWdlT3JpZW50YXRpb246Ok9yaWdp
blRvcExlZnQgfSkpOwogCiAgICAgLy8gVW5kbyB0aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUg
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDdj
NzYyZTFhNjE5N2Q2YzhiOGM0NWZhOWNmZGMwNWEwM2RlZTUxYi4uMTIwNTYyMjhhOTcwYTc3OWM4
MzY2ZjkzOTIxZTk2ZDJjMzU4ZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJ
dGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZl
cj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAg
cmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3du
Y2FzdDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC04NTksOSArODYxLDkgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFn
ZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZl
SW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2UpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9p
bWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAg
ICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKQEAgLTg3MSwxMiArODczLDQwIEBAIERyYXdOYXRpdmVJ
bWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpCiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVm
YXVsdDsKIAotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VT
aXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIC8vIFNo
b3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25z
dCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisg
ICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNl
LXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworRHJhd1BsYXRm
b3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSkKKyAg
ICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAg
ICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjp+RHJhd1Bs
YXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdQbGF0
Zm9ybUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNS
ZWN0LCBtX29wdGlvbnMpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRHJhd1BsYXRmb3JtSW1hZ2UmIGl0ZW0pCiB7CiAgICAgdHMgPDwg
c3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKICAgICAvLyBGSVhNRTogZHVt
cCBtb3JlIHN0dWZmLgpAQCAtMTY3Nyw2ICsxNzA3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQt
aW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8
ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6IHRzIDw8ICJkcmF3LXBsYXRmb3JtLWltYWdlIjsgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4i
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsg
YnJlYWs7CkBAIC0xODAwLDYgKzE4MzEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6Cisg
ICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVtKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDE1YmU1ZTg2NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2NzY5
NGZlOGUzLi43YjdlOWEwZTcwZGVjNzJmODI5MzMzNGM0YjlkNTZhNGQzMmYwMjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3MDEsMjcgKzE3MDEsMzAgQEAgT3B0aW9u
YWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdl
PiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykp
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgp
OwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9
CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9
CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAg
IEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1Jl
Y3Q7CkBAIC0xNzMxLDcgKzE3MzQsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29k
ZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0x
NzQxLDcgKzE3NDQsNzcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3
TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOworICAgIGRlY29kZXIgPj4gaW1hZ2VT
aXplOworICAgIGlmICghaW1hZ2VTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgZGVjb2RlciA+
PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgaWYgKCFkZXN0aW5hdGlvblJlY3QpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7Cisg
ICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRp
b25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVh
dGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9u
UmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKK30KKworY2xhc3MgRHJhd1BsYXRmb3JtSW1hZ2Ug
OiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHJhd1BsYXRm
b3JtSW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCk7CisKKyAgICBGbG9hdFJl
Y3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRl
c3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGxhdGZv
cm1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBP
UlQgRHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1f
aW1hZ2U7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIG1fb3B0aW9uczsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERy
YXdQbGF0Zm9ybUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKKyAgICBlbmNv
ZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAg
IGVuY29kZXIgPDwgbV9vcHRpb25zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtSW1hZ2VQdHI+IGltYWdl
OwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTE3NjYsNyArMTgzOSw3IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0
aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVy
biBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlv
blJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdQbGF0Zm9ybUltYWdl
OjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwg
Km9wdGlvbnMpOwogfQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CkBAIC0zMzMyLDYgKzM0MDUsOSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5j
b2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1hZ2U+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUzLDYgKzM2Mjks
MTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9y
bUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29k
ZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUo
ZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM3MjcsNiArMzgwNyw3IEBAIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQbGF0Zm9ybUltYWdlKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzc5OCw2ICszODc5LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxl
ZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZDE0MmMzNzc5Y2I5OTNlNzM3MmJiOGI4ODg3ZmNjNGM3NTJm
ZTk4OS4uNDBmY2FhYWE0NTM2ZmI1MDU1ZjM5NDI0NWZkMDZjYjljZDlmYzUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk0LDkgKzE5NCwxOCBAQCBi
b29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29y
ZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jv
b2wgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1vdGVOYXRpdmVJbWFnZShpbWFnZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCAzMWM4Yzg5NjM3OGMwY2FmYmIyMTEyODk1OTdjZWUyOGI0ZmE3NWQyLi5iODg5NTZhOTliMmI5
OTVjYzgzMDcwYmE5MzdiNzE2NzQ2ODg0NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29u
c3QgSXRlbSYpIHsgfTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW0oY29uc3Qg
SXRlbSYpIHsgfTsKICAgICB9OwpAQCAtMTA4LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0lt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRjOTk0YjczMWZhODk1NGVmODgwM2FkYzI4ZjRm
MjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYyYjdkNTdhOTE2NTE0ZTYwZjk4OTZkN2Q2ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00NiwxMSArNDYsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3Ry
ZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAgfQog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAorICAgIFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUlt
YWdlKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCktPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAgdm9pZCBkcm9wSW1hZ2UoKSB7IG1faW1hZ2UgPSBu
dWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbAog
ICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
K1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDZlMmVhMDc5N2Jk
M2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlhN2QuLjU4NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5MjBl
NTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAg
LTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGluZGV4IDw9IG1fc2FtcGxl
RGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZp
bmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBm
aW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjczZjVlNjc5MjE4Li5m
MWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzIxNSw3ICszMjE1LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3Bp
ZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCks
IHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4
IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjBhYjJjNmM5MTRiZmUz
Y2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBV
U0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0s
IEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJy
aWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25J
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpp
bmRleCA4MTM2YzFmZmY0NWI5YTMxNzdhOTY4YmI2ZjYyYjJkZjg5MDdkYTU1Li5jMjQ3OTVmNTA5
YTMzNmVmMGQ3YjE3MWQyNjY0NDZjYWFlZjIxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK0ljb246Okljb24oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiAgICAgOiBt
X2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIFJlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8p
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29u
Rm9ySW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK1JlZlB0cjxJY29u
PiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2Up
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJ
bWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd1Bs
YXRmb3JtSW1hZ2UobV9jZ0ltYWdlLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpp
bmRleCA2OTA4ZjEwNzYzMmU4OTAxOGNhOTBlOTkwZjM0NDg3N2I5NGI2ZmI5Li45YmI1MDI4OTBj
Njk4OGYzN2ViZGRiOTIzNTIxM2M1YjRmZTUyYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC03NCw3ICs3NCw3IEBAIFJlZjxJ
bWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gQml0
bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+
JiBuYXRpdmVJbWFnZXMpCitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJl
cHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYgbmF0aXZlSW1h
Z2VzKQogewogICAgIC8vIElmIG5hdGl2ZUltYWdlcy5zaXplKCkgaXMgemVybywgd2Uga25vdyBm
b3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8gRXZl
biB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2ls
bCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKQEAgLTg5LDcgKzg5LDcgQEAg
UmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25z
dCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBDR0lt
YWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0
KCksIDApOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5n
ZXQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgMCk7CiAKICAgICBDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIGRh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCmluZGV4IGEyYzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUu
LjBkNWQyMTQ0NjI1Mzg4NDVkYjgyZTlhZGM4NWY5ZGQ3NGE5N2Q2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01
NTUsMjUgKzU1NSwzMSBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KQogewotICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlv
biwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9h
dFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7
Ci0gICAgICAgIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBG
SVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBzdHJ1Y3QgRHJhd1BsYXRmb3JtSW1hZ2UgZmluYWwgOiBQ
YWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90Piwg
RmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86
OlNoYWRvd1N0YXRlPiB7CisgICAgICAgIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBk
ZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYg
cmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8
MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBh
cmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFy
Zzw1PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykg
b3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3TmF0
aXZlSW1hZ2U8PlxuIjsKKyAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd1BsYXRmb3Jt
SW1hZ2U8PlxuIjsKICAgICAgICAgfQogICAgIH07CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VT
aXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAg
YXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxE
cmF3UGxhdGZvcm1JbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUo
c3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtNTk0LDcgKzYwMCw3IEBAIHZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXpl
KGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIG9wdGlvbnMpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+
KFdURk1vdmUoc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpKSwgSW50U2l6ZShpbWFnZS5zaXplKCkp
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC0xMDc5LDcgKzEwODUsNyBAQCB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBz
dXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PihzdXJmYWNlLmdldCgpKSwgZGVzdFJlY3QpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSksIGRlc3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCAzODA5
M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhLi5kODg0YTFmMmM3OTVhNzczY2U3
ZmFkYmQ3NGQ5MDA1YzI1MzI3N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdl
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJD
b3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShX
ZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0
MjQxODBjOGFiNWQwYzkuLmE2MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFy
Z2V0UmVjdCwgY28KIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIGF1dG8gZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFn
ZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0g
ZnJhbWVJbWFnZS5nZXQoKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7
CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZh
Y2UpOwogI2VsaWYgVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKaW5kZXggMmFiZjQzODJkMzAwZjRlMWQzMzIxOTMxZWE5OWRhNDQ0ZmExZTM4
Zi4uMGRkZmE5NjRhMWViMGJlYzVjNjNmYmQ5MGYxYTEyNThlNTE5YjQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxH
cmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3Rvcnkq
IGZhY3RvcnksIEdyYXBoaWNzCiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYg
Y2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1f
Y29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2Vz
KQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgo
MCkKQEAgLTI5NCwyNiArMjkzLDI2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAg
ICAgICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBj
aGFuZ2VkLgotICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBw
b2ludGVyIGVxdWFsaXR5IG9uIGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVs
bCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRo
ZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIg
aXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAg
Ly8gVGhpcyBhc3N1bXB0aW9uIGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5h
dGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1
dG8gbmV3TmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
KyAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAobmV3TmF0aXZlSW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIp
CisgICAgICAgIGlmIChuZXdOYXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0
ciA9IG5ld05hdGl2ZUltYWdlUHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9
IG5ld05hdGl2ZUltYWdlOwogICAgICAgICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAg
ICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZSgpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdl
KGltYWdlKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUo
cGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1f
Y29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1h
Z2UgPSBudWxscHRyOwogICAgIH0KIAotICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1f
Y29tcG9zaXRlZEltYWdlLmdldCgpLCBDb250ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOworICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fY29tcG9zaXRlZEltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpJbWFnZSk7CiAgICAgbm90aWZ5Q2hh
bmdlKENvbnRlbnRDaGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFn
ZShpbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4
IDNiM2E0ODMzMDE1YzVjNzljZDZlNmM5MzBlMmI1NzdmNDE0ZjQxNTQuLjUwZjNjYWYxMjhiNjY5
NDZkOThlNTMyMWY0Nzg2YTk4MWJhZDUzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckxheWVy
PiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2Jh
Y2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1MmM1ZGIw
Nzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3ZjkxMDFhYjA5
NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUs
IEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxz
ZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAsIG1fY29v
cmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBt
X2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5nVGlsZUNy
ZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01ODUsMTIg
KzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDog
bnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRy
OworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3Np
dGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5hdGl2
ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2U7CiAK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIG5vdGlm
eUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAg
ICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1
ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0
byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAgICAgICAg
IEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0gKm1fY29t
cG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ci5n
ZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBvYmplY3QgaWYgdGhl
IHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5pbWFnZUJh
Y2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVjZTEzZTQx
Li45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMjMs
NyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAgUmVmUHRy
PEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgUnVu
TG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5kaW5nVGls
ZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1N2Jh
ODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4xNzgwNzI5Mzg4NDY1Yzk2ZTgw
OTA2M2EzOGVhYmE0YmUxNDM3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAK
QEAgLTIwNywxMSArMjA3LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZv
cm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IENP
TVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBjNTNkOGJmODVjMDk5Mzg4MjkyNDhm
ODJkZGQ5MWM5ZGUzM2MwNzgzLi5hNTZhM2I0MTlkNWVkNGM0M2U0ZjZmMWJhOGFjYTU2MDM2NGMw
YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtMjgzLDcg
KzI4MywxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpk
cmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5wbGF0Zm9ybUlt
YWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZv
cm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1ZWIzNzBiNzViYWRlMDM5ZDZmOTQ4
NzJhZWFmNGNmMWU1ZTUzY2MuLjVmOTBmZjFmMWI5ZjAyYmIzMTdiMTYzZGY3MzYxM2MyNmZiNWRh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcxLDcgKzcxLDEw
IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIElt
YWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBi
b29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0
Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIyZTY5N2I2NGU4MWM1
Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGJpdG1h
cDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZiaXRtYXApOwog
ICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsNyArOTAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOwogfQog
Ci1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRyJiYgYml0
bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUltYWdlUHRy
JiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRmb3JtQ29u
dGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdl
dD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKQEAg
LTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAKICAgICB9CiAKLSAg
ICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShp
bWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZO
ZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRt
YXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRhcmdldCog
Yml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykK
IHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNpemUoaW1h
Z2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBS
ZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
cHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsK
KyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAg
ICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
IGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
Yml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25T
Y2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAgUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
cmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0
LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgp
LCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVy
VGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29t
cGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogewogICAgIGxv
YWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3ZGMyNjEuLjFkNTc0
YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgp
IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRl
OwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2Jp
dG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0Njkw
ZmNjMjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2
ZTFlOTFlNjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcg
QEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRl
clRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAg
ICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3
ZTAuLmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxs
b3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUz
MDkxODNmY2FmOGE0OGM5Zi4uZWFjN2NiZTYxN2I5YjdmOTVhYWY2N2NhYjk1OTk2OWM5ZDljYTBm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2
ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtNTAsNjAgKzUwLDM2IEBAIHN0YXRpYyBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKICAgICByZXR1cm4gaW1hZ2luZ0Zh
Y3Rvcnk7CiB9CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBVSU5UIHdpZHRoID0gMDsKLSAgICBVSU5UIGhlaWdo
dCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVy
biBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBwbGF0
Zm9ybUltYWdlLT5HZXRQaXhlbFNpemUoKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJ
bWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1h
Z2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlKQorICAgIGlmICghbV9wbGF0
Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEMkQxX1BJWEVMX0ZPUk1B
VCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOworICAgIEQyRDFfUElYRUxf
Rk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwog
ICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9S
RTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2Up
ICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9
IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
LXsKLSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
OwotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29y
ZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0
byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0g
c3JjUmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAg
ICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1Np
emUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBz
dGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpw
bGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRv
d1N0YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdl
cygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogI2lmIENBQ0hFX1NVQklNQUdFUwotICAg
IGlmIChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0
KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRo
VGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCi0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjljYWU4Zjk3
ODE1MTA0MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3MGI1MWY1
ZWY1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcg
QEAgU2Vjb25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3Jt
SW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsK
ICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1oZWlnaHQg
aW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBl
bXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CmluZGV4IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4MzIyMmVj
M2JiMzg1NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29s
b3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBiODM1
YTY5Y2JjNDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQzMTY4YTY1
MjFiNjljNTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdT
dG9yZUNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAgbV9waXhl
bHMtPnJlZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJl
ZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0MGViZTc2
YWYwMzFmYTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcwNjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzksMTEgKzIz
OSwxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAg
ICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkp
LCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAotICAgICAg
ICBbXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICBb
XShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAgICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAgICAgcmV0
dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7CiAgICAg
ICAgIH0KICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1l
LCBzaXplKCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAgICAgICAg
W3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxN
ZWRpYVNhbXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Np
b24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2Ft
cGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAg
ICAgICAgIH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApp
bmRleCBmZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZiMjQ0YTQ4
NDkzZDJhNWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVjsKIAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBl
ID0gV1RGOjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElPU3VyZmFj
ZVJlZj4+OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmVmUHRy
PE5hdGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNzIENhcHR1
cmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExvZ2dlckhl
bHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDNmNmNi
NmVkNWRmYTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLjRiZjhkOGY1NTVjN2MwMWU3NmNi
ZjA1NGI3NzM1NmE1YmY4NGFiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWMubW0KQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0
KCkpOwogCiAgICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2FtcGxlQnVm
ZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZm
ZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCks
IHNhbXBsZVJvdGF0aW9uKCkpOworICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5z
ZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwg
c2FtcGxlUm90YXRpb24oKSk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDQ5
MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjEyMzhmZDlmZjNhODA0MTQz
ZTcyZjIwNTgzYjVkNGU5YTJhMmM1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KQEAgLTE2ODMsNyArMTY4Myw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0
YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5m
byYKICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZv
LnRodW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBp
Y29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKE5hdGl2ZUltYWdlOjpjcmVhdGUoW2luZm8u
aWNvbiBDR0ltYWdlXSkpOwogICAgIAogICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2Us
IGluZm8uaWNvblJlY3QpOwogfQpAQCAtMTg0MCw3ICsxODQwLDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBQYWludElu
Zm8mIHBhaW4KICAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3Qud2lk
dGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0LCBiYWRnZURp
bWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogICAgIENHUmVjdCBiYWRnZVJlY3QgPSBDR1JlY3RN
YWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAKLSAgICBDSUltYWdl
ICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFn
ZSgpLmdldCgpXTsKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRo
Q0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogCiAg
ICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQgZm9yIHRoZSBjbGlwcGluZyBwYXRoIGlu
IHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBzaGFkb3cuCiAgICAgUmV0YWluUHRyPENH
UGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRlZFJlY3QoYWJz
b2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8gMiwgYmFkZ2VEaW1lbnNpb24gLyAyLCBu
dWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5k
ZXggNGQyMGQxNzY3OGE3ZTIwZDdiNzUyNDdkNWVlYWQ2N2E0OWNkZmUwYi4uZDJjMTY1ZDQ5YTYy
OTM0YWU5ZTVhOGEyZjRmYjc0MDc5ZmNhMmE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjcyMCw3ICsyNzIwLDcgQEAgc3RhdGljIHN0ZDo6cGFp
cjxSZWZQdHI8SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVySW1hZ2Uo
ZmxvYXQgZGUKICAgICAgICAgTlNJbWFnZUhpbnRTeW1ib2xGb250IDogW05TRm9udCBzeXN0ZW1G
b250T2ZTaXplOjMyXSwKICAgICAgICAgTlNJbWFnZUhpbnRTeW1ib2xTY2FsZSA6IEAoTlNJbWFn
ZVN5bWJvbFNjYWxlTWVkaXVtKQogICAgIH1dOwotICAgIHJldHVybiB7IEJpdG1hcEltYWdlOjpj
cmVhdGUoY2dJbWFnZSksIGRldmljZVNjYWxlRmFjdG9yIH07CisgICAgcmV0dXJuIHsgQml0bWFw
SW1hZ2U6OmNyZWF0ZShOYXRpdmVJbWFnZTo6Y3JlYXRlKGNnSW1hZ2UpKSwgZGV2aWNlU2NhbGVG
YWN0b3IgfTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxheW91dCk7CiAgICAgaWYgKGRldmlj
ZVNjYWxlRmFjdG9yID49IDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCA2M2VkZjEyZTIxMzMzMGRmMmRhY2I5NjU0MDI1NjUzMTYzYjQwYmMxLi5iMDYwZDcy
ODI5Y2I3MWQzMGI2YmYyODVhMzNiYjc4ZWNhNzlhOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBJbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUg
bmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBh
c3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2
ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyArMjI5LDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJUKHRhcmdldENvbnRleHQpOwogICAgIGlm
ICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNlYmNiYTRmN2E4ODdiYWM1OWU4ZDI4Li4y
ODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUwMDU0NDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7
CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSogaW50ZXJuYWxQYWdlKCkgeyByZXR1cm4g
bV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVmYzMxZTQ3ZDAyMTUxZDY5MGM1Y2Q2NWY1
ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRiOWNiNzM3OGQyN2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBt
X2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUs
IG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGU2
NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJiMzRhNWMuLjAxYjJmMWJhZmE5NTA1M2M1
OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlRm9yQ29udGFp
bmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDk5MTExYTc4OTBiNTc4NWY0ZTEw
NjJkNjg4MjA2NTQ3ZDUyNTAzYmQuLjExYmY4ZmUyZWY0MDhiYWU5MTZkNGZlMDZhN2Y0M2Q1OTlk
ZGRiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE3
LDcgKzIxNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6
CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJywKKyAgICAgICAgJ1dlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHInLAogICAgICAg
ICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4NTVj
OGJjNTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uZTU3MTNlMzAxZjYwMjZiY2I2ZGI2MjFmNGVmNGI3
ZTEwZjY1MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJ
bWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdl
KENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6
ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDMzNzk1OTZiZTY5ZDkyNGFlMGNhNmQ4ZjlmMWZmYjAxYjIwYzNkNmMuLjVlZTkzMzU1ZDcz
NmE1ZWRhMDFlY2U0YjRjYzU1YjI4Y2MwODA5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCwxNiArMTEwMCwxNiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1h
Z2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBl
bmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybUltYWdlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgYXV0byBpbWFn
ZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIGF1dG8gaW1hZ2VTaXplID0gTmF0
aXZlSW1hZ2U6OnNpemUocGxhdGZvcm1JbWFnZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGVuY29k
ZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZv
cm1JbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3Qo
eyB9LCBpbWFnZVNpemUpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpAQCAtMTExNyw3ICsxMTE3LDcgQEAg
c3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVBsYXRmb3JtSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFn
ZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFw
aGljc0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CkBA
IC0xMTM2LDI1ICsxMTM2LDI1IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgIHBsYXRmb3JtSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOworICAgIGlmICghcGxhdGZv
cm1JbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxQ
bGF0Zm9ybUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBs
YXRmb3JtSW1hZ2UpCiB7Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7CisgICAgYm9vbCBo
YXNJbWFnZSA9ICEhcGxhdGZvcm1JbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwogCiAg
ICAgaWYgKGhhc0ltYWdlKQotICAgICAgICBlbmNvZGVOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFn
ZSk7CisgICAgICAgIGVuY29kZVBsYXRmb3JtSW1hZ2UoZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2
ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoRGVjb2Rl
ciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBpbWFn
ZSA9IG51bGxwdHI7CisgICAgcGxhdGZvcm1JbWFnZSA9IG51bGxwdHI7CiAKICAgICBib29sIGhh
c0ltYWdlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQpAQCAtMTE2MywxNyAr
MTE2MywxNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxO
YXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIGlmICghaGFzSW1hZ2UpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRlY29kZU5hdGl2ZUltYWdlKGRlY29k
ZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1JbWFnZShkZWNvZGVyLCBwbGF0
Zm9ybUltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQg
QXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgZW5jb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CisgICAgZW5jb2RlT3B0aW9uYWxQbGF0
Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1ib29sIEFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQorYm9vbCBBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAg
ICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CisgICAg
cmV0dXJuIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShkZWNvZGVyLCBwbGF0Zm9ybUltYWdl
KTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiY2EwMjQwYjZkYTk0ZjgzNTg1
YmFmMTljYjQ5NmIwOWI5MmI4ZTMuLmY5MWNiOTEyYTI5NDJmZGNiMGQ1OTY3MmM0NzhiYzRmOGJi
OTY3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rp
b25PcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRN
ZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTQxOSw5ICs0MTksOSBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Ci0gICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHImKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXgg
OTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4uYmUyMDcwNTczODRlYTg1
NDI5YTZkOGE5NzAwOTgwZjVjMDI4MjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIFJlZlB0cjxJbWFnZT4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRl
KE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1ODg2N2ViMmEwZmM0ZWM4NTdmMzQ3NWE0
ZTgyNWEzNWMuLmU2MzAwOTQ4YWE4OGQ3MWI1Mzc3ZTRhYzEwN2M5MDY4NTk5OTA3YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApA
QCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQ
YWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiAgICAgfSk7CiB9CiAK
LXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJ
Y29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFs
bG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0
YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRl
ZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRlZEljb25zLmNvbnRhaW5z
KGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRhID0gdGhpcy0+aWNvbkRh
dGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2xvYWRlZEljb25zLnNl
dChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4o
bnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGlj
b25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4sIE1vbm90b25pY1RpbWU+
KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0g
QWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0
YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjps
b2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3Jp
dGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3Bh
aXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6
Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0
KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4sIE1vbm90b25pY1Rp
bWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CiAgICAgICAgICAgICBpZiAoIWlj
b25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0
YXR1czo6U2l6ZUF2YWlsYWJsZSkgewpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewogICAgICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKLSAgICAgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtl
X3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAg
ICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6
Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7
IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0YVNpemUpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChp
bWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXpl
KSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggOTYxMmY5OWMy
Y2ZiN2M1MTM2NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uNWM3NjkwMTdmOWU0ZGUxODc2Y2Q0YWY1
ZTE3Y2NkMWNjMWFkNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJh
c2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7Ci0gICAgdm9p
ZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiYpPiYmKTsKKyAg
ICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNlV3Jp
dGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYm
KT4mJik7CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VX
cml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gbV9wYWdlVVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9wYWdlVVJMVG9JY29uVVJM
TWFwTG9jazsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyLCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjpwYWlyPFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4sIE1vbm90b25pY1RpbWU+
PiBtX2xvYWRlZEljb25zOwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xvY2s7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ljb25JREZvckljb25VUkxT
dGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBhZGZmYTYyZTQ3N2I3ODM5
MzYzYzI1ZTk4MDI5Li4zYmNjOGY2NjY3ODBkZDZjNTBkZmQ5YmEwOWU4Y2IxMmRiNzQ1OTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUubW0KQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1h
Z2U+IHVpSW1hZ2VGb3JJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgIW5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0
TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAg
IHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkVXNl
RHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3Rh
dGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGRkODljMGYwYWZhODJiMTMwZDUyNDJlZDFj
OTlkNmUyYmJmNTU4ODkuLjMwZjk5NGM2ZmVlOGVkMmNmZGUzMDk2ZGFjM2U1MDU1MTEzZjBkMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUwMywxMyArNzUwMywxMyBAQCBzdGF0aWMgTlNBcnJheTxO
U0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQg
PFVJRHJvcAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlID0gc25hcHNob3RXaXRob3V0U2VsZWN0aW9uLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICgh
dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpCisgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFn
ZSB8fCAhdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2Uu
Z2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0
RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3Rl
ZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91
bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBp
bml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwog
ICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3MzIs
MTEgKzc3MzIsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAo
IWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgIW5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKV0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggY3Jl
YXRlVGFyZ2V0ZWREcmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuCkBAIC03
OTkxLDEzICs3OTkxLDEzIEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNP
ZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgIH0KIAog
ICAgICAgICBhdXRvIHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2Vs
ZWN0aW9uLT5uYXRpdmVJbWFnZSgpOwotICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlKSB7CisgICAgICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgfHwgIXVuc2VsZWN0
ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBj
b3VsZCBub3QgZGVjb2RlIHVuc2VsZWN0ZWQgY29udGVudCBpbWFnZS4iKTsKICAgICAgICAgICAg
IHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1h
Z2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsK
KyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5T
KFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmlj
ZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICAg
ICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRX
aXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAg
ICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVj
dGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBh
ZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07CkBAIC0xMDA0MSw3ICsxMDA0MSwxMiBAQCBz
dGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKFVJVmll
d0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24u
bGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1
dG9yZWxlYXNlXTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYg
KCFuYXRpdmVJbWFnZSB8fCAhbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRX
aXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNv
bnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4
YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4N2QyMTYuLmFjZWYwMDc5MzNlMmYyY2QwZTY3YjI0
MmVmMDEwNWEyYjE0M2I0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDEwICs5NiwxMCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUp
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0
bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZSht
X2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHJl
dHVybiBudWxscHRyOwogI2VsaWYgVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlm
MWI3YmEzM2JiOTU1Ny4uOWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVD
b3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9y
ZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2Ri
YjQ1NTU4NjdlZDU4My4uNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4
M2RhOGZiMDA4YTEzNWIyMTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5
NWY1ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSBmaW5hbDsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBm
aW5hbDsKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5
NDJmOGVjZDY1MTg3Y2Q0MjgzODEuLjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5
ODE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2Fk
KFdlYkZyYW1lKiB3ZWJGcmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiBzdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkK
IHsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOwor
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKTsKICAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2Up
ID09IDgpOwogCiAgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJ
bmZvKGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3
YTViMTY2NzRiZjE0YWMwMTIwYzM1ZmRmM2FkZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZl
ZGMyMjZmMjcyNzQ4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcg
KzUzNiw3IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAK
ICAgICBpZiAodGV4dEluZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKICAgICBpZiAoISpjZ0ltYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJD
YWNoZS5tbQppbmRleCBkODE3Njk5Njc1ZWNmYmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5m
ZDA5NmRkZjk1MGNiZmU4MTYzYjEzNjc1YWNkZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERl
ZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIgewogICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3Qo
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFp
czxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2Fz
dDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNh
Y2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJj
ZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQo
KTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0
aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiNjBlMzI2ZjEwYmY1Y2UzY2E2ZmEzZjQwYjFhYThl
MDk3OWQ0MjM3Li42M2U5NTJkN2UyYzE0ZWM5MTNjMTc5YTVhMmM2N2RlNzUzN2FkMGZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NDUsMTQgKzg0
NSwxNCBAQCBwcml2YXRlOgogICAgIF90ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVz
ID0gY3JlYXRlTlNBcnJheShpbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29v
cmRpbmF0ZXMpLmxlYWtSZWYoKTsKICAgICBfY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRh
LmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpCi0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGln
aGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgp
LmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJy
b3JlZF07CisgICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1h
Z2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVk
XTsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50
SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpz
Y2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50
SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsK
IAogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsK
ICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0
aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUlt
YWdlKSB7Ci0gICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6
OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgp
IHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAg
ICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAg
ICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412877</attachid>
            <date>2020-11-01 20:26:55 -0800</date>
            <delta_ts>2020-11-01 20:52:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101202653.patch</filename>
            <type>text/plain</type>
            <size>231780</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0YTUyY2YxYWIxNWNi
MjU0Y2Y1MzEyMzY5N2NjMWY2MzM3ZDFmZC4uMmQyM2IyZDQyNTRhYjEzMDUxMTdkMzFhYzkyYTY4
OGUwZmM5NTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTEwLTMxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ11bSW50ZWdyYXRpb25dIExpbmVJdGVyYXRvck1vZGVyblBhdGg6OnRvcC9ib3R0b20gbWFw
IHRvIExpbmU6OmVuY2xvc2luZ1JlY3Q6OnRvcC9ib3R0b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjI3ZDdiYmMw
MTljOTFkOTE5YzRlOGMwZWQ4ZGFjNzI1NDJjOThmNy4uZjdmOTEwNThkYWM0YTlmZjBjMzA2MmEz
YWJlZjg2NGVhNzA5MTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMC0xMS0wMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3
IGNsYXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZy
b21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6ZW5jb2RlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjplbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1h
Z2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjplbmNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29k
ZU5hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRp
dmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRy
Pjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZVB0cj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Oklj
b25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dWlJbWFnZUZvckltYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6
XSk6CisgICAgICAgICh1aUltYWdlRm9ySW1hZ2UpOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9oYW5kbGVEcm9wQnlJbnNlcnRpbmdJbWFnZVBsYWNlaG9sZGVyczpzZXNzaW9uOl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVt
Q29udHJvbGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6CisKIDIwMjAtMTAtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgQm94U2lkZSBhbmQgQm9yZGVyRWRnZSBjb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWY2ZjVjMDc1YmE5Zjk1NDk0YjQ0OTE5OWNmOGM4OTZj
ZDhiY2ZiNS4uOGE2N2Q4ZTIzYTMzZDkxNzNkN2JhZDFkYzEyZDViZTkxOGEwMjY1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xh
c3MgbmFtZWQgTmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBnZXRQcmV2aWV3
U25hcHNob3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgor
ICAgICAgICAoK1tXZWJDYWNoZSBpbWFnZUZvclVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlVJVGV4dEluZGljYXRvckRhdGEgaW5pdFdpdGhJbWFn
ZTp0ZXh0SW5kaWNhdG9yRGF0YTpzY2FsZTpdKToKKwogMjAyMC0xMC0yOCAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1Rlc3RpbmddIFJlbW92ZSByZXF1aXJlbWVu
dCBvZiBhZGRpbmcgbmV3IFNQSSBmb3IgZWFjaCBwcmVmZXJlbmNlIHRoYXQgbmVlZHMgdGVzdGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNDA2ZTA0ZTlmNTUwMTA1MGU4YmE3ZWYxMWFhNDFiMGJi
YmJlYzBjMy4uNzZhOWRjMWNkODg4ZTE3ZTgwODNjNzNiODAwMDZlNThjMzRhNTlmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCkBAIC0xMjA0LDcgKzEyMDQsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBA
IC0xMjEzLDYgKzEyMTIsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1J
bWFnZVB0ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDYzNzcxYjA0
MDU4N2E5NDg1ZjQ0NjA4ZjhjMTI4M2VmNzZjNjE1ZjkuLmY3YmUyNWE2MDA3NGI3YzQyYzNiMDg2
ZDU1ZGQ2MWFjMDMxNWQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTM5LDYgKzE5MzksNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxp
dGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2NmFmNTBkMjFlYzI3NzY0NmRjMTQ3ZTQ4Njg2NTJiYWMyNTA2NzJlLi45
NTVjMThhY2E4ZjQ2MmYyN2YxNjM3ZjA0ZDgxMmRlN2I0ZjI4NWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTU3LDcgKzIx
NTcsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAx
QTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAx
REM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcyNkQ1NkUy
MjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5h
dGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkQ1NkUxMjUz
QUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8q
IE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjdBN0YzQTI0MDc4Qjg0
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTkyMjYsNiArOTIyNiw3IEBACiAJCTU4MkRFMzIyMUMzMEM4NTQwMEJFMDJBOCAvKiBUZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGV4dERlY29yYXRpb25QYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTgyREUzMjMxQzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RGVjb3JhdGlvblBhaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg2OEM3QzQyNTM5REEzMzAwQkY5REYzIC8q
IEpTUmVzaXplT2JzZXJ2ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNSZXNpemVPYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU4NjhDN0Q1MjU0NkUwQjMwMEJGOURGMyAvKiBKU0ludGVyc2VjdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1ODg0RkU1NjIyODEzRTJEMDA0MEFGRjYgLyogSlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVzaXplT2JzZXJ2
ZXJFbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4OTU1NkVD
MThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJvcmRlckVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThB
RUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQm9yZGVyRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05OTM0LDYgKzk5MzUsNyBAQAogCQk3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0VYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRF
MURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MjM5NkIyNTRDQURD
MjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUlt
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTMyMjQxQkNFMjAw
ODMzOTc1IC8qIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyNjZGMDE0MjI0MUJGQjIwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNTIyNDFDMDk4MDA4MzM5NzUg
LyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTQ0LDcgKzk5NDYsNyBAQAogCQk3MjY2RjAyODIyNDMxMjAzMDA4MzM5NzUgLyogU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlv
bkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1
IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVk
UHJvcGVydHlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyNkQ1NkUxMjUz
QUUwNDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJ
bWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjZENTZFMTI1M0FFMDQz
MDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUlt
YWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQxMUEyRUE2QTAw
MDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFB
MkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFWFRzUkdCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEy
RUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRz
UkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDE2LDcgKzEwMDE4LDYg
QEAKIAkJNzdBMTdBQTMxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0FBRDY4MzFFQ0ZCNjYyMDBCRkEy
RDEgLyogQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc3QUFENjg1MUVDRkJEMzkwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTg2OEM3RDUyNTQ2RTBCMzAwQkY5REYzIC8qIEpTSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc3QzEzRjA0MjE2NTY1OEEwMDJEOUM1RiAvKiBKU0ludGVyc2VjdGlv
bk9ic2VydmVyRW50cnlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzdDQUFBRUYxRjJGQzM1MDAwQ0I1QzhEIC8qIFZpc3VhbFZpZXdwb3J0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBWaXN1YWxWaWV3cG9ydC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc3RDUwRkZBMUVENEVDNzgwMERBNEM4NyAvKiBDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM1OSw4ICsyNjM2MCw4IEBACiAJ
CQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkz
MTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAq
LywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNw
cCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywK
LQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJ
CQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMw
QjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5
OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2MzcxLDYgKzI2MzcyLDcgQEAK
IAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAogCQkJCTcyQkFD
M0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUw
NjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8s
CisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLywK
IAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJ
CUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2su
aCAqLywKQEAgLTMzMzgyLDcgKzMzMzg0LDYgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2
RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0Mw
MDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTcyNkQ1
NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBO
YXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjA4LDYgKzMzNjA5LDcgQEAK
IAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQ
bGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI2RDU2RTIy
NTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZv
cm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2NzE0ODc4OTk1N2Q4NS4u
NjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBIVE1M
VmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4g
cGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUo
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBh
NjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4yYzFlNWQ5OTcyYzFjODc2
Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMg
dG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wg
dG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3Jl
IGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYwMGUwYTJiYjA1NTUyMzk1
NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJmOTI1OTA1ZDFlMjZhZTIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYzNSw4IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsKIAogI2lmIFVTRShDRykK
LSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUo
dmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVj
dCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgRmxvYXRTaXplKHZpZGVv
LnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwog
ICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFmZTBlNmNlNzFkOGM5YzU4
YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1NGRmYmUxMDljNjBlM2Fk
MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cu
bW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0b3JXYW50c01hbnVhbEFu
aW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAKICAgICBGbG9hdFNpemUg
Y29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgp
LT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb250ZW50c0lt
YWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGUoKl90ZXh0SW5kaWNh
dG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1h
Z2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxzZQpAQCAtMjY2LDcgKzI2
Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91bmNl
QW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNB
bmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwg
ZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9u
IGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2
ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0
SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2JyaWRnZSBpZCljb250ZW50
c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZp
bGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29t
cGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3NzYyZTU1MzI3ODNmZGEx
Ny4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdl
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDog
SW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJjZTo6Y3JlYXRlKFdURk1v
dmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzZXRD
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29k
aQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
IHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsIHdhcyAlZCwg
cmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRl
eChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1w
CiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hl
SWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
dGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFu
c2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9u
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENv
bnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRh
cmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJl
c3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIGNvcnJlY3RlZFNpemVG
bG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VTaXpl
KTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoQ0cpCi1O
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHNpemVf
dCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwotICAg
ICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9PSBzaXplKQorICAgICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJu
IGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdy
YXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1WZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQorVmVjdG9yPFJlZlB0
cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQogewotICAg
IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3RvcjxSZWZQdHI8TmF0aXZl
SW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvIGlt
YWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQotICAgICAgICAgICAgaW1h
Z2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKFdURk1vdmUoaW1h
Z2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjExLDEwICsyMTEsMTAgQEAg
Ym9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBpbmxpbmUg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1h
Z2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50U2l6ZSBzdWJzYW1wbGVk
SW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCku
dXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNh
bXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCA9IG1f
YWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcihjb250ZXh0
LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsKICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVO
Q1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3
aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIGlm
IChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7
CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2N1cnJl
bnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5ICszMjIsOSBAQCBJbWFn
ZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24gPSBvcHRpb25zLm9yaWVu
dGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsgb3B0
aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3Vy
Y2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2Uo
KmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9y
aWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNGU3MzQ4
YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFmZjk5ZDI1OTQxOTg4MTZk
ZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFzcyBUaW1lcjsKIAogY2xh
c3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxCaXRtYXBJ
bWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFn
ZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVh
dGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRt
YXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsKICAgICB9CkBAIC0xMzUs
MjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBP
UlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51
bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKLSAgICBO
YXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBw
cmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVu
dGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAjaWYg
VVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgVmVj
dG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFJlZlB0cjxOYXRpdmVJ
bWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAgICB2b2lkIGltYWdlRnJh
bWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNvZGUoRnVuY3Rpb248dm9p
ZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShOYXRp
dmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9
IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOyB9Ci0g
ICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhD
YWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKIAogICAgIC8vIENh
bGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVl
LCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0
ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcgKzIwMiw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+Jik7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGNsZWFyVGltZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0MDZlNjFjOTE4ZmNlYTUw
Li45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9iYWNrZW5k
ID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAgICAgfQogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8
Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CkBAIC0x
NDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCi0gICAgTmF0aXZl
SW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAg
Zmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5ZGVkMGVlNzUxM2MxOGY5
NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2ZTMwMTE2ZmE1YjUzMDYz
MmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICht
X2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmIChtX2ltcGwgJiYgbV9pbXBs
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxhdGZvcm1EcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAg
IGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjljNzZmM2EuLjYxNDMzMDBj
ODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNzksNyArMzc5LDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9y
bUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsK
IAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7Ci0K
ICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4
dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQg
ZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4Mzdm
ZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgKQEAgLTU5LDggKzU5LDgg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsK
ICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlmZGUyNDhmODIzOGMzOWNl
Li40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
CkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1h
Z2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRhNzlhZGQ5ODg0MTM2ZDdk
Li41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJO
YXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9STShNQUMpCiBPQkpDX0NM
QVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRz
IGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVh
dGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+
Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1h
Z2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDRiOWJl
ZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIzN2Q2YzhlYzZmMDBmNGZl
YjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMu
aCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAgcHVibGljOgogCiAgICAg
ZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0
VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5h
dGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9v
bCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25z
dCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0
aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2
ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRhNjM0ZTlmNzgzODU5OGQw
ZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNiOTZiZjFmODE3MTVhYjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VCYWNraW5nU3RvcmUob3Ro
ZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0OworICAgIFBs
YXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFmZjAzODE5OTViNWRlNWJk
M2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2NTM5OWIwMDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBA
IC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFn
ZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lu
a0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2FlNzUxNzZhMjk5NDIzMmJk
YWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRmOGY4MDM3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsK
IAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9
IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBp
bWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJv
bSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAt
MSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCi0g
ICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0lu
dG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9u
OjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFs
IE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7CiAgICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBmMjUxZjY5ODNhMS4uZjFm
MzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAgICAgcmV0dXJuIGJhY2tl
bmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNp
bmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1NjdmMDg4M2I1YmQwMmUw
ZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2QxODZmYjY1Yzg0MDE2Mjdj
OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tl
bmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQ
cmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4ODVkNzA5YmQ5ODE3Li5l
NGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5k
ZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAppbmRleCA4M2I3OGI2
ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2MDI5NWNlMGM1YjlkYjE0
MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNpZ25lZCBJbWFnZUZyYW1l
OjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5
dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1fbmF0aXZlSW1hZ2UpOwor
ICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAgbV9uYXRpdmVJbWFnZSA9
IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGluZ09wdGlvbnMoKTsKIApA
QCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xv
cigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXpl
KDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJldHVybiBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAgICByZXR1cm4gbV9uYXRp
dmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1NGE5YzlkZjMzYjRkMzNi
MTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZhYzQyMWVjMzVjM2U2YzY3
MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXplKCkuYXJlYSgpICogc2l6
ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGluZ0xldmVsOyB9CiAK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
SW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsK
ICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmll
bnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIERlY29kaW5nU3RhdHVz
IG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCB9OwogICAgIEludFNp
emUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1
YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0IH07CiAgICAgRGVjb2Rp
bmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAyOGMzYzNiM2Y2MTZjNmEx
Mzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVkZmYzNTYxM2VjNDc0MzNm
NTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoQml0bWFw
SW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDbwogewogfQog
Ci1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkK
K0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1h
Z2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQogewogICAgIG1fZnJhbWVD
b3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Z3Jvd0ZyYW1l
cygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCit2b2lkIElt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1h
Z2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsKICAgICBJbWFnZUZyYW1l
JiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCiAgICAgZnJh
bWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogCiAgICAgZnJhbWUubV9k
ZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsKLSAgICBmcmFtZS5tX3Np
emUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7Ci0gICAgZnJhbWUubV9o
YXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRpdmVJbWFnZSk7CisgICAg
ZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgpOworICAgIGZyYW1lLm1f
aGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgpOwogfQogCiB2b2lkIElt
YWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCkBA
IC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4KIAogICAgIGlmIChmcmFt
ZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgIEFTU0VS
VChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUubV9zaXplID0gbmF0aXZl
SW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBmcmFtZS5tX3NpemUgPSBm
cmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLm1f
c2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRh
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgogICAgICAg
ICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRl
eCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2
ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlU291cmNlOjpjYWNoZVBs
YXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVz
KQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFt
ZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJ
bWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTW92ZSB0aGUgbmV3IGlt
YWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUo
V1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNvZGluZ09wdGlvbnMgPSBk
ZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQoZnJhbWUuZnJhbWVCeXRl
cygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
YyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09w
dGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZVNvdXJjZTo6
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9y
bUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRl
Y29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpegogICAg
IEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAvLyBDbGVhbiB0aGUgb2xk
IG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hlTmF0aXZlSW1hZ2VBdElu
ZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2Rp
bmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRl
eChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2Rp
bmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNl
OjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNhY2hlZF0iLCBfX0ZVTkNU
SU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4KTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGluZXNzIG9mIHRoZSBuZXcg
ZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6
c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHN0YXJ0aW5nVGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZyYW1lIE5h
dGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAgICAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZy
YW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAgaWYgKG5hdGl2ZUltYWdl
KQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vi
c2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7CisgICAgICAgICAg
ICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VT
b3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4gZGVjb2RlZF0iLCBf
X0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgp
LCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZGVjb2Rpbmcg
Zm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5w
dHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CkBAIC0z
NzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1
ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJhdGlvbiAtIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAgICAgICAvLyBVcGRhdGUg
dGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0byBhdm9pZCB1cGRhdGlu
ZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCi0gICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBw
cm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5h
dGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0
ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwu
aXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBm
cmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBt
YXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdl
LCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29k
aW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2Rl
Y29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3RlZFRoaXMtPm1fZnJh
bWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAgICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1vdmVGaXJzdCgpOwotICAg
ICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFz
eW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVz
dC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJl
cXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwg
ZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVS
ZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIklt
YWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdpbGwgbm90IGNhY2hlZF0i
LCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0
YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7CkBAIC00NTQsOSArNDU0
LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZO
ZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYgKGZyYW1lLmhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGltYWdlIGRlY29kaW5nIGlu
IHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBtX2RlY29k
ZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUp
OworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwogICAgICAgICAvLyBDbGVh
biB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4KLSAgICAgICAgY2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1wbGlu
Z0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7
CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdl
KSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC02OTcsMTkg
KzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291
cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNvZGVyQXZhaWxhYmxlKCkg
PyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9kZWNvZGVy
LT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxOYXRpdmVJ
bWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKKyAgICByZXR1cm4g
ZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhD
YWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJ
bWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1
YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZO
ZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1h
Z2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlLCBzdWJz
YW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYwMWQuLmE2ZjRhYjEzZGVl
ZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGltYWdlLCBhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVm
PEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKKyAgICBz
dGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2
ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
V1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCBwdWJs
aWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4dChjb25zdCBH
cmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRlOgogICAgIEltYWdlU291
cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGll
ZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgSW1h
Z2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAgICAgVCBtZXRhZGF0YShj
b25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIp
OwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY29kZWRTaXplUmVz
ZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFu
Z2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+
JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNv
ZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFz
eW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUlt
YWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZv
cm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFnZUZyYW1lUmVxdWVzdDsK
ICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdhYWExZWZiM2E1ZTM1
MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3
NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1l
ZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDMzYzFkY2E4ODI0
MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3MDdjODU1Njk2NGE1MzZl
OWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1z
OjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAzOGIwYjkxLi43ZTkwY2Rk
ZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTYxLDcg
KzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChj
LCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwg
R0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lODhlMTRlNGRkODQwZDE4ZjcwZTE5YjI2MzMzOWVkOWRiYjU0ZDc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFn
ZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZl
SW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRpdmVJbWFnZTo6TmF0aXZl
SW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisgICAgOiBtX3BsYXRmb3Jt
SW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworTmF0aXZlSW1hZ2U6On5OYXRp
dmVJbWFnZSgpCit7CisgICAgaWYgKG1fb2JzZXJ2ZXIgJiYgbV9wbGF0Zm9ybUltYWdlKQorICAg
ICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCAwMzM0NzU5NjA3
ZjhmMjBkZTMxMjQ4NTlhNmYwZjA5NDUxZTE4ZTViLi4zMjc0ODI0NTZlOWMzNTA1MWQ2ODUzNmY0
NTMyYTIwZWIyMGVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKQEAgLTI3LDE2ICsyNyw0OSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtSW1hZ2VQdHIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaCIgICAgCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CiAKLVdFQkNPUkVfRVhQT1JUIElu
dFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci1ib29sIG5hdGl2
ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLUNvbG9yIG5hdGl2ZUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci12b2lkIGNsZWFy
TmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKK2NsYXNzIE5hdGl2
ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKK3B1YmxpYzoKKyAgICBj
bGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigp
ID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVsZXRl
ZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CiAKLX0KKyAgICBzdGF0aWMgV0VCQ09S
RV9FWFBPUlQgUmVmPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQ
dHImKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOworCisgICAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2U7IH0KKyAgICBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAg
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1JbWFnZTsgfQorCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6
ZShtX3BsYXRmb3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgIENv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworCisgICAgdm9pZCBzZXRPYnNlcnZl
cihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CisgICAgdm9p
ZCBjbGVhclN1YmltYWdlcygpOworICAgIAorcHJpdmF0ZToKKyAgICBOYXRpdmVJbWFnZShQbGF0
Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX3BsYXRmb3JtSW1hZ2U7
CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07CisgICAgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHsgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDEx
MTc0ZjE5Zjc1MTQwNzFkMDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0lt
YWdlUmVmOwotI2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxp
ZiBVU0UoV0lOR0RJKQotI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8
SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkp
Ci10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1h
Z2VQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJkMDdmOTQ0ZTllMzk4ZmNmNTI0ZmExOWVmMDQ1OTExMDEz
ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFn
ZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYg
VVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmV0
YWluUHRyPENHSW1hZ2VSZWY+OworI2VsaWYgVVNFKERJUkVDVDJEKQordXNpbmcgUGxhdGZvcm1J
bWFnZVB0ciA9IENPTVB0cjxJRDJEMUJpdG1hcD47CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQ
bGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD47CisjZWxpZiBVU0UoV0lO
R0RJKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxTaGFyZWRCaXRtYXA+OworI2Vu
ZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Zp
ZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oCmluZGV4IDFiMDdmODZmMzkzMTc4ZjRjZjdmZTgzYTgxNDc4MDg0ZWJm
MjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIu
aApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFn
ZVB0cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMuaAppbmRleCA4YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5MTU0ZDk3Yjcy
MmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgxNjY0YTI0MTk0OTNlOTViYTUzNzg3ZWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90
KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZp
bmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBm
aW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5MTZmOTBhYmQwNzUzYTExNTU2YWM1MTJiNy4uOGNkZmM3
MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRkMGQzNDg0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC01NjcsNyArNTY3LDcgQEAgdW5zaWdu
ZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHMKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBs
ZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDZhNmZkNzE4M2Fl
ODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5YzFlYTYuLjI2YjNkNzhmZTFiMGNlNmQ0NzZkMmE1ZTcz
ODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI1Miw3ICsyNTIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB2
aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091
dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0
Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAgICBib29sIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsK
ICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVn
YXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlk
ZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZjI5NDg4MTZlZGRlNzllNzhhMTkzMWQ1YmM2ZDNlY2Vl
YjVkODQ3Zi4uM2FiYmE5MmU1MDlhMjE0MDQ5ZDUwNDE2ZDY1MjQwMWM0NjE4Nzk5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBQbGF0Zm9ybUxheWVyKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpV
cGRhdGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFu
YWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UgPyBtX2xh
c3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5MYXllcigpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICB1cGRhdGVM
YXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92aWRlb0xh
eWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xh
eWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5w
bGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5
YmFjaygpOwogfQogCkBAIC0yMjkzLDcgKzIyOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKICAg
ICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBtX2xh
c3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVm
ZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUlt
YWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxC
dWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKIAogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJjcmVhdGluZyBidWZmZXIgdG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBz
dGFydCkuc2Vjb25kcygpKTsKIH0KQEAgLTIzMTQsOCArMjMxNCw4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3ND
b250ZXh0JiBjCiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJ
bWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBp
bWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIG1fbGFzdEltYWdl
LT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCptX2xhc3RJbWFnZSwgaW1h
Z2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8vIElmIHdlIGhh
dmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3QgZHVlIHRvIG1f
dmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRlbyBmcmFtZSwg
ZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpAQCAtMjM0MSw3ICsy
MzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1
cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsK
ICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCmluZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2MzIxNjE0ZGUxYjBhMzgw
N2Y5YWIuLmEwYWY5Yjg3NGNhZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5NGI1MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHVwZGF0ZUxhc3RJbWFnZSgpOwog
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGVy
Zm9ybVRhc2tPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVh
bVNlc3Npb247CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVm
ZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWPiBtX3JnYkNvbmZvcm1lcjsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogICAgIERlcXVlPFJldGFpblB0
cjxpZD4+IG1fc2l6ZUNoYW5nZU9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpp
bmRleCA5MjViZjRlMWY5MGI1NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFiYjBlLi44YmM0OGZhM2Uz
MjQ1MjU2NzVkOWU4Yzg4ZGY5ZjNhYzE3NDQwODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCkBAIC01NjQsMTAgKzU2NCwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGlu
Z1Byb2dyZXNzZWQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgcmV0dXJuIG1f
bGFzdEltYWdlLmdldCgpOworICAgIHJldHVybiBtX2xhc3RJbWFnZTsKIH0KIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
CkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVu
aXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0
dHJpYnV0ZXMpOwogICAgIH0KIAotICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNy
ZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBt
X2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTYyNiw4ICs2MjYsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwog
ICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3Qs
IGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2UtPnNp
emUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6
ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRl
eHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
VmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXll
ciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBk
YXRlTGFzdEltYWdlKCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgK
aW5kZXggMDg4ZjFkOTJjOTdmMzkyNWJmOWE5YmMwYjIzNzlkMzUwYmRiYmNhOS4uODc4MDk2YWRi
ZDZlMjVkNDMxODZiZWViMGJhZGY0NjhmODZjZTRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgogICAgICAgICBDdXJyZW50RnJhbWVQYWlu
dGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2dJ
bWFnZTsKICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtZWRpYVNhbXBsZTsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBpeGVsQnVmZmVyQ29uZm9y
bWVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggOTg5ZmI4OWRhMmFi
MzhkMWYxYzE3ZDVhZmQxY2E4MjI2MDIyN2NiNC4uOWE1MzZkYjkyYjJlMDQyZDg3ODE0YTllZWFh
YTkzZWVjODM4OThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNzYyLDcgKzc2
Miw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciog
dmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7Ci0gICAgbV92aWRlb0xh
eWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlKTsKKyAg
ICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxz
Y3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UgPyBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRy
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZy
YW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlciht
X2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1w
bGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbV9pbWFnZVBhaW50ZXIu
cGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVm
ZmVyKTsKKyAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZSht
X2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxC
dWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKQEAgLTk3NSwxNCArOTc1LDE0IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRG
cmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5jZ0ltYWdl
IHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UuZ2V0KCk7Ci0gICAgRmxvYXRSZWN0
IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlKSk7CisgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlOworICAg
IEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXplKCkpOwogICAgIGlmICgh
bV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKICAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKICAgICBGbG9hdFJl
Y3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAgICBjb250ZXh0LmNvbmNh
dENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CisgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zv
cm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaAppbmRleCA5OWQ4
NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjliMTA3MDg5NjdmODc1ZGI4
MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9y
bUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0cikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBs
YXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRy
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklu
bGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlmCiAKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQpp
bmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3MDRkLi5mMTE4ZGI1YzNj
NWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgUGxhdGZv
cm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7CiB9CiAKLXZvaWQg
VmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkKK3ZvaWQgVmlkZW9MYXll
ck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRlb0xheWVyTWFuYWdlck9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmEK
ICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJP
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFn
ZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlmIChtX3ZpZGVvSW5saW5l
TGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdl
IGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGMwMDY5YmRjZmJkNjFmZjc2NThl
YWNkMTA2MDgyYWUwYzZmZDIwZDIuLjNjOGY3YzAyYTM5OWQxYWZkODdkNmVmNzZjZWUxYjAzZjFl
Y2EzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAvLyBGSVhNRTogbWF5YmUg
b25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNjYWxlZCBkb3duLAogICAg
ICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNoYW5nZXM/CiAgICAgICAg
IG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6
VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRp
bmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDb250
ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAg
ICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAobV9s
YXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFkNGY5NTUxZjU1YWM0NmZj
ZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMzNDczZGM5OWU2YTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIAogY2xhc3Mg
RmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFz
cyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBo
aWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpAQCAtNjAwLDggKzYwMSw4
IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRDb2xvcjsKIAotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1NTgyNDhj
My4uYTcxNDI2NDIxZmNmYTUyZTBmZDZmMzczZGI3NzUyZGQ4NTMyNTVlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDExICsxMjMsMTYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tu
ZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRl
clRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ry
b2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
bGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDhlZjRmNzg2
YjcyNDkxNDI0NTZlZmYxZjBhZDgyMTZjYzkwNTUzNjcuLjY0NDExZTY0N2ZlMzgwNGVkNzc4ZGMw
ODY2NzBjYjY1ZjI0MDI1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cApAQCAtMjg1LDcgKzI4NSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgYwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBn
cmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwpAQCAtMjk1LDcgKzMwMCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAg
ICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9y
ZGVyVGhpY2tuZXNzKQpAQCAtNDIxLDcgKzQyNiw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwQm91bmRzKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVy
KG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgICAgIENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaAppbmRleCAxYzgyNzEzMGMyYTVmZTI4Zjc1MzVlMTk0NWEzM2RjOTY4NjIw
NTE0Li5iOWZhMjRmOTU3ZGVkODc3ODU2Zjk4Zjk2ZWM4Yjg3MmEwMDI4YjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzYsNyArNzYsOCBAQCBwdWJsaWM6CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCA0ZjFmNzU3MjZhYTgzZDg0YWRiYjM3MmFlZjc2ZGZjNGM4ZWY3Yjg1Li5mNTRm
ZDg3YWRhYmZiN2YyY2IzMmI1NjNmMWY4NGE3MTQzYTAyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdW5zaWdu
ZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiAg
ICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkp
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNo
IChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6IHsKQEAgLTc3LDE4
ICs3NywxOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgICAgIGNhaXJvX3NldF9zb3Vy
Y2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKICAgICAgICAgY2Fp
cm9fcGFpbnQoY3IuZ2V0KCkpOwogCi0gICAgICAgIHJldHVybiBjb3B5OworICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKICAgICBjYXNlIERvbnRDb3B5
QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gbV9zdXJmYWNlOworICAgICAgICByZXR1cm4g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBj
b25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogewogICAgIEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFj
ZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFICYmIGNhaXJvX3N1cmZhY2VfZ2V0
X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBhNjlkNWVl
MGZmNjNmNzc5NTgyNWRjNjc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2YTIy
ZjgxMzZmZjBjYmY1ZWIyNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgogICAg
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZl
SW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBj
b25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
LCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNhaXJv
U3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNh
aXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBtX3N1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDA1YzBmODFjYjM0MTkwY2Iz
NzNiZDg0MzQxNThiNGQwMzMwMWFiMDQuLjExNWUwYmQwYzk2OGQxMTE2ZDk5OTE1NjdjZGNiYzQ5
MjkxZTM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0zNSwzNCArMzUsMjkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUltYWdlOjpzaXplKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fpcm9T
dXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
SW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgp
OwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIHJldHVybiAh
aW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJUk9f
Q09OVEVOVF9DT0xPUjsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1JbWFnZSB8fCBjYWlyb19zdXJm
YWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9D
T0xPUjsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29s
aWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1h
Z2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgp
ICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgaWYgKGNh
aXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9J
TUFHRSkKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3BsYXRmb3JtSW1hZ2UuZ2V0
KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7
CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICB1bnNpZ25l
ZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiAgICAgcmV0dXJuIHVucHJl
bXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKIH0KIAot
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgY2xl
YXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCit2b2lkIE5hdGl2
ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBj
ZjhlYzI5YjVjZTY0YTUyMDE3Yjc1ZDA5MGI1ZjkyNmZkNTYwMTJhLi4wYTE5OTBhZWFjMjkzZWQx
MDk4MDI4OTg1MmUyNGFlOGU2ZmM2ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTEg
KzI4MCwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpAQCAtNDQ3LDIzICs0NTIsMjMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UucHJlVHJh
bnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkg
PT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAgIGZsb2F0IGggPSBDR0ltYWdl
R2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWln
aHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXpl
KCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAgIHN1Yklt
YWdlID0gdGlsZUltYWdlOworICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBv
ZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3Jp
Z2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBz
dWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5k
ZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09
IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOworICAgICAgICBz
dWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3
ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0
aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNr
IHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZs
b2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdp
ZHRoKHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgp
LndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgo
KSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8g
c25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0
aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxl
IGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpAQCAt
NTEyLDcgKzUxNyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgRmxv
YXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXplKCk7Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6
IG51bGxwdHI7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5
MWRlYzkxMjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uMDQwMzk0NjkxMzVjMzU1NTUy
NDJlYzViOWY3YTJmODYzMDljMjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMzOCw4
ICszMzgsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmICghbV9jZ0ltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lk
dGgobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1f
Y2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRX
aWR0aChpbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgaQogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3Bh
Y2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRh
LCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0g
ICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2Nn
SW1hZ2UuZ2V0KCkpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdl
dENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0g
Q0dDb2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0Nv
bG9yU3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Yml0bWFwQ29udGV4dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9v
bCBpCiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCks
IGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVh
bGl0eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CisgICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAv
LyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBh
IGNvcHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7
Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2Rl
Y29kZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJ
bWFnZTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhl
bCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBpZiAoIW1f
Y2dJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UgPSBtX2NnSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VH
ZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVs
ID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJD
b21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBp
eGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJ
bWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0
SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0Vu
ZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNv
bWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHBy
ZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9O
b3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwot
ICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAg
c3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFs
cGhhKQogICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAt
NDYzLDE0ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpl
eHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFn
ZVNvdXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0
YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVs
RGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3Zp
ZGVyKGltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNp
Z25lZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENH
SW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBieXRlc1Bl
clJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQg
cGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsK
ICAgICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5n
ICsgMTsKQEAgLTU0Myw3ICs1NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
YWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwg
LWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsKLSAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkg
fSk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNh
bnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRl
T3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAppbmRleCA1YjIwZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBmMWZhNWMx
N2IzLi41NGI4NzhiNDM0NzZlMTliZDZmNjE3MWY4YjQ5NjI3NzYzZTBmYjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCkBAIC02NywyNCArNjcsMjQgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6c2V0dXBDb250ZXh0KCkKICAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihtX3Jlc29sdXRpb25TY2FsZSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUpCitzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVDcm9w
cGVkSW1hZ2VJZk5lY2Vzc2FyeShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplKQogewotICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdpZHRo
KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLndpZHRoKCkpIHx8IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUu
aGVpZ2h0KCkpKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFn
ZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNr
ZW5kU2l6ZS5oZWlnaHQoKSkpKTsKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgaWYgKGltYWdlICYm
IGltYWdlLT5zaXplKCkgIT0gYmFja2VuZFNpemUpCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5k
U2l6ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0
YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVS
ZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJl
c29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY3Jl
YXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKTsKKyAg
ICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShXVEZNb3ZlKGltYWdl
KSwgYmFja2VuZFNpemUpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2Fs
U2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNl
UmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAg
IENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNl
clNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFj
ZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUlu
VXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1LDcgKzk1LDcgQEAgc3Rh
dGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2Vu
ZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlv
blNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogICAg
IGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHNy
Y1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFj
a2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0Q29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdl
KCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMp
OwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgsNyArMTM4LDcgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVU
eXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKIAogICAgIGlmIChDRkVxdWFs
KHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIFJldGFpblB0cjxD
RkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpCiAgICAgICAgIGlmICghZGF0YVByb3ZpZGVyKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4
ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCks
IDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExh
c3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGUo
cGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0
KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tp
cExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2Vy
dmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpbWFnZSA9IGNy
ZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsK
QEAgLTE2NSwxMiArMTY1LDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dC
YWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXpl
KCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCku
d2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dC
bGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5o
ZWlnaHQoKSkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0
KCkpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwg
YmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwor
ICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIAogICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLSAgICBpZiAo
IWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQo
KSkpCisgICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCB1
dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAppbmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNmZjk0ZTc4ODUyYzZjOTIw
Li4zNTZlYjUyNjMzNzQwNzA4ODNhMjkzZDY1MGM2ODU0YjQ3ZWZkOTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMDcsMTQgKzEwNywxNCBAQCBHcmFwaGljc0Nv
bnRleHQmIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gKm1fY29udGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRl
KENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkp
OwogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJ
bWFnZUNyZWF0ZSgKICAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5k
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAgICAgICBjYWNoZWRD
R0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1fZGF0YVByb3Zp
ZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggYjliZDdmMWJhYjQ3ZmY3
Yzc5NzQzNDgzM2MyN2E1NDk3MzEwODI4NS4uN2QyMzNkMjIyNzg1YWQzZGRmMDYzYzRhODY0OGZk
ZmZhY2U3Y2Y5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdT
dG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApp
bmRleCBkYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVlMDMwLi5hOWQ1NDg1YTI2
MWI1YTBkZjUzZDJiODk3MTBhZTgzN2ZiZjliMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5jcHAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIENvbG9yRm9ybWF0IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKICAgICByZXR1
cm4gQ29sb3JGb3JtYXQ6OkJHUkE7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+
Y3JlYXRlSW1hZ2UoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2Ut
PmNyZWF0ZUltYWdlKCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewotICAgIHJl
dHVybiBJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKTsKKyAgICBy
ZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92
ZShtX3N1cmZhY2UpKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY28KICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RD
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMzIzMDk0ZWE3OTVjNWQy
NDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYi4uZjUwOWVlZTY1YTcyMmUxMjAxZmZjMGZiNTc3Y2Zi
ODJiZmVjNjkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTUxLDgg
KzUxLDggQEAgcHVibGljOgogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
TmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05h
dGl2ZUltYWdlKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDg5MGEwNzE4MTA5MjNm
NzViYTBlMjI5M2M0NmJlYTg3NDQ1YWJhMGMuLmNkYWYxNWMxMDlkYzc5NzI5N2U5YjEwMjk0Mzcw
YTFlMjc1MDZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB1bnNpZ25lZCBJ
bWFnZURlY29kZXJDRzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbQogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdl
dCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWws
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQorUGxhdGZvcm1JbWFnZVB0
ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zKQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA0Njc5MjUxMTM1OTUxY2QxYjUz
OGJkZGYxZWNlNTQ1MDZkZGY2YjNiLi44YmEzMDA5ZDNiNmI2MzQ5NzNiYWY4ZTlhMTkwNTczMTNk
NTUxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVj
ZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
TmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDljYjY0NmE1YmFk
ZWJkYWRjMi4uZjJmY2U0YWE0Yjc3MWRhZTNmYjQyZDVkYmUzYWExMWZiMGU2YTEyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKQEAgLTM3LDIwICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNp
emUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUg
TmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkK
IHsKLSAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQo
KSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKKyAgICByZXR1
cm4gcGxhdGZvcm1JbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHBsYXRmb3JtSW1hZ2UuZ2V0KCkpKSA6IEludFNpemUo
KTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBDR0ltYWdl
QWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsKKyAgICBD
R0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1fcGxhdGZvcm1JbWFn
ZS5nZXQoKSk7CiAgICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
TGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsKIH0KIAotQ29sb3IgbmF0aXZl
SW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
Q29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisg
ICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdC
QQpAQCAtNjAsNyArNjAsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xv
cihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
CiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5k
TW9kZUNvcHkpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0lt
YWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIG1fcGxhdGZv
cm1JbWFnZS5nZXQoKSk7CiAKICAgICBpZiAoIXBpeGVsWzNdKQogICAgICAgICByZXR1cm4gQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2s7CkBAIC02OCwxMSArNjgsMTEgQEAgQ29sb3IgbmF0aXZlSW1h
Z2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAg
IHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4
ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2Vz
KCkKIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3Bs
YXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2Uo
bV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2MjRmNjI3M2Mz
YjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYwNzg3
ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVy
bjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNl
VHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBw
YXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCisgICAg
UGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0Zm9ybUltYWdl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBp
biBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAg
Ly8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhl
bCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwor
ICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdl
dCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsK
IAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0
ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28K
ICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3LDEwICs4NCwx
MCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVh
dFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJu
IHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4g
cGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNr
cyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNl
Q2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdD
b25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlT
dGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxi
YWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZS5tbQppbmRleCA1MTNmNDU1Y2FkOGU1ZTYwNTI3MjhkMzQ3YzM5M2Q5ZjQ0N2ZlMzg4
Li4yZmFiNjllMDMzMjZjMzdiNGMzYzFjOTgzZDk0MDg5YTIxOGMyMzliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0xNzcsNyArMTc3
LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpp
bWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0
aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1hZ2Up
LnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdp
dGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQoKV07CisgICAgcmV0
dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFn
ZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8Q0lJbWFnZT4gRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBG
RUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBp
bnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZDZiZTI3NGM2OGRlZWZiNGMw
ZDUzNjFiZTY0ODE1MjQwMzJjOWY0MS4uMWRkNGEyNGFmMmU4ODczMzkyMzdlOWEwZGExMzBkZDZi
MjY0MTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTY4LDYgKzY4LDcgQEAgZW51bSBj
bGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAogICAg
IERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd1BsYXRmb3Jt
SW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDdjNzYyZTFhNjE5N2Q2Yzhi
OGM0NWZhOWNmZGMwNWEwM2RlZTUxYi4uMTIwNTYyMjhhOTcwYTc3OWM4MzY2ZjkzOTIxZTk2ZDJj
MzU4ZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTE4LDYg
KzExOCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSkpOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihk
b3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGxhdGZvcm1JbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGxhdGZv
cm1JbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC04NTksOSArODYxLDkgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkK
ICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2Up
Ci0gICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VT
aXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qo
c3JjUmVjdCkKQEAgLTg3MSwxMiArODczLDQwIEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpCiAK
IERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAotdm9pZCBE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3Zv
aWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewotICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0
aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIC8vIFNob3VsZCBiZSBoYW5kbGVk
IGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJ
bWFnZSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+
KGl0ZW0pOworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisgICAgdHMuZHVtcFByb3Bl
cnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNv
dXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRp
b25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworRHJhd1BsYXRmb3JtSW1hZ2U6OkRyYXdQ
bGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERy
YXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSkKKyAgICAsIG1faW1hZ2UoaW1h
Z2UpCisgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVj
dChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9w
dGlvbnMpCit7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjp+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9
IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1faW1h
Z2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMp
OworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd1BsYXRmb3JtSW1hZ2UmIGl0ZW0pCiB7CiAgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29u
c3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKICAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgpA
QCAtMTY3Nyw2ICsxNzA3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdU
aWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1
ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwg
ImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRm
b3JtSW1hZ2U6IHRzIDw8ICJkcmF3LXBsYXRmb3JtLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBAIC0xODAw
LDYgKzE4MzEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAg
ICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXR0
ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCBmMDE1YmU1ZTg2NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2NzY5NGZlOGUzLi43YjdlOWEw
ZTcwZGVjNzJmODI5MzMzNGM0YjlkNTZhNGQzMmYwMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTE3MDEsMjcgKzE3MDEsMzAgQEAgT3B0aW9uYWw8UmVmPERyYXdJbWFn
ZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIGNs
YXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisgICAgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0
IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0
aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0K
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdO
YXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBt
X2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0
IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNzMxLDcg
KzE3MzQsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd05h
dGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5h
dGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0xNzQxLDcgKzE3NDQsNzcg
QEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBE
cmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZs
b2F0U2l6ZT4gaW1hZ2VTaXplOworICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOworICAgIGlmICgh
aW1hZ2VTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJl
Y3Q7CisgICAgaWYgKCFkZXN0aW5hdGlvblJlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBz
cmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29k
ZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3Qs
ICpvcHRpb25zKTsKK30KKworY2xhc3MgRHJhd1BsYXRmb3JtSW1hZ2UgOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+IGNyZWF0
ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCk7CisKKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4+IGRlY29k
ZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd1BsYXRmb3Jt
SW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CisKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1faW1hZ2U7CisgICAgRmxv
YXRTaXplIG1faW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAg
ICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9u
czsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdQbGF0Zm9ybUltYWdl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1faW1h
Z2U7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGlu
YXRpb25SZWN0OworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9v
cHRpb25zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdQ
bGF0Zm9ybUltYWdlPj4gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtSW1hZ2VQdHI+IGltYWdlOwogICAgIGRlY29kZXIg
Pj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
QEAgLTE3NjYsNyArMTgzOSw3IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3
TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiBEcmF3TmF0aXZlSW1h
Z2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0
LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdQbGF0Zm9ybUltYWdlOjpjcmVhdGUoKmltYWdl
LCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQog
CiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CkBAIC0zMzMyLDYgKzM0
MDUsOSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2Fz
dDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJh
d1BsYXRmb3JtSW1hZ2U+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+
KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUzLDYgKzM2MjksMTAgQEAgT3B0aW9uYWw8
UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAg
ICBpZiAoYXV0byBpdGVtID0gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRl
bSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0p
KTsKQEAgLTM3MjcsNiArMzgwNyw3IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJ
U1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKERyYXdQbGF0Zm9ybUltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzc5OCw2ICszODc5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggZDE0MmMzNzc5Y2I5OTNlNzM3MmJiOGI4ODg3ZmNjNGM3NTJmZTk4OS4uNDBmY2FhYWE0
NTM2ZmI1MDU1ZjM5NDI0NWZkMDZjYjljZDlmYzUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk0LDkgKzE5NCwxOCBAQCBib29sIFJlY29yZGVyOjpk
cmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBG
bG9hdFJlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1f
ZGVsZWdhdGUtPmxvY2tSZW1vdGVOYXRpdmVJbWFnZShpbWFnZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBS
ZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQoreworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd1BsYXRmb3JtSW1hZ2U6
OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwog
fQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMWM4Yzg5NjM3OGMw
Y2FmYmIyMTEyODk1OTdjZWUyOGI0ZmE3NWQyLi5iODg5NTZhOTliMmI5OTVjYzgzMDcwYmE5Mzdi
NzE2NzQ2ODg0NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVs
ZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAg
ICB9OwpAQCAtMTA4LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJv
cmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGRjOTk0YjczMWZhODk1NGVmODgwM2FkYzI4ZjRmMjcxZWZmNTg5YjcuLmMw
YWFlM2E3ZDQ5ZWYyYjdkNTdhOTE2NTE0ZTYwZjk4OTZkN2Q2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoV1RG
TW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UoKSBjb25zdAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCk7CisgICAgICAg
IHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsK
ICAgICB9CiAgICAgdm9pZCBkcm9wSW1hZ2UoKSB7IG1faW1hZ2UgPSBudWxscHRyOyB9CiAKQEAg
LTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbAogICAgIHJldHVybiAoZnJh
bWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAg
TG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDZlMmVhMDc5N2JkM2NmZDNlOWQ0NTAwODQ5
NjhlOGQzMzM5NTlhN2QuLjU4NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5MjBlNTI1N2U3ODI2OTFhYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTY3LDcgKzY3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGluZGV4IDw9IG1fc2FtcGxlRGF0YS5zaXplKCk7IH0K
ICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAg
ICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KICAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBj
NGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjczZjVlNjc5MjE4Li5mMWY4N2ZiZTNlYTQ1OWNl
Y2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzIxNSw3ICszMjE1LDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnQKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRl
eHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUs
IGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDE4ZTZkNjg4NjY3ZDdj
MzJjMTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjBhYjJjNmM5MTRiZmUzY2FkNjEyN2VkOTYwNjJl
NzM3OTA4YWQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dM
KQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xl
bnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwotICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFjaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCA4MTM2YzFmZmY0
NWI5YTMxNzdhOTY4YmI2ZjYyYjJkZjg5MDdkYTU1Li5jMjQ3OTVmNTA5YTMzNmVmMGQ3YjE3MWQy
NjY0NDZjYWFlZjIxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1JY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ljb246Oklj
b24oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiAgICAgOiBtX2NnSW1hZ2UoaW1hZ2Up
CiB7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8pCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3Qg
UmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNv
bjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBj
b250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6
OkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9j
Z0ltYWdlLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCA2OTA4ZjEwNzYz
MmU4OTAxOGNhOTBlOTkwZjM0NDg3N2I5NGI2ZmI5Li45YmI1MDI4OTBjNjk4OGYzN2ViZGRiOTIz
NTIxM2M1YjRmZTUyYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCkBAIC03NCw3ICs3NCw3IEBAIFJlZjxJbWFnZT4gSW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIEltYWdlOjpu
dWxsSW1hZ2UoKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZS
ZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+JiBuYXRpdmVJbWFnZXMp
CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNv
bnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYgbmF0aXZlSW1hZ2VzKQogewogICAgIC8v
IElmIG5hdGl2ZUltYWdlcy5zaXplKCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlz
IGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNh
bGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSds
bCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKQEAgLTg5LDcgKzg5LDcgQEAgUmV0YWluUHRyPENGRGF0
YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25B
ZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOworICAgICAg
ICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25G
aW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIGRhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1
ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCA2Mjk4Y2YzNjA3M2M3YWU0NGY0M2M2YjU2
NDQyMmIzN2I4NmNmMTA3Li5mYzJjYmI2OGViMmM0MDFiZmIxNzcwYWZiYWNjOTY4NTI5NjkwODcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTEwOSwxMSArMTA5
LDE0IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUobV9pbWFnZUJ1ZmZlcikpOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUlt
YWdlLT5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwg
bmF0aXZlSW1hZ2VIYXNBbHBoYShuYXRpdmVJbWFnZSkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0
c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8p
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5nZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
c3VyZmFjZSkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhp
bWFnZURhdGEsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIEludFBvaW50KCksIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBhMmM5
ZTA5M2ZjMTRiYTVjMWU4MjljNGIyNGUxNjU0MDAzN2E0NDU1Li4yZTllZWM4ZmY0NmVmNDk0ZmQ5
YjMxZTAwYjk5ZTdlNDQ4ZWQzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTU1LDI1ICs1NTUsMzEgQEAgYm9v
bCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKIHsKLSAgICBzdHJ1Y3QgRHJh
d05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewotICAgICAgICB2aXJ0dWFsIH5E
cmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRl
ZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIHN0cnVjdCBEcmF3UGxhdGZvcm1JbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKKyAg
ICAgICAgdmlydHVhbCB+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKICAgICAgICAg
dm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJpZGUK
ICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0Rm9y
UmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJn
PDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8
MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQogICAgICAgICB7
Ci0gICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdOYXRpdmVJbWFnZTw+XG4iOworICAg
ICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3UGxhdGZvcm1JbWFnZTw+XG4iOwogICAgICAg
ICB9CiAgICAgfTsKIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0
YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQbGF0Zm9ybUltYWdlPihS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCkBAIC01OTQsNyArNjAwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QKIAogICAg
IFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVz
dFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOworICAg
ICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlLT5w
bGF0Zm9ybUltYWdlKCkpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0KIAogdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJv
cmRlclRoaWNrbmVzcykKQEAgLTEwNzksNyArMTA4NSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxv
YXRSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UuZ2V0KCkp
LCBkZXN0UmVjdCkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1
ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpKSwgZGVzdFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDM4MDkzZDQxMzViNGQ3YjY1MTFhMTYw
ODdhZmYxM2Y2MDNlZDEzYmEuLmQ4ODRhMWYyYzc5NWE3NzNjZTdmYWRiZDc0ZDkwMDVjMjUzMjc3
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmgKQEAgLTY5LDcgKzY5LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVs
ZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdl
YkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKaW5kZXggODI2ZDJkYTViZGVlYjY3OTVmZDA3ZjE1MTQyNDE4MGM4YWI1ZDBjOS4uYTYx
MTA5MmVjOTE0NzAwOTIyNjBkOGIwNGI3Y2EzNTFjNzZmNDZmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29u
dGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogewogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBmcmFt
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZUltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0
JiB0YXJnZXRSZWN0LCBjbwogICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0YTsKIAogI2lmIFVTRShD
QUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLmdldCgpOwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICBieXRlc1BlckxpbmUg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAjZWxpZiBVU0UoRElS
RUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAy
YWJmNDM4MmQzMDBmNGUxZDMzMjE5MzFlYTk5ZGE0NDRmYTFlMzhmLi4wZGRmYTk2NGExZWIwYmVj
NWM2M2ZiZDkwZjFhMTI1OGU1MTliNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUmVmPEdyYXBoaWNzTGF5ZXI+IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3MK
IAogR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBHcmFw
aGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1h
Z2VQdHIoMCkKICAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMpCiAgICAgLCBtX25lZWRzRGlz
cGxheShmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQpAQCAtMjk0LDI2ICsyOTMs
MjYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgLy8gTWFrZSB0aGUg
ZGVjaXNpb24gYWJvdXQgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGNoYW5nZWQuCi0gICAgICAgIC8v
IFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24g
YSBOYXRpdmVJbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxsIGlmIHRoZSBpbWFnZSBpcyBj
aGFuZ2VkLgorICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBw
b2ludGVyIGVxdWFsaXR5IG9uIGEgUGxhdGZvcm1JbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0
ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgogICAgICAgICAvLyBUaGlzIGFzc3VtcHRpb24g
aXMgdHJ1ZSBmb3IgdGhlIEdUSysgcG9ydC4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0
aXZlSW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAg
ICAgaWYgKCFuZXdOYXRpdmVJbWFnZVB0cikKKyAgICAgICAgYXV0byBuZXdOYXRpdmVJbWFnZSA9
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBpZiAoIW5ld05h
dGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChuZXdOYXRpdmVJ
bWFnZVB0ciA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikKKyAgICAgICAgaWYgKG5ld05h
dGl2ZUltYWdlID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbmV3TmF0aXZlSW1hZ2VQ
dHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmV3TmF0aXZlSW1hZ2U7CiAg
ICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAgICAgICBtX2NvbXBvc2l0ZWRJ
bWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAgICAgICAg
IG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgICAgICBt
X2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShwYWdlU2NhbGVGYWN0b3IoKSAq
IGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1h
Z2UgPSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIobV9jb21wb3NpdGVkSW1hZ2UuZ2V0
KCksIENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpJbWFnZSk7CisgICAgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIobV9jb21wb3NpdGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgQ29udGVu
dHNMYXllclB1cnBvc2U6OkltYWdlKTsKICAgICBub3RpZnlDaGFuZ2UoQ29udGVudENoYW5nZSk7
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggM2IzYTQ4MzMwMTVjNWM3OWNk
NmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3NzI5MzI3YWZiY2FkMThjN2Mx
NGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBl
ckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJMYXllcj4g
bV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNr
aW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBkNTJjNWRiMDc3
NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0YzkxYjkyN2Y5MTAxYWIwOTZj
YWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTM4LDcgKzEzOCw2IEBAIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUgbGF5ZXJUeXBlLCBH
cmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2Up
CiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFsc2UpCiAgICAgLCBtX2Nvb3Jk
aW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9h
bmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFu
aW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQogICAgICwgbV9yZXF1ZXN0UGVuZGluZ1RpbGVDcmVh
dGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewpAQCAtNTg1LDEyICs1
ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291
bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51
bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUltYWdlUHRyKQorICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsK
KyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29tcG9zaXRl
ZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuYXRpdmVJ
bWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdlOwogCiAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICBub3RpZnlG
bHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAg
bV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA9IHRydWU7
CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFja2luZyBwcmVzZW5jZSBhY2NvcmRpbmcgdG8g
dGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgotICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cikgeworICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkgewogICAgICAgICBB
U1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAgICBhdXRvJiBpbWFnZSA9ICptX2NvbXBv
c2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0cl90IGltYWdlSUQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIuZ2V0
KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
KTsKIAogICAgICAgICAvLyBSZXNwYXduIHRoZSBJbWFnZUJhY2tpbmcgb2JqZWN0IGlmIHRoZSB1
bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAgICAgICAgIGlmIChtX25pY29zaWEuaW1hZ2VCYWNr
aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTkyZWY5NWM5MjRlY2UxM2U0MS4u
OWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjIzLDcg
KzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBtX25lZWRzRGlzcGxheTsKIAogICAgIFJlZlB0cjxJ
bWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyOwogICAgIFJ1bkxv
b3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4gbV9yZXF1ZXN0UGVuZGluZ1RpbGVD
cmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNTdiYTg1
OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uMTc4MDcyOTM4ODQ2NWM5NmU4MDkw
NjNhMzhlYWJhNGJlMTQzN2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBA
IC0yMDcsMTEgKzIwNywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3Jt
U3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01Q
dHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2lt
cGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMs
IHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhiZjg1YzA5OTM4ODI5MjQ4Zjgy
ZGRkOTFjOWRlMzNjMDc4My4uYTU2YTNiNDE5ZDVlZDRjNDNlNGY2ZjFiYThhY2E1NjAzNjRjMGI2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTI4Myw3ICsy
ODMsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1JbWFn
ZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29u
dGV4dCgpLnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3Jt
Q29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcwYjc1YmFkZTAzOWQ2Zjk0ODcy
YWVhZjRjZjFlNWU1M2NjLi41ZjkwZmYxZjFiOWYwMmJiMzE3YjE2M2RmNzM2MTNjMjZmYjVkYTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw3ICs3MSwxMCBA
QCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9v
bCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZv
cm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2FjZWYyMmU2OTdiNjRlODFjNWM5
NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0YTNiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBiaXRtYXA7
CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJpdG1hcCgmYml0bWFwKTsKICAg
ICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKQEAgLTkwLDcgKzkwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRyKTsKIH0KIAot
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRpdmVJbWFnZVB0ciYmIGJpdG1h
cCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgUGxhdGZvcm1JbWFnZVB0ciYm
IGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5k
U2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAgICwgbV9wbGF0Zm9ybUNvbnRl
eHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29u
dGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2goKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQ+
IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJpdG1hcFRhcmdldCk7CkBAIC0x
MzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weQogCiAgICAgfQogCi0gICAg
cmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElEMkQxQml0bWFw
KiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGljIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJp
dG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiB7
CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0aXZlSW1hZ2VTaXplKGltYWdl
KSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElEMkQxQml0bWFwUmVu
ZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7Cisg
ICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0g
MSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAg
ICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CisgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBl
bHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
LT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRhcmdldCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJp
dG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNvbHV0aW9uU2Nh
bGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSArMTg3LDExIEBAIFJlZlB0cjxJ
bWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UoUHJlc2VydmVS
ZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlID0gY29weU5h
dGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJl
dHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldC5n
ZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwg
cHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBh
dGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKIHsKICAgICBsb2Fk
RGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
aAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2YzQ1N2RjMjYxLi4xZDU3NGFl
ZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbHVzaENvbnRleHQoKSBv
dmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKSBvdmVycmlkZTsK
QEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9iaXRt
YXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5M2I5ZDRlOTIxMzNkNTUzY2Qz
YTRiLi45MDNjNTJkMzMwYjNiOWNjNTViNWRhYTY1MzNjMGEzMWY0ZTQyZDI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBA
IC05MSw4ICs5MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZy
YW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsg
KytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5n
ZXQoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0
YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGlt
YWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAgICAg
YXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYg
aW1hZ2UtPnNpemUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZy
YW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAg
ICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNT
aXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCmluZGV4IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWViY2UzODA1YzAuLmNjYWVi
ZTY0NDJkMTBmODM2OTY3OGJiYjQwNzdkNmQ4YTRjOTdjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkz
LDcgKzkzLDExIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1l
cyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytp
KSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAg
ICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmICgh
bmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHN1cmZh
Y2UgPSBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGlmICghc3VyZmFjZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCAy
MWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1
YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250
ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQg
PSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRj
YWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwog
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCA5MGY3OGMyMzhm
MThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi5lYWM3Y2JlNjE3YjliN2Y5NWFhZjY3Y2Fi
OTU5OTY5YzlkOWNhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC01MCw2MCArNTAs
MzYgQEAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQogICAgIHJl
dHVybiBpbWFnaW5nRmFjdG9yeTsKIH0KIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIFVJTlQgd2lkdGggPSAwOwot
ICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZv
cm1JbWFnZSA/IHBsYXRmb3JtSW1hZ2UtPkdldFBpeGVsU2l6ZSgpIDogSW50U2l6ZSgpOwogfQog
Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
Ym9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UpCisg
ICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEQy
RDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7Cisg
ICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBtX3BsYXRmb3JtSW1hZ2UtPkdldFBp
eGVsRm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FM
UEhBX01PREVfSUdOT1JFOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRD
b2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUlt
YWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFn
ZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQotewotICAgIGF1dG8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7Ci0KLSAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBh
biBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1w
bGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKLQotICAgIC8vIHNyY1JlY3Qg
aXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhh
dmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNy
Y1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRS
ZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsK
LQotICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3
TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIHN1YnNhbXBsZWRJbWFn
ZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBE
aXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdl
U3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6
OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotCiAjaWYgQ0FDSEVf
U1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJ
bWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkKKyAgICAgICAgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwog
I2VuZGlmCiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUx
ZWI4NTM2OWNhZThmOTc4MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2
MmQxODI3ZTcwYjUxZjVlZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAg
LTIwNCw3ICsyMDQsNyBAQCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmKQorUGxhdGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAv
LyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJ
ZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmgKaW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMy
MDg4Zi4uMjgzMjIyZWMzYmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vj
b25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7Cisg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFn
KSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwCmluZGV4IGI4MzVhNjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIw
Mzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkg
Y29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QK
IHsKICAgICBtX3BpeGVscy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3Vy
ZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJj
ZmQwYjk2MTQwZWJlNzZhZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5
N2M1MTM4NzA2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAK
QEAgLTIzOSwxMSArMjM5LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1p
dEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgo
c3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAg
ICAgIH0sCi0gICAgICAgIFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6
ZSB7CisgICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewog
ICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgICAgICAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2Ut
PnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQg
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0
dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0
KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1w
bGVUaW1lXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBs
ZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFn
ZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRp
bWUsIHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+
Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGlt
ZSwgc2l6ZSgpKTsKICAgICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oCmluZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRl
ZjQuLjBiNmIyNDRhNDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZp
bmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERp
c3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRh
aW5QdHI8SU9TdXJmYWNlUmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6
VmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAg
ICAgY2xhc3MgQ2FwdHVyZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBw
dWJsaWMgTG9nZ2VySGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEz
MjUxZDhiOTY1N2JhOTAxNGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VU
cmFuc2ZlclNlc3Npb24pCiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAor
ICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJ
bWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAg
cGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRv
IHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkg
KyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCkt
Pm5hdGl2ZUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24o
KSk7CisgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShwbGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNh
bXBsZVJvdGF0aW9uKCkpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmlu
ZGV4IDFkYmVkMzY1NDU2ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0
Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRp
b24pCiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAg
Q0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0lt
YWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtSW1hZ2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1h
bCk7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBs
YXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVh
c2UoZHJhd0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggNDkxYWQ5MGQwNTBkMzkzZWI2YWI1NTZjNzdmZDEwZTM3NDM3M2ZhMi4uMTEx
YTRiMmMzNTVjMDdiOTQ5NTk2MjQ2ZGYyMjE3NjM5YWY0YWI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTg0MCw3ICsxODQwLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBQYWludEluZm8mIHBhaW4KICAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtl
KHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0
LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogICAgIENHUmVjdCBiYWRnZVJlY3Qg
PSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAKLSAg
ICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5u
YXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldOwogCiAgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQgZm9yIHRoZSBjbGlwcGlu
ZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBzaGFkb3cuCiAgICAgUmV0
YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRl
ZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8gMiwgYmFkZ2VEaW1lbnNp
b24gLyAyLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCA2M2VkZjEyZTIxMzMzMGRmMmRhY2I5NjU0MDI1NjUzMTYzYjQwYmMxLi5iMDYwZDcy
ODI5Y2I3MWQzMGI2YmYyODVhMzNiYjc4ZWNhNzlhOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBJbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUg
bmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBh
c3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2
ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyArMjI5LDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJUKHRhcmdldENvbnRleHQpOwogICAgIGlm
ICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNlYmNiYTRmN2E4ODdiYWM1OWU4ZDI4Li4y
ODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUwMDU0NDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7
CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSogaW50ZXJuYWxQYWdlKCkgeyByZXR1cm4g
bV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVmYzMxZTQ3ZDAyMTUxZDY5MGM1Y2Q2NWY1
ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRiOWNiNzM3OGQyN2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBt
X2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUs
IG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGU2
NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJiMzRhNWMuLjAxYjJmMWJhZmE5NTA1M2M1
OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlRm9yQ29udGFp
bmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDk5MTExYTc4OTBiNTc4NWY0ZTEw
NjJkNjg4MjA2NTQ3ZDUyNTAzYmQuLjExYmY4ZmUyZWY0MDhiYWU5MTZkNGZlMDZhN2Y0M2Q1OTlk
ZGRiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE3
LDcgKzIxNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6
CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJywKKyAgICAgICAgJ1dlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHInLAogICAgICAg
ICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4NTVj
OGJjNTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uZTU3MTNlMzAxZjYwMjZiY2I2ZGI2MjFmNGVmNGI3
ZTEwZjY1MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJ
bWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdl
KENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUp
OwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6
ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDMzNzk1OTZiZTY5ZDkyNGFlMGNhNmQ4ZjlmMWZmYjAxYjIwYzNkNmMuLjVlZTkzMzU1ZDcz
NmE1ZWRhMDFlY2U0YjRjYzU1YjI4Y2MwODA5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCwxNiArMTEwMCwxNiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1h
Z2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBl
bmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybUltYWdlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgYXV0byBpbWFn
ZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIGF1dG8gaW1hZ2VTaXplID0gTmF0
aXZlSW1hZ2U6OnNpemUocGxhdGZvcm1JbWFnZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGVuY29k
ZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZv
cm1JbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3Qo
eyB9LCBpbWFnZVNpemUpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpAQCAtMTExNyw3ICsxMTE3LDcgQEAg
c3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVBsYXRmb3JtSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFn
ZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFw
aGljc0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CkBA
IC0xMTM2LDI1ICsxMTM2LDI1IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgIHBsYXRmb3JtSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOworICAgIGlmICghcGxhdGZv
cm1JbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxQ
bGF0Zm9ybUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBs
YXRmb3JtSW1hZ2UpCiB7Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7CisgICAgYm9vbCBo
YXNJbWFnZSA9ICEhcGxhdGZvcm1JbWFnZTsKICAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwogCiAg
ICAgaWYgKGhhc0ltYWdlKQotICAgICAgICBlbmNvZGVOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFn
ZSk7CisgICAgICAgIGVuY29kZVBsYXRmb3JtSW1hZ2UoZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2
ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoRGVjb2Rl
ciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBpbWFn
ZSA9IG51bGxwdHI7CisgICAgcGxhdGZvcm1JbWFnZSA9IG51bGxwdHI7CiAKICAgICBib29sIGhh
c0ltYWdlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQpAQCAtMTE2MywxNyAr
MTE2MywxNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxO
YXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIGlmICghaGFzSW1hZ2UpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRlY29kZU5hdGl2ZUltYWdlKGRlY29k
ZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1JbWFnZShkZWNvZGVyLCBwbGF0
Zm9ybUltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQg
QXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgZW5jb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CisgICAgZW5jb2RlT3B0aW9uYWxQbGF0
Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1ib29sIEFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQorYm9vbCBBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAg
ICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CisgICAg
cmV0dXJuIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShkZWNvZGVyLCBwbGF0Zm9ybUltYWdl
KTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiY2EwMjQwYjZkYTk0ZjgzNTg1
YmFmMTljYjQ5NmIwOWI5MmI4ZTMuLmY5MWNiOTEyYTI5NDJmZGNiMGQ1OTY3MmM0NzhiYzRmOGJi
OTY3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rp
b25PcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRN
ZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTQxOSw5ICs0MTksOSBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Ci0gICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHImKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXgg
OTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4uMzY1MzQ4MjBhZjVhMjI4
M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg1LDExICsxODUsOSBAQCB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNv
bnN0IHZvaWQqCiAKIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgp
CiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFn
ZSgpOwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsK
KyAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYmI4OTY1NDU4
ODY3ZWIyYTBmYzRlYzg1N2YzNDc1YTRlODI1YTM1Yy4uZTYzMDA5NDhhYTg4ZDcxYjUzNzdlNGFj
MTA3YzkwNjg1OTk5MDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBJY29uRGF0YWJh
c2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFi
YXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTmF0aXZlSW1hZ2VQdHImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTU2Miw3
ICs1NjIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKICAgICAgICAgICAgICAgICBpZiAo
IW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCkpIHsKICAgICAgICAgICAgICAgICAgICAg
aWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29uSUQudmFsdWUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUlt
YWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2
ZUltYWdlPiwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBjYW5Xcml0ZVRvRGF0YWJhc2UgPSBt
X2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllcyAmJiBhbGxvd0Rh
dGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXM7CkBAIC01ODcsNyArNTg3LDcg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBh
Z2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNl
dChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4o
bnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5h
dGl2ZUltYWdlPiwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkp
KTsKICAgICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkp
LCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKSB7CkBAIC02MjIsNyAr
NjIyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgYm9vbCByZXN1bHQgPSB0
cnVlOwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2Fk
ZWRJY29uc0xvY2spOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25z
LnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGlt
ZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVk
SWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4sIE1v
bm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgaWYgKGljb25EYXRhU2l6
ZSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGljb25EYXRhLCBpY29uRGF0YVNpemUpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXpl
QXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuaAppbmRleCA5NjEyZjk5YzJjZmI3YzUxMzY0ZTgxZWM4Y2YxMDllNjMxOGUwMzliLi41
Yzc2OTAxN2Y5ZTRkZTE4NzZjZDRhZjVlMTdjY2QxY2MxYWQ2Y2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGNoZWNrSWNvblVS
TEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wsIGJvb2wpPiYmKTsKLSAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHImJik+JiYpOworICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpPiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYg
cGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03
MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYjsK
ICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3BhZ2VVUkxUb0ljb25VUkxNYXA7CiAgICAg
TG9jayBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrOwotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6
OnBhaXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZElj
b25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8UmVmUHRyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlPiwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CiAgICAgTG9jayBtX2xvYWRl
ZEljb25zTG9jazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGU0OGZj
ZTQ3MGMxMGFkZmZhNjJlNDc3Yjc4MzkzNjNjMjVlOTgwMjkuLmJmMDNlNDNmMGZkOTFlNzNkYTgw
OWRjMzJkMTQ0NTM5YTE0ZjQ4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtODYsMTEgKzg2LDExIEBA
IHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY2dJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFn
ZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGlj
IGJvb2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25z
dCBEcmFnU291cmNlU3RhdGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGRkODljMGYwYWZh
ODJiMTMwZDUyNDJlZDFjOTlkNmUyYmJmNTU4ODkuLjk0NGI1YTdiMWNjZGEzYmFiMGFlZTdlYjY3
Zjk2ZDc4ZWFkOTFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUwMywxMyArNzUwMywxMyBAQCBz
dGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9t
RHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHVuc2Vs
ZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2VsZWN0aW9uLT5uYXRpdmVJbWFn
ZSgpOwotICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpCisgICAgaWYgKCF1bnNlbGVj
dGVkU25hcHNob3RJbWFnZSB8fCB1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+aXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghX2Ryb3BBbmltYXRpb25Db3VudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBh
ZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hv
dEltYWdlLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6X3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsK
ICAgICBfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBh
bGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0
KCldKTsKICAgICBbX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0RnJhbWU6ZGF0YS0+Y29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogCkBA
IC03NzMyLDExICs3NzMyLDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZv
ckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0g
ICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10g
aW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpXSk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjcmVh
dGVUYXJnZXRlZERyYWdQcmV2aWV3IGluIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS4KQEAgLTc5
OTEsMTMgKzc5OTEsMTMgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09m
UGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXQKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxl
Y3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0gICAgICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1h
Z2UpIHsKKyAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSB8fCB1bnNlbGVjdGVk
U25hcHNob3RJbWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdB
bmREcm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBjb3VsZCBub3Qg
ZGVjb2RlIHVuc2VsZWN0ZWQgY29udGVudCBpbWFnZS4iKTsKICAgICAgICAgICAgIHN0YXRlLmNs
ZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0
RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3Rl
ZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNj
YWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAg
YXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICAgICAgYXV0byBz
bmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6
dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAgICAgIFtzbmFw
c2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3
OnNuYXBzaG90Vmlldy5nZXQoKV07CkBAIC0xMDA0MSw3ICsxMDA0MSwxMiBAQCBzdGF0aWMgVUlN
ZW51ICptZW51RnJvbUxlZ2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKFVJVmlld0NvbnRyb2xs
ZXIgKnByZXZpZXdWaQogewogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGlj
YXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBb
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlu
a0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlu
a0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIAorICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0Fy
cmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZp
ZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlNzZjMDYzOGM3ZGEyYTA0ZjFlMDg5YmM0
ZDQ5MGYyMjRiODdkMjE2Li5hY2VmMDA3OTMzZTJmMmNkMGU2N2IyNDJlZjAxMDVhMmIxNDNiNGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
CkBAIC05NiwxMCArOTYsMTAgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkp
IGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1hZ2VD
b3B5KCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1ha2VDR0lt
YWdlQ29weSgpKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICByZXR1cm4gbnVsbHB0cjsKICNl
bGlmIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oCmluZGV4IDA1YzEwOWNkMjAyNmQxNWY4MGViODMyYWQ5ZjFiN2JhMzNiYjk1NTcuLjll
MjRhYjk5ZWJjNjc1Y2UyMDFhNTkzOTcyOGM2MTlkYmE1OTVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRp
dmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJD
b3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6
Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCmluZGV4IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5
YTIxMTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmgKaW5kZXggNWY4NWRmODUxOWUxYTMxZTYyODNkYThmYjAwOGExMzViMjEz
ZTM0My4uMGQ3NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NH
TGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7Ci0gICAgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA4MWNiMzFiODVmZjI2ODUxMDBiOTQyZjhlY2Q2NTE4N2NkNDI4
MzgxLi45Mjk3NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgxOWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY4Myw3
ICsxNjgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJh
bWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wg
aXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJl
ZiBpbWFnZSA9IGJpdG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICBDR0ltYWdlUmVmIGlt
YWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAg
QVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKIAogICAgIENH
Qml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2Njc0YmYxNGFjMDEy
MGMzNWZkZjNhZGY2Li43YWEwMDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRjMjI2ZjI3Mjc0OGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1MzYsNyBAQCBpZCA8RE9N
RXZlbnRUYXJnZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogCiAgICAgaWYgKHRleHRJbmRp
Y2F0b3IpIHsKICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0b3ItPmNvbnRl
bnRJbWFnZSgpKQotICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS5h
dXRvcmVsZWFzZSgpOworICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKCEqY2dJ
bWFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNo
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgx
NzY5OTY3NWVjZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2
M2IxMzY3NWFjZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YkNhY2hlLm1tCkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Np
b25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAg
ICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVk
SW1hZ2U+KGNhY2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVk
SW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25j
YXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2Fj
aGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0
byBuYXRpdmVJbWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggYjYwZTMyNmYxMGJmNWNlM2NhNmZhM2Y0MGIxYWE4ZTA5NzlkNDIzNy4uNjNlOTUy
ZDdlMmMxNGVjOTEzYzE3OWE1YTJjNjdkZTc1MzdhZDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQ1LDE0ICs4NDUsMTQgQEAgcHJpdmF0ZToK
ICAgICBfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXko
aW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVm
KCk7CiAgICAgX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2VTY2FsZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFs
bG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVu
dEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2Fs
ZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBf
Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5n
ZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9y
aWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGlj
YXRvckRhdGEuY29udGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxs
b2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpz
Y2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0
KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAg
ICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0
YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmll
bnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdl
V2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhD
R0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsK
ICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412879</attachid>
            <date>2020-11-01 20:52:50 -0800</date>
            <delta_ts>2020-11-01 22:09:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101205249.patch</filename>
            <type>text/plain</type>
            <size>228945</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODhlMTRlNGRkODQwZDE4ZjcwZTE5YjI2MzMzOWVk
OWRiYjU0ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisg
ICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworTmF0
aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCit7CisgICAgaWYgKG1fb2JzZXJ2ZXIgJiYgbV9wbGF0
Zm9ybUltYWdlKQorICAgICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCAwMzM0NzU5NjA3ZjhmMjBkZTMxMjQ4NTlhNmYwZjA5NDUxZTE4ZTViLi4zMjc0ODI0NTZl
OWMzNTA1MWQ2ODUzNmY0NTMyYTIwZWIyMGVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3LDE2ICsyNyw0OSBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCIgICAgCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CiAKLVdF
QkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLUNv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKK2NsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUlt
YWdlV2lsbEJlRGVsZXRlZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CiAKLX0KKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1J
bWFnZVB0ciYmKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgp
OworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9
CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2U7IH0K
KyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gbV9wbGF0Zm9y
bUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorCisgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZShtX3BsYXRmb3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworCisgICAg
dm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2Vy
dmVyOyB9CisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOworICAgIAorcHJpdmF0ZToKKyAgICBO
YXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0ciBt
X3BsYXRmb3JtSW1hZ2U7CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07Cisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHsgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3
N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFkMDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVj
dCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQotI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQot
dHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENB
SVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdl
UHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJkMDdmOTQ0ZTllMzk4ZmNmNTI0
ZmExOWVmMDQ1OTExMDEzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3Qg
Q0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJD
YWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2VsaWYgVVNFKERJUkVDVDJEKQor
dXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJpdG1hcD47CisjZWxpZiBVU0Uo
Q0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD47
CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxTaGFy
ZWRCaXRtYXA+OworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmluZGV4IDFiMDdmODZmMzkzMTc4ZjRjZjdm
ZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZl
ZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHZp
ZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA4YTVmNTg3MGEzNTM1NzNkODY5
NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgxNjY0YTI0MTk0OTNlOTViYTUz
Nzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5MTZmOTBhYmQwNzUzYTExNTU2
YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRkMGQzNDg0YjE1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC01NjcsNyAr
NTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBo
b2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmlu
ZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5YzFlYTYuLjI2YjNkNzhmZTFi
MGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBw
YWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKQEAgLTM0Myw3ICsz
NDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4g
bV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92
aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xh
c3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZjI5NDg4MTZlZGRlNzllNzhh
MTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uM2FiYmE5MmU1MDlhMjE0MDQ5ZDUwNDE2ZDY1MjQwMWM0
NjE4Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogewogICAgIHVwZGF0ZUxhc3RJbWFn
ZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSk7CisgICAg
bV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9s
YXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAK
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkxheWVyKQog
ICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7
CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/
IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKICAgICB1cGRhdGVEaXNh
YmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0yMjkzLDcgKzIyOTMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVU
eXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJ
bWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBidWZmZXIgdG9vayAiLCAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsKIH0KQEAgLTIzMTQsOCArMjMxNCw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9P
dXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdElt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAw
IH0sIG1fbGFzdEltYWdlLT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpt
X2xhc3RJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAog
ICAgIC8vIElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhl
IHBhc3QgZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAv
LyB2aWRlbyBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVk
LgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1
cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFz
dFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRU
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFs
cGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICByZXR1cm4gbV9sYXN0
SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2
MzIxNjE0ZGUxYjBhMzgwN2Y5YWIuLmEwYWY5Yjg3NGNhZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5
NGI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHVwZGF0
ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8aWQ+IG1fcGVyZm9ybVRhc2tPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1T
ZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3JnYkNvbmZvcm1lcjsKICAgICBSZWZQdHI8
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogICAg
IERlcXVlPFJldGFpblB0cjxpZD4+IG1fc2l6ZUNoYW5nZU9ic2VydmVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFi
YjBlLi44YmM0OGZhM2UzMjQ1MjU2NzVkOWU4Yzg4ZGY5ZjNhYzE3NDQwODg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC01NjQsMTAgKzU2NCwxMCBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAg
ICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7
Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOworICAgIHJldHVybiBtX2xhc3RJbWFnZTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpCkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fcmdiQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAotICAgIG1fbGFzdEltYWdlID0gbV9y
Z2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25m
b3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYyNiw4ICs2MjYsOCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAw
LCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdM
T2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQpAQCAtMTIxOSw3ICsxMjE5LDcg
QEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdl
KCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmgKaW5kZXggMDg4ZjFkOTJjOTdmMzkyNWJmOWE5YmMwYjIzNzlkMzUwYmRi
YmNhOS4uODc4MDk2YWRiZDZlMjVkNDMxODZiZWViMGJhZGY0NjhmODZjZTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgogICAgICAgICBD
dXJyZW50RnJhbWVQYWludGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAK
LSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2U7CisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY2dJbWFnZTsKICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtZWRpYVNh
bXBsZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBp
eGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggOTg5ZmI4OWRhMmFiMzhkMWYxYzE3ZDVhZmQxY2E4MjI2MDIyN2NiNC4uOWE1MzZkYjkyYjJl
MDQyZDg3ODE0YTllZWFhYTkzZWVjODM4OThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtNzYyLDcgKzc2Miw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgPyBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKQEAgLTk1
NSw3ICs5NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
bV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKQEAgLTk3
NSwxNCArOTc1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgaWYgKCFtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UuZ2V0KCk7
Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7CisgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXpl
KCkpOwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGlt
YWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Qu
c2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjli
MTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3
MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyAr
MTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkK
K3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRl
b0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRp
dmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlm
IChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29u
dGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGMwMDY5
YmRjZmJkNjFmZjc2NThlYWNkMTA2MDgyYWUwYzZmZDIwZDIuLjNjOGY3YzAyYTM5OWQxYWZkODdk
NmVmNzZjZWUxYjAzZjFlY2EzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAv
LyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNj
YWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNo
YW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBs
YXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFk
NGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMz
NDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5
TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0
aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpA
QCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRD
b2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQw
NmE1NWJhNWM1NTgyNDhjMy4uYTcxNDI2NDIxZmNmYTUyZTBmZDZmMzczZGI3NzUyZGQ4NTMyNTVl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDExICsxMjMsMTYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0
KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VT
dHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRv
JiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxh
dGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25z
LCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CmluZGV4IDhlZjRmNzg2YjcyNDkxNDI0NTZlZmYxZjBhZDgyMTZjYzkwNTUzNjcuLjY0NDExZTY0
N2ZlMzgwNGVkNzc4ZGMwODY2NzBjYjY1ZjI0MDI1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcApAQCAtMjg1LDcgKzI4NSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiwgYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9v
bCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2Uo
KSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwpAQCAtMjk1LDcgKzMwMCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdl
LnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9w
dGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtNDIxLDcgKzQyNiw3IEBAIEludFJlY3Qg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwQm91bmRzKCkKIHZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIu
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNs
aXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCk7CisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwg
c3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAxYzgyNzEzMGMyYTVmZTI4Zjc1MzVl
MTk0NWEzM2RjOTY4NjIwNTE0Li5iOWZhMjRmOTU3ZGVkODc3ODU2Zjk4Zjk2ZWM4Yjg3MmEwMDI4
YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzYsNyArNzYsOCBA
QCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6
OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUlt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0ZjFmNzU3MjZhYTgzZDg0YWRiYjM3MmFlZjc2ZGZj
NGM4ZWY3Yjg1Li5mNTRmZDg3YWRhYmZiN2YyY2IzMmI1NjNmMWY4NGE3MTQzYTAyOWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1Bl
clJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZSht
X3N1cmZhY2UuZ2V0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
cikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3Rv
cmU6IHsKQEAgLTc3LDE4ICs3NywxOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAw
KTsKICAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwogCi0gICAgICAgIHJldHVybiBjb3B5
OworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKICAg
ICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gbV9zdXJmYWNlOwor
ICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UpOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNv
ZXJjZVRvSW1hZ2UoKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogewogICAg
IEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWlyb19zdXJmYWNlX2dl
dF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFICYmIGNh
aXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19DT05URU5U
X0NPTE9SX0FMUEhBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aAppbmRleCBhNjlkNWVlMGZmNjNmNzc5NTgyNWRjNjc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0MDIy
NjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBjYmY1ZWIyNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQg
ewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAotICAgIE5hdGl2
ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDA1
YzBmODFjYjM0MTkwY2IzNzNiZDg0MzQxNThiNGQwMzMwMWFiMDQuLjExNWUwYmQwYzk2OGQxMTE2
ZDk5OTE1NjdjZGNiYzQ5MjkxZTM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0zNSwz
NCArMzUsMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2ZUltYWdl
U2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUltYWdlOjpz
aXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJu
IGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CisgICAg
cmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKHBsYXRmb3JtSW1hZ2UuZ2V0
KCkpIDogSW50U2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAog
ewotICAgIHJldHVybiAhaW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5n
ZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1JbWFn
ZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkgIT0g
Q0FJUk9fQ09OVEVOVF9DT0xPUjsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNv
bGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3Jt
SW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigp
OwogCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJP
X1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3Bs
YXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAgICAg
cmV0dXJuIENvbG9yKCk7CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0
X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkp
KTsKKyAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiAg
ICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBp
eGVsIH0pKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0
ciYpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAppbmRleCBjZjhlYzI5YjVjZTY0YTUyMDE3Yjc1ZDA5MGI1ZjkyNmZkNTYwMTJhLi4w
YTE5OTBhZWFjMjkzZWQxMDk4MDI4OTg1MmUyNGFlOGU2ZmM2ZWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCkBAIC0yODAsMTEgKzI4MCwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBs
YXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRv
QmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1E
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZv
cm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3Rvbmlj
VGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpAQCAtNDQ3LDIz
ICs0NTIsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUltYWdl
ID0gaW1hZ2UucHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRpb25z
Lm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAgIGZs
b2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9
IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUp
Ci0gICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOworICAgICAgICBzdWJJbWFnZSA9IHRpbGVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEg
c3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNv
ZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAg
ICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwg
d2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAg
ICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVj
dCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9
CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNl
IHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAg
ICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVj
aGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3
ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENHSW1h
Z2VHZXRXaWR0aCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKHcg
PT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYg
IXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhN
RTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdl
IGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8v
IHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1h
Z2UgdG8gZml0LgpAQCAtNTEyLDcgKzUxNyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAg
ICAgfQogCiAgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9u
UmVjdC5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdy
YXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xD
Ry5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uMDQw
Mzk0NjkxMzVjMzU1NTUyNDJlYzViOWY3YTJmODYzMDljMjAwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xD
Ry5jcHAKQEAgLTMzOCw4ICszMzgsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlm
ICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGgg
PSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0g
Q0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VXaWR0
aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFt
X2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBh
biBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1
aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8v
IGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0
Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFj
ZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYg
KG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1h
cENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJ
bnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9u
Tm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5n
ZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdldCgp
KTsKIAogICAgICAgICAvLyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJl
cGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAgIG1f
ZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBD
b250ZXh0LmdldCgpKSk7Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgp
OworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2NnSW1h
Z2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVu
dCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6
ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgp
KTsKKyAgICBpZiAoIW1fY2dJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1h
Z2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBv
bmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBzaXpl
X3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAg
ICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21w
b25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBp
eGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5m
byBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBD
R0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsK
ICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRl
Y2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRl
bWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAg
LTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBoYU9w
ID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxw
aGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2Uu
Z2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKSkg
ewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYg
KCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9V
bm11bHRpcGx5OwpAQCAtNDYzLDE0ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkK
ICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkp
KTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0lt
YWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgp
KSk7CiAKICAgICB1bnNpZ25lZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAg
IHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7
CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAq
IG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGln
bm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTU0Myw3ICs1NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4
ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9s
YXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNh
bnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRl
T3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShjZ0ltYWdl
LCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6
ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1YjIwZDg5MmVkOGJiY2Y2MDE4MTZh
NjM2NzZhMDBmMWZhNWMxN2IzLi41NGI4NzhiNDM0NzZlMTliZDZmNjE3MWY4YjQ5NjI3NzYzZTBm
YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC02NywyNCArNjcsMjQgQEAgdm9pZCBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkKICAgICBjb250ZXh0KCkuYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBp
bWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUpCitzdGF0aWMgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQogewotICAgIGlmIChpbWFnZSAmJiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXpl
LndpZHRoKCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNpemVf
dD4oYmFja2VuZFNpemUuaGVpZ2h0KCkpKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6
ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsKLSAgICByZXR1cm4gaW1hZ2U7Cisg
ICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgIT0gYmFja2VuZFNpemUpCisgICAgICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53
aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4gV1RGTW92ZShpbWFn
ZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJl
ZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0g
MSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAg
ICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJh
Y2tlbmRTaXplKTsKKyAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2Fy
eShXVEZNb3ZlKGltYWdlKSwgYmFja2VuZFNpemUpOwogICAgIGVsc2UgewogICAgICAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53
aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCks
IHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFn
ZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7
CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVh
dGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1
LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNj
YWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAg
aWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5
QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAg
ICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgsNyAr
MTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZyb21J
bWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdl
OwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKIAog
ICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU2LDcgKzE1Niw3
IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgIGlmICghZGF0YVByb3ZpZGVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENH
SW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVu
c2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdl
QWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRl
KENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURp
bWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgo
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxl
ID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7
CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAg
ICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBi
YWNrZW5kU2l6ZSgpKTsKQEAgLTE2NSwxMiArMTY1LDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAq
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250
ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwg
YmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tl
bmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRT
aXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIAogICAgIGF1dG8g
Y2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApKTsKLSAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxp
dHksIGNmRGF0YS5nZXQoKSkpCisgICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNm
Zjk0ZTc4ODUyYzZjOTIwLi4zNTZlYjUyNjMzNzQwNzA4ODNhMjkzZDY1MGM2ODU0YjQ3ZWZkOTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMDcsMTQgKzEwNywx
NCBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0
KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
cikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJh
Y2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSkpOwogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lk
dGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCiAgICAg
ICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1hcElu
Zm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5kZXgg
YjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2MyN2E1NDk3MzEwODI4NS4uN2QyMzNkMjIyNzg1YWQz
ZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhf
dD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVl
MDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJiODk3MTBhZTgzN2ZiZjliMWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIENvbG9y
Rm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0KCkg
Y29uc3QKICAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1h
Z2UoKQogewotICAgIHJldHVybiBJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1
cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShJT1N1cmZhY2U6OnNpbmtJ
bnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9p
ZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdlKCkp
Ci0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNr
ZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIGRl
c3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXgg
MzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYi4uZjUwOWVlZTY1YTcyMmUx
MjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFn
ZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJ
bWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4
IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0NmJlYTg3NDQ1YWJhMGMuLmNkYWYxNWMxMDlkYzc5
NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTQ5Miw3ICs0OTIs
NyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJDRzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQor
UGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewogICAgIExPRyhJbWFnZXMsICJJbWFn
ZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA0Njc5
MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1MDZkZGY2YjNiLi44YmEzMDA5ZDNiNmI2MzQ5NzNi
YWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZp
bmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAg
UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdj
YzViZDljYjY0NmE1YmFkZWJkYWRjMi4uZjJmY2U0YWE0Yjc3MWRhZTNmYjQyZDVkYmUzYWExMWZi
MGU2YTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
TmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTM3LDIwICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
cGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRX
aWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNp
emUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRo
KHBsYXRmb3JtSW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHBsYXRmb3JtSW1hZ2UuZ2V0
KCkpKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QK
IHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdl
LmdldCgpKTsKKyAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZv
KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAgICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsKIH0K
IAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IElu
dFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNp
emUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBw
aXhlbFs0XTsgLy8gUkdCQQpAQCAtNjAsNyArNjAsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgICAgIHJl
dHVybiBDb2xvcigpOwogCiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQu
Z2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBD
b250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7CisgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
MSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAKICAgICBpZiAoIXBpeGVsWzNdKQogICAg
ICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CkBAIC02OCwxMSArNjgsMTEgQEAg
Q29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQogICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVs
WzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJd
ICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBjbGVhck5hdGl2ZUltYWdl
U3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6
OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2Up
Ci0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkp
OworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRl
eCBjYmY2MjRmNjI3M2MzYjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFk
N2FlNmMxZTc2MGYwNzg3ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1Bh
dHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdXNlclNwYWNlVHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3Jt
KDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVp
Z2h0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChh
dXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxh
dGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
Ci0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5h
dGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25z
dGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihw
bGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29u
c3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBm
b3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBv
ZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4K
QEAgLTc3LDEwICs4NCwxMCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQg
eVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAg
IC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9u
ZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxh
dGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENH
SW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENH
UGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ss
IHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBs
YXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtD
R1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsK
KyAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVF
LCAmcGF0dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCA1MTNmNDU1Y2FkOGU1ZTYwNTI3MjhkMzQ3
YzM5M2Q5ZjQ0N2ZlMzg4Li4yZmFiNjllMDMzMjZjMzdiNGMzYzFjOTgzZDk0MDg5YTIxOGMyMzli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2Uv
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
CkBAIC0xNzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtD
SUltYWdlIGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVy
Pigqc291cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBb
Q0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5n
ZXQoKV07CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2Ut
PmNvcHlOYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xv
ck1hdHJpeChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5Q
dHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZDZi
ZTI3NGM2OGRlZWZiNGMwZDUzNjFiZTY0ODE1MjQwMzJjOWY0MS4uMWRkNGEyNGFmMmU4ODczMzky
MzdlOWEwZGExMzBkZDZiMjY0MTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTY4LDYg
KzY4LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdUaWxlZFNj
YWxlZEltYWdlLAogICAgIERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisg
ICAgRHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAg
ICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDdj
NzYyZTFhNjE5N2Q2YzhiOGM0NWZhOWNmZGMwNWEwM2RlZTUxYi4uMTIwNTYyMjhhOTcwYTc3OWM4
MzY2ZjkzOTIxZTk2ZDJjMzU4ZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJ
dGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZl
cj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAg
cmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3du
Y2FzdDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC04NTksOSArODYxLDkgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFn
ZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZl
SW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2UpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9p
bWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAg
ICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKQEAgLTg3MSwxMiArODczLDQwIEBAIERyYXdOYXRpdmVJ
bWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpCiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVm
YXVsdDsKIAotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VT
aXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIC8vIFNo
b3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25z
dCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisg
ICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNl
LXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworRHJhd1BsYXRm
b3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSkKKyAg
ICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAg
ICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjp+RHJhd1Bs
YXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdQbGF0
Zm9ybUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNS
ZWN0LCBtX29wdGlvbnMpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRHJhd1BsYXRmb3JtSW1hZ2UmIGl0ZW0pCiB7CiAgICAgdHMgPDwg
c3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKICAgICAvLyBGSVhNRTogZHVt
cCBtb3JlIHN0dWZmLgpAQCAtMTY3Nyw2ICsxNzA3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQt
aW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8
ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6IHRzIDw8ICJkcmF3LXBsYXRmb3JtLWltYWdlIjsgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4i
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsg
YnJlYWs7CkBAIC0xODAwLDYgKzE4MzEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6Cisg
ICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVtKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDE1YmU1ZTg2NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2NzY5
NGZlOGUzLi43YjdlOWEwZTcwZGVjNzJmODI5MzMzNGM0YjlkNTZhNGQzMmYwMjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3MDEsMjcgKzE3MDEsMzAgQEAgT3B0aW9u
YWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdl
PiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykp
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgp
OwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9
CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9
CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAg
IEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1Jl
Y3Q7CkBAIC0xNzMxLDcgKzE3MzQsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29k
ZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0x
NzQxLDcgKzE3NDQsNzcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3
TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOworICAgIGRlY29kZXIgPj4gaW1hZ2VT
aXplOworICAgIGlmICghaW1hZ2VTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgZGVjb2RlciA+
PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgaWYgKCFkZXN0aW5hdGlvblJlY3QpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7Cisg
ICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRp
b25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVh
dGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9u
UmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKK30KKworY2xhc3MgRHJhd1BsYXRmb3JtSW1hZ2Ug
OiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHJhd1BsYXRm
b3JtSW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCk7CisKKyAgICBGbG9hdFJl
Y3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRl
c3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGxhdGZv
cm1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBP
UlQgRHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1f
aW1hZ2U7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIG1fb3B0aW9uczsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERy
YXdQbGF0Zm9ybUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKKyAgICBlbmNv
ZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAg
IGVuY29kZXIgPDwgbV9vcHRpb25zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtSW1hZ2VQdHI+IGltYWdl
OwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTE3NjYsNyArMTgzOSw3IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0
aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVy
biBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlv
blJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdQbGF0Zm9ybUltYWdl
OjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwg
Km9wdGlvbnMpOwogfQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CkBAIC0zMzMyLDYgKzM0MDUsOSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5j
b2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1hZ2U+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUzLDYgKzM2Mjks
MTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9y
bUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29k
ZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUo
ZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM3MjcsNiArMzgwNyw3IEBAIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQbGF0Zm9ybUltYWdlKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzc5OCw2ICszODc5LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxl
ZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZDE0MmMzNzc5Y2I5OTNlNzM3MmJiOGI4ODg3ZmNjNGM3NTJm
ZTk4OS4uNDBmY2FhYWE0NTM2ZmI1MDU1ZjM5NDI0NWZkMDZjYjljZDlmYzUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk0LDkgKzE5NCwxOCBAQCBi
b29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29y
ZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jv
b2wgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1vdGVOYXRpdmVJbWFnZShpbWFnZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCAzMWM4Yzg5NjM3OGMwY2FmYmIyMTEyODk1OTdjZWUyOGI0ZmE3NWQyLi5iODg5NTZhOTliMmI5
OTVjYzgzMDcwYmE5MzdiNzE2NzQ2ODg0NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29u
c3QgSXRlbSYpIHsgfTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW0oY29uc3Qg
SXRlbSYpIHsgfTsKICAgICB9OwpAQCAtMTA4LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0lt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRjOTk0YjczMWZhODk1NGVmODgwM2FkYzI4ZjRm
MjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYyYjdkNTdhOTE2NTE0ZTYwZjk4OTZkN2Q2ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00NiwxMSArNDYsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3Ry
ZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAgfQog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAorICAgIFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUlt
YWdlKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCktPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAgdm9pZCBkcm9wSW1hZ2UoKSB7IG1faW1hZ2UgPSBu
dWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbAog
ICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
K1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDZlMmVhMDc5N2Jk
M2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlhN2QuLjU4NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5MjBl
NTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAg
LTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGluZGV4IDw9IG1fc2FtcGxl
RGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZp
bmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBm
aW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjczZjVlNjc5MjE4Li5m
MWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzIxNSw3ICszMjE1LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3Bp
ZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCks
IHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4
IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjBhYjJjNmM5MTRiZmUz
Y2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBV
U0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0s
IEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJy
aWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25J
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpp
bmRleCA4MTM2YzFmZmY0NWI5YTMxNzdhOTY4YmI2ZjYyYjJkZjg5MDdkYTU1Li5jMjQ3OTVmNTA5
YTMzNmVmMGQ3YjE3MWQyNjY0NDZjYWFlZjIxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK0ljb246Okljb24oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiAgICAgOiBt
X2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIFJlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8p
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29u
Rm9ySW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK1JlZlB0cjxJY29u
PiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2Up
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJ
bWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd1Bs
YXRmb3JtSW1hZ2UobV9jZ0ltYWdlLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpp
bmRleCA2OTA4ZjEwNzYzMmU4OTAxOGNhOTBlOTkwZjM0NDg3N2I5NGI2ZmI5Li45YmI1MDI4OTBj
Njk4OGYzN2ViZGRiOTIzNTIxM2M1YjRmZTUyYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC03NCw3ICs3NCw3IEBAIFJlZjxJ
bWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gQml0
bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+
JiBuYXRpdmVJbWFnZXMpCitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJl
cHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYgbmF0aXZlSW1h
Z2VzKQogewogICAgIC8vIElmIG5hdGl2ZUltYWdlcy5zaXplKCkgaXMgemVybywgd2Uga25vdyBm
b3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8gRXZl
biB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2ls
bCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKQEAgLTg5LDcgKzg5LDcgQEAg
UmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25z
dCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBDR0lt
YWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0
KCksIDApOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5n
ZXQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgMCk7CiAKICAgICBDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIGRh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCA2Mjk4Y2YzNjA3
M2M3YWU0NGY0M2M2YjU2NDQyMmIzN2I4NmNmMTA3Li5mYzJjYmI2OGViMmM0MDFiZmIxNzcwYWZi
YWNjOTY4NTI5NjkwODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAK
QEAgLTEwOSwxMSArMTA5LDE0IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6
aGFuZGxlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUobV9pbWFnZUJ1
ZmZlcikpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZVNpemUo
bmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8g
c2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2VIYXNBbHBoYShuYXRpdmVJbWFnZSkgPyBCaXRtYXBU
ZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkg
PyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsK
ICNpZiBVU0UoQ0FJUk8pCi0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRp
dmVJbWFnZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT51
cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIEludFBv
aW50KCksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSk7CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAppbmRleCBhMmM5ZTA5M2ZjMTRiYTVjMWU4MjljNGIyNGUxNjU0MDAzN2E0NDU1Li4yZTll
ZWM4ZmY0NmVmNDk0ZmQ5YjMxZTAwYjk5ZTdlNDQ4ZWQzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTU1LDI1
ICs1NTUsMzEgQEAgYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKIHsK
LSAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9w
ZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewotICAg
ICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQoreworICAgIHN0cnVjdCBEcmF3UGxhdGZvcm1JbWFnZSBmaW5hbCA6IFBhaW50
aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9h
dFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hh
ZG93U3RhdGU+IHsKKyAgICAgICAgdmlydHVhbCB+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1
bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiByZXBs
YXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigp
LCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAgICBD
YWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzww
PigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+
KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVy
cmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdOYXRpdmVJ
bWFnZTw+XG4iOworICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3UGxhdGZvcm1JbWFn
ZTw+XG4iOwogICAgICAgICB9CiAgICAgfTsKIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUp
OwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
dGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQ
bGF0Zm9ybUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC01OTQsNyArNjAwLDcgQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKICAgICBpZiAoYXV0byBzdXJm
YWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1h
Z2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
b3B0aW9ucykpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RG
TW92ZShzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTEwNzksNyArMTA4NSw3IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1
ZmZlciwgY29uc3QgRmxvYXRSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
KHN1cmZhY2UuZ2V0KCkpLCBkZXN0UmVjdCkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKSwgZGVzdFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDM4MDkzZDQx
MzViNGQ3YjY1MTFhMTYwODdhZmYxM2Y2MDNlZDEzYmEuLmQ4ODRhMWYyYzc5NWE3NzNjZTdmYWRi
ZDc0ZDkwMDVjMjUzMjc3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDggQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6
OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1JbWFn
ZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggODI2ZDJkYTViZGVlYjY3OTVmZDA3ZjE1MTQyNDE4
MGM4YWI1ZDBjOS4uYTYxMTA5MmVjOTE0NzAwOTIyNjBkOGIwNGI3Y2EzNTFjNzZmNDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjbwogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBOYXRpdmVJ
bWFnZVB0ciBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgYXV0byBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1OSw3ICsx
NTksNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdl
LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0
YTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFt
ZUltYWdlLmdldCgpOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAg
ICBieXRlc1BlckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7
CiAjZWxpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCAyYWJmNDM4MmQzMDBmNGUxZDMzMjE5MzFlYTk5ZGE0NDRmYTFlMzhmLi4w
ZGRmYTk2NGExZWIwYmVjNWM2M2ZiZDkwZjFhMTI1OGU1MTliNDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUmVmPEdyYXBo
aWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFj
dG9yeSwgR3JhcGhpY3MKIAogR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGll
bnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMpCiAg
ICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQpA
QCAtMjk0LDI2ICsyOTMsMjYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAg
ICAgLy8gTWFrZSB0aGUgZGVjaXNpb24gYWJvdXQgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGNoYW5n
ZWQuCi0gICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHBvaW50
ZXIgZXF1YWxpdHkgb24gYSBOYXRpdmVJbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxsIGlm
IHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgorICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFz
c3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgUGxhdGZvcm1JbWFnZVB0ciBpcyBh
IHZhbGlkIHdheSB0byB0ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgogICAgICAgICAvLyBU
aGlzIGFzc3VtcHRpb24gaXMgdHJ1ZSBmb3IgdGhlIEdUSysgcG9ydC4KLSAgICAgICAgTmF0aXZl
SW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKLSAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZVB0cikKKyAgICAgICAgYXV0byBu
ZXdOYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
ICAgICBpZiAoIW5ld05hdGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmIChuZXdOYXRpdmVJbWFnZVB0ciA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikKKyAg
ICAgICAgaWYgKG5ld05hdGl2ZUltYWdlID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0g
bmV3TmF0aXZlSW1hZ2VQdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmV3
TmF0aXZlSW1hZ2U7CiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAgICAg
ICBtX2NvbXBvc2l0ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlKCk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1h
Z2UpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShwYWdl
U2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKKyAgICAgICAgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIobV9jb21w
b3NpdGVkSW1hZ2UuZ2V0KCksIENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpJbWFnZSk7CisgICAgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIobV9jb21wb3NpdGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgQ29udGVudHNMYXllclB1cnBvc2U6OkltYWdlKTsKICAgICBub3RpZnlDaGFuZ2Uo
Q29udGVudENoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggM2Iz
YTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3NzI5
MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRy
IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApp
bmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0Yzkx
YjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTM4LDcgKzEzOCw2
IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5
cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFk
anVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFsc2Up
CiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0
cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQogICAgICwgbV9yZXF1ZXN0
UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKQog
ewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdl
ICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUltYWdlUHRyKQorICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZlSW1h
Z2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdl
KTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50
Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFja2luZyBwcmVzZW5j
ZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgotICAgIGlmIChtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAgICBhdXRvJiBp
bWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0cl90IGltYWdlSUQgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAgICAgdWludHB0cl90IG5h
dGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0
aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAvLyBSZXNwYXduIHRoZSBJbWFnZUJhY2tpbmcg
b2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAgICAgICAgIGlmIChtX25p
Y29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTkyZWY5
NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBtX25lZWRzRGlzcGxheTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQ
dHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBt
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRlZFRp
bWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4gbV9yZXF1
ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uMTc4MDcy
OTM4ODQ2NWM5NmU4MDkwNjNhMzhlYWJhNGJlMTQzN2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTEgKzIwNywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNv
bnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJ
bWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdl
KCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhiZjg1
YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4My4uYTU2YTNiNDE5ZDVlZDRjNDNlNGY2ZjFi
YThhY2E1NjAzNjRjMGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHAKQEAgLTI4Myw3ICsyODMsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAogICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0
KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2
UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1h
Z2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUlt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBzdGF0
ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJ
bWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcwYjc1
YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi41ZjkwZmYxZjFiOWYwMmJiMzE3YjE2M2Rm
NzM2MTNjMjZmYjVkYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBA
IC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6
OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2FjZWYy
MmU2OTdiNjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0YTNi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZvcm1J
bWFnZVB0ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJpdG1h
cCgmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKQEAg
LTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBu
dWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29u
dGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRpdmVJ
bWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRT
aXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9y
bUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgUGxh
dGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2lj
YWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAgICwg
bV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2goKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJpdG1h
cFRhcmdldCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weQog
CiAgICAgfQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUNy
b3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJn
ZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGljIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBS
ZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRT
aXplJiBib3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBz
dGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KElEMkQxQml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNl
cnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9yZXNv
bHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3Jt
SW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRhcmdl
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgp
LCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSArMTg3
LDExIEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJbnRv
SW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KGJpdG1hcFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNv
bHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJU
YXJnZXQqIHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdl
dCkKIHsKICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2YzQ1
N2RjMjYxLi4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
bHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0
aW9uKSBvdmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5M2I5
ZDRlOTIxMzNkNTUzY2QzYTRiLi45MDNjNTJkMzMwYjNiOWNjNTViNWRhYTY1MzNjMGEzMWY0ZTQy
ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ0dXaW4uY3BwCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7
CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUlt
YWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgo
KSkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBz
aXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0
ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWVi
Y2UzODA1YzAuLmNjYWViZTY0NDJkMTBmODM2OTY3OGJiYjQwNzdkNmQ4YTRjOTdjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKQEAgLTkzLDcgKzkzLDExIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAg
ICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOworICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAg
IGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmNwcAppbmRleCAyMWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1Li43
N2IxYTRhMTg4ODFjMGI1YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAg
bV9yZW5kZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
K1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2FjYTkz
ZTM5MjQyN2IyNjUzNTRjYWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIwNGU5
ZmJiMDZhZDBiMWM5MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3Qp
IGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmlu
YWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApp
bmRleCA5MGY3OGMyMzhmMThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi5lYWM3Y2JlNjE3
YjliN2Y5NWFhZjY3Y2FiOTU5OTY5YzlkOWNhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3Bw
CkBAIC01MCw2MCArNTAsMzYgQEAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0Zh
Y3RvcnkoKQogICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKIH0KIAotSW50U2l6ZSBuYXRpdmVJ
bWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFn
ZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIFVJ
TlQgd2lkdGggPSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsKKyAg
ICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IHBsYXRmb3JtSW1hZ2UtPkdldFBpeGVsU2l6ZSgpIDog
SW50U2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAg
IGlmICghaW1hZ2UpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBp
eGVsRm9ybWF0KCk7CisgICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBtX3BsYXRm
b3JtSW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhh
TW9kZSAhPSBEMkQxX0FMUEhBX01PREVfSUdOT1JFOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNp
bmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWlt
YWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAo
IW1fcGxhdGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0
dXJuIENvbG9yKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwotCiAgICAgcmV0dXJuIENvbG9y
KCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGF1dG8qIHBsYXRmb3JtQ29udGV4
dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0KLSAgICAvLyBTdWJzYW1wbGluZyBtYXkg
aGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAg
SW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKLQot
ICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQg
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVk
SW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qo
c3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBs
ZWRJbWFnZVNpemUpKTsKLQotICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwotICAg
IERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCks
IHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMs
IHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKLX0KLQotdm9pZCBj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3Zv
aWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotCiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBzdWJpbWFn
ZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFn
ZSkKKyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3Jt
SW1hZ2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYw
Y2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJu
IGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlciht
X211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZv
ciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBi
YWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBk
ZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0
YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVi
bGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZp
bmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9
CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBt
X2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5
OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5n
U3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6
OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl
X2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4
IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZh
OTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIEludFNpemUoSU9T
dXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNl
LmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2Up
IC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7CisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiAKQEAgLTI2MywxMSAr
MjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAog
ICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2Ft
cGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJl
ZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5h
dGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBp
ZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAg
ICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2Uu
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4
ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIs
NyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGlj
OgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENH
SW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZy
YW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9T
dXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1
ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAg
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZl
ckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBp
ZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1h
Z2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
KGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZm
ZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZl
ci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwg
c2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVU
aW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2My
ZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEz
OSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcs
IEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0
LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAg
IGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7
CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtD
R0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0Nv
bnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogICAg
IENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDkxYWQ5MGQwNTBkMzkzZWI2YWI1NTZjNzdmZDEw
ZTM3NDM3M2ZhMi4uMTExYTRiMmMzNTVjMDdiOTQ5NTk2MjQ2ZGYyMjE3NjM5YWY0YWI3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTg0MCw3ICsx
ODQwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1h
Z2UmIGltYWdlLCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICBDR1JlY3QgaW5zZXRCYWRnZVJl
Y3QgPSBDR1JlY3RNYWtlKHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZz
ZXQsIGJhZGdlT2Zmc2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogICAgIENH
UmVjdCBiYWRnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURp
bWVuc2lvbik7CiAKLSAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRo
Q0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBDSUltYWdlICppbnB1dElt
YWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCldOwogCiAgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQg
Zm9yIHRoZSBjbGlwcGluZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBz
aGFkb3cuCiAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhD
cmVhdGVXaXRoUm91bmRlZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8g
MiwgYmFkZ2VEaW1lbnNpb24gLyAyLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCA2M2VkZjEyZTIxMzMzMGRmMmRhY2I5NjU0MDI1NjUzMTYz
YjQwYmMxLi5iMDYwZDcyODI5Y2I3MWQzMGI2YmYyODVhMzNiYjc4ZWNhNzlhOTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBJ
bWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93
bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQ
dHIgbmVlZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUg
Y2FsbGVyIHNvIE5hdGl2ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlw
ZS4KLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKIHsKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyArMjI5LDcgQEAg
TmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLU5hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdl
dENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25z
dCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJUKHRhcmdldENv
bnRleHQpOwogICAgIGlmICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNlYmNiYTRmN2E4
ODdiYWM1OWU4ZDI4Li4yODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUwMDU0NDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAgKzYzLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAogI2lmIFVTRShD
QUlSTykKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cikgZmluYWw7CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFs
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSogaW50ZXJuYWxQ
YWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVmYzMxZTQ3ZDAy
MTUxZDY5MGM1Y2Q2NWY1ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRi
OWNiNzM3OGQyN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25z
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBy
ZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oCmluZGV4IGU2NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJiMzRhNWMuLjAx
YjJmMWJhZmE5NTA1M2M1OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBj
b25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFs
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNW
R0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDk5MTEx
YTc4OTBiNTc4NWY0ZTEwNjJkNjg4MjA2NTQ3ZDUyNTAzYmQuLjExYmY4ZmUyZWY0MDhiYWU5MTZk
NGZlMDZhN2Y0M2Q1OTlkZGRiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjE3LDcgKzIxNyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKLSAgICAgICAg
J1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKKyAgICAgICAgJ1dlYkNvcmU6OlBsYXRmb3JtSW1h
Z2VQdHInLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVy
SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXgg
ZGIwOGM0MzE4YWU4NTVjOGJjNTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uZTU3MTNlMzAxZjYwMjZi
Y2I2ZGI2MjFmNGVmNGI3ZTEwZjY1MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNy
ZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlv
bnMpCiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAs
IDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwot
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUs
IHJlY3QsIHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1h
Z2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdl
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDMzNzk1OTZiZTY5ZDkyNGFlMGNhNmQ4ZjlmMWZmYjAxYjIwYzNk
NmMuLjVlZTkzMzU1ZDczNmE1ZWRhMDFlY2U0YjRjYzU1YjI4Y2MwODA5MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCwxNiAr
MTEwMCwxNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybUltYWdlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7
Ci0gICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIGF1dG8g
aW1hZ2VTaXplID0gTmF0aXZlSW1hZ2U6OnNpemUocGxhdGZvcm1JbWFnZSk7CiAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogICAgIGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZs
b2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRm
b3JtSW1hZ2UocGxhdGZvcm1JbWFnZSwgaW1hZ2VTaXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNp
emUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFuZGxl
OwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2Uo
RGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQorc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVBsYXRmb3JtSW1hZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKICAgICBPcHRpb25hbDxib29s
PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFw
aGljc0NvbnRleHQ7CkBAIC0xMTM2LDI1ICsxMTM2LDI1IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFn
ZVB0CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAg
IHBsYXRmb3JtSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwor
ICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIHZvaWQg
ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1h
Z2U7CisgICAgYm9vbCBoYXNJbWFnZSA9ICEhcGxhdGZvcm1JbWFnZTsKICAgICBlbmNvZGVyIDw8
IGhhc0ltYWdlOwogCiAgICAgaWYgKGhhc0ltYWdlKQotICAgICAgICBlbmNvZGVOYXRpdmVJbWFn
ZShlbmNvZGVyLCBpbWFnZSk7CisgICAgICAgIGVuY29kZVBsYXRmb3JtSW1hZ2UoZW5jb2Rlciwg
cGxhdGZvcm1JbWFnZSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVPcHRpb25hbE5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbFBsYXRm
b3JtSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFn
ZSkKIHsKLSAgICBpbWFnZSA9IG51bGxwdHI7CisgICAgcGxhdGZvcm1JbWFnZSA9IG51bGxwdHI7
CiAKICAgICBib29sIGhhc0ltYWdlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2Up
KQpAQCAtMTE2MywxNyArMTE2MywxNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdgogICAgIGlm
ICghaGFzSW1hZ2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRlY29kZU5h
dGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1JbWFn
ZShkZWNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7
Ci0gICAgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7CisgICAgZW5j
b2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1i
b29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1h
Z2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVy
LCBpbWFnZSk7CisgICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShkZWNvZGVy
LCBwbGF0Zm9ybUltYWdlKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiY2Ew
MjQwYjZkYTk0ZjgzNTg1YmFmMTljYjQ5NmIwOWI5MmI4ZTMuLmY5MWNiOTEyYTI5NDJmZGNiMGQ1
OTY3MmM0NzhiYzRmOGJiOTY3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRl
eGVkREIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdl
UHRyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25E
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAg
LTQxOSw5ICs0MTksOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UGxhdGZvcm1JbWFnZVB0cj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOworICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQ
dHImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFy
ZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAKaW5kZXggOTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4u
MzY1MzQ4MjBhZjVhMjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg1LDExICsxODUsOSBA
QCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlw
ZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqCiAKIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVJbWFnZSgpCiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1h
Z2UgPSBtYWtlQ0dJbWFnZSgpOwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpKTsKKyAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUlt
YWdlKSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggYmI4OTY1NDU4ODY3ZWIyYTBmYzRlYzg1N2YzNDc1YTRlODI1YTM1Yy4uZTYzMDA5NDhh
YTg4ZDcxYjUzNzdlNGFjMTA3YzkwNjg1OTk5MDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25z
dCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBJY29uRGF0YWJhc2U6
OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VX
cml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTmF0aXZlSW1h
Z2VQdHImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25EYXRhYmFzZTo6bG9hZElj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29uSUQudmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFr
ZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3Bh
aXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBjYW5Xcml0
ZVRvRGF0YWJhc2UgPSBtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6
OlllcyAmJiBhbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXM7CkBA
IC01ODcsNyArNTg3LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtl
X3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3Rv
bmljVGltZTo6bm93KCkpKTsKICAgICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAg
ICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShpY29uRGF0YSkpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
KSB7CkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAg
Ym9vbCByZXN1bHQgPSB0cnVlOwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0
ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxO
YXRpdmVJbWFnZT4sIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAg
aWYgKGljb25EYXRhU2l6ZSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGljb25EYXRhLCBpY29uRGF0YVNpemUpLCB0cnVlKSA8IEVuY29kZWRE
YXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuaAppbmRleCA5NjEyZjk5YzJjZmI3YzUxMzY0ZTgxZWM4Y2Yx
MDllNjMxOGUwMzliLi41Yzc2OTAxN2Y5ZTRkZTE4NzZjZDRhZjVlMTdjY2QxY2MxYWQ2Y2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2
b2lkIGNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wsIGJvb2wpPiYmKTsKLSAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImJik+JiYpOworICAgIHZvaWQgbG9hZEljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpPiYmKTsKICAgICBTdHJpbmcg
aWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3Qs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2UgbV9kYjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3BhZ2VVUkxUb0lj
b25VUkxNYXA7CiAgICAgTG9jayBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnBhaXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1Rp
bWU+PiBtX2xvYWRlZEljb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8UmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CiAg
ICAgTG9jayBtX2xvYWRlZEljb25zTG9jazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ+IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tCmluZGV4IGU0OGZjZTQ3MGMxMGFkZmZhNjJlNDc3Yjc4MzkzNjNjMjVlOTgwMjkuLmJmMDNl
NDNmMGZkOTFlNzNkYTgwOWRjMzJkMTQ0NTM5YTE0ZjQ4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAt
ODYsMTEgKzg2LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdl
KEltYWdlKiBpbWFnZSkKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghY2dJ
bWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCld
KTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9y
RHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhdGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGRkODljMGYwYWZhODJiMTMwZDUyNDJlZDFjOTlkNmUyYmJmNTU4ODkuLjk0NGI1YTdiMWNj
ZGEzYmFiMGFlZTdlYjY3Zjk2ZDc4ZWFkOTFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUwMywx
MyArNzUwMywxMyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFjdEl0
ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2VsZWN0
aW9uLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpCisg
ICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSB8fCB1bnNlbGVjdGVkU25hcHNob3RJbWFn
ZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghX2Ryb3BBbmltYXRpb25D
b3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgYXV0byB1bnNlbGVj
dGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdKTsKICAgICBfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCA9IGFkb3B0TlMo
W1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICBbX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3Qgc2V0
RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXNdOwogCkBAIC03NzMyLDExICs3NzMyLDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJ
bWFnZT4gdWlJbWFnZUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSkKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdl
LT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBhZG9wdE5TKFtb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBt
ZXJnZWQgd2l0aCBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3IGluIERyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS4KQEAgLTc5OTEsMTMgKzc5OTEsMTMgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJ
bnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXQK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBzbmFw
c2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0gICAgICAgIGlmICghdW5zZWxl
Y3RlZFNuYXBzaG90SW1hZ2UpIHsKKyAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFn
ZSB8fCB1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgICAgIFJF
TEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFuaW1hdGUgaW1hZ2UgcGxhY2Vob2xk
ZXJzOiBjb3VsZCBub3QgZGVjb2RlIHVuc2VsZWN0ZWQgY29udGVudCBpbWFnZS4iKTsKICAgICAg
ICAgICAgIHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2aWV3UHJvdmlkZXJzKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250
ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9u
VXBdKTsKKyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBh
ZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hv
dEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsK
ICAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7
CiAgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogICAgICAgICBbcHJvdGVjdGVk
U2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07CkBAIC0xMDA0MSw3ICsxMDA0MSwx
MiBAQCBzdGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2FjeVByZXZpZXdPckRlZmF1bHRBY3Rpb25z
KFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewogICAgIGlmICghX3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9u
SW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCkuZ2V0
KCldIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9u
SW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7Cisg
ICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIAorICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2Vd
OwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250
cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlNzZjMDYzOGM3
ZGEyYTA0ZjFlMDg5YmM0ZDQ5MGYyMjRiODdkMjE2Li5hY2VmMDA3OTMzZTJmMmNkMGU2N2IyNDJl
ZjAxMDVhMmIxNDNiNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwCkBAIC05NiwxMCArOTYsMTAgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtX2JpdG1h
cC0+bWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9i
aXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICByZXR1
cm4gbnVsbHB0cjsKICNlbGlmIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDA1YzEwOWNkMjAyNmQxNWY4MGViODMyYWQ5ZjFi
N2JhMzNiYjk1NTcuLjllMjRhYjk5ZWJjNjc1Y2UyMDFhNTkzOTcyOGM2MTlkYmE1OTVlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CiAKLSAgICBXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdT
dG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVD
b3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0
aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0
NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNWY4NWRmODUxOWUxYTMxZTYyODNk
YThmYjAwOGExMzViMjEzZTM0My4uMGQ3NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVm
NTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JikgZmluYWw7CiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51
bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmlu
YWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4MWNiMzFiODVmZjI2ODUxMDBiOTQy
ZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgx
OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChX
ZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogI2lmIFBMQVRGT1JNKENPQ09B
KQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7
Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAg
ICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCk7CiAgICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9
PSA4KTsKIAogICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5m
byhpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1
YjE2Njc0YmYxNGFjMDEyMGMzNWZkZjNhZGY2Li43YWEwMDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRj
MjI2ZjI3Mjc0OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1
MzYsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogCiAg
ICAgaWYgKHRleHRJbmRpY2F0b3IpIHsKICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKQotICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKS5hdXRvcmVsZWFzZSgpOworICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgaWYgKCEqY2dJbWFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KaW5kZXggZDgxNzY5OTY3NWVjZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQw
OTZkZGY5NTBjYmZlODE2M2IxMzY3NWFjZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZh
dWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyIHsKICAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Ug
PSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJl
cXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNhY2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNo
ZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2Up
OwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7
CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjYwZTMyNmYxMGJmNWNlM2NhNmZhM2Y0MGIxYWE4ZTA5
NzlkNDIzNy4uNjNlOTUyZDdlMmMxNGVjOTEzYzE3OWE1YTJjNjdkZTc1MzdhZDBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQ1LDE0ICs4NDUs
MTQgQEAgcHJpdmF0ZToKICAgICBfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9
IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3Jk
aW5hdGVzKS5sZWFrUmVmKCk7CiAgICAgX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGlj
YXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5n
ZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9y
ZWRdOworICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
IHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07
CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlKQotICAgICAgICBfY29udGVudElt
YWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2Nh
bGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudElt
YWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAK
ICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAg
ICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhv
dXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFn
ZSkgewotICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBz
Y2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAg
ICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkg
c2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAg
ICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlczsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="commit-queue"
          id="429390"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412880</attachid>
            <date>2020-11-01 21:16:25 -0800</date>
            <delta_ts>2020-11-01 21:38:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101211624.patch</filename>
            <type>text/plain</type>
            <size>233995</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODhlMTRlNGRkODQwZDE4ZjcwZTE5YjI2MzMzOWVk
OWRiYjU0ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisg
ICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworTmF0
aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCit7CisgICAgaWYgKG1fb2JzZXJ2ZXIgJiYgbV9wbGF0
Zm9ybUltYWdlKQorICAgICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCAwMzM0NzU5NjA3ZjhmMjBkZTMxMjQ4NTlhNmYwZjA5NDUxZTE4ZTViLi4zMjc0ODI0NTZl
OWMzNTA1MWQ2ODUzNmY0NTMyYTIwZWIyMGVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3LDE2ICsyNyw0OSBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCIgICAgCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CiAKLVdF
QkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLUNv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKK2NsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUlt
YWdlV2lsbEJlRGVsZXRlZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CiAKLX0KKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1J
bWFnZVB0ciYmKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgp
OworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9
CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2U7IH0K
KyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gbV9wbGF0Zm9y
bUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorCisgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZShtX3BsYXRmb3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworCisgICAg
dm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2Vy
dmVyOyB9CisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOworICAgIAorcHJpdmF0ZToKKyAgICBO
YXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0ciBt
X3BsYXRmb3JtSW1hZ2U7CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07Cisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHsgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3
N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFkMDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVj
dCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQotI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQot
dHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENB
SVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdl
UHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJkMDdmOTQ0ZTllMzk4ZmNmNTI0
ZmExOWVmMDQ1OTExMDEzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3Qg
Q0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJD
YWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2VsaWYgVVNFKERJUkVDVDJEKQor
dXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJpdG1hcD47CisjZWxpZiBVU0Uo
Q0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD47
CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxTaGFy
ZWRCaXRtYXA+OworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmluZGV4IDFiMDdmODZmMzkzMTc4ZjRjZjdm
ZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZl
ZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHZp
ZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA4YTVmNTg3MGEzNTM1NzNkODY5
NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgxNjY0YTI0MTk0OTNlOTViYTUz
Nzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5MTZmOTBhYmQwNzUzYTExNTU2
YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRkMGQzNDg0YjE1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC01NjcsNyAr
NTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBo
b2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmlu
ZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5YzFlYTYuLjI2YjNkNzhmZTFi
MGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBw
YWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKQEAgLTM0Myw3ICsz
NDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4g
bV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92
aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xh
c3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZjI5NDg4MTZlZGRlNzllNzhh
MTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uM2FiYmE5MmU1MDlhMjE0MDQ5ZDUwNDE2ZDY1MjQwMWM0
NjE4Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogewogICAgIHVwZGF0ZUxhc3RJbWFn
ZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSk7CisgICAg
bV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9s
YXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAK
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkxheWVyKQog
ICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7
CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/
IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKICAgICB1cGRhdGVEaXNh
YmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0yMjkzLDcgKzIyOTMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVU
eXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJ
bWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBidWZmZXIgdG9vayAiLCAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsKIH0KQEAgLTIzMTQsOCArMjMxNCw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9P
dXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdElt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAw
IH0sIG1fbGFzdEltYWdlLT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpt
X2xhc3RJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAog
ICAgIC8vIElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhl
IHBhc3QgZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAv
LyB2aWRlbyBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVk
LgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1
cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFz
dFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRU
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFs
cGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICByZXR1cm4gbV9sYXN0
SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2
MzIxNjE0ZGUxYjBhMzgwN2Y5YWIuLmEwYWY5Yjg3NGNhZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5
NGI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHVwZGF0
ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8aWQ+IG1fcGVyZm9ybVRhc2tPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1T
ZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3JnYkNvbmZvcm1lcjsKICAgICBSZWZQdHI8
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogICAg
IERlcXVlPFJldGFpblB0cjxpZD4+IG1fc2l6ZUNoYW5nZU9ic2VydmVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFi
YjBlLi44YmM0OGZhM2UzMjQ1MjU2NzVkOWU4Yzg4ZGY5ZjNhYzE3NDQwODg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC01NjQsMTAgKzU2NCwxMCBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAg
ICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7
Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOworICAgIHJldHVybiBtX2xhc3RJbWFnZTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpCkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fcmdiQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAotICAgIG1fbGFzdEltYWdlID0gbV9y
Z2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25m
b3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYyNiw4ICs2MjYsOCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAw
LCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdM
T2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQpAQCAtMTIxOSw3ICsxMjE5LDcg
QEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdl
KCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmgKaW5kZXggMDg4ZjFkOTJjOTdmMzkyNWJmOWE5YmMwYjIzNzlkMzUwYmRi
YmNhOS4uODc4MDk2YWRiZDZlMjVkNDMxODZiZWViMGJhZGY0NjhmODZjZTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgogICAgICAgICBD
dXJyZW50RnJhbWVQYWludGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAK
LSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2U7CisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY2dJbWFnZTsKICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtZWRpYVNh
bXBsZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBp
eGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggOTg5ZmI4OWRhMmFiMzhkMWYxYzE3ZDVhZmQxY2E4MjI2MDIyN2NiNC4uOWE1MzZkYjkyYjJl
MDQyZDg3ODE0YTllZWFhYTkzZWVjODM4OThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtNzYyLDcgKzc2Miw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgPyBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKQEAgLTk1
NSw3ICs5NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
bV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKQEAgLTk3
NSwxNCArOTc1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgaWYgKCFtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UuZ2V0KCk7
Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7CisgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXpl
KCkpOwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGlt
YWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Qu
c2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjli
MTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3
MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyAr
MTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkK
K3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRl
b0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRp
dmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlm
IChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29u
dGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGMwMDY5
YmRjZmJkNjFmZjc2NThlYWNkMTA2MDgyYWUwYzZmZDIwZDIuLjNjOGY3YzAyYTM5OWQxYWZkODdk
NmVmNzZjZWUxYjAzZjFlY2EzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAv
LyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNj
YWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNo
YW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBs
YXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFk
NGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMz
NDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5
TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0
aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpA
QCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRD
b2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA5YTU3ZWJlMmQ1NWEwNzljMzdmMWNhYjk2YTdmYjczZjVi
ZjQzOWJhLi5iOGY3NDVhYjcwZDBlMWMzM2IyZTI0OGZhNTVhNzEyM2FkZDc1YjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3NCwxNiArMTc0LDE2IEBAIGVudW0gUGF0aERyYXdpbmdTdHls
ZSB7CiAKIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxv
YXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVy
SW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qo
cm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRv
ciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1
dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgKm5h
dGl2ZUltYWdlLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJT
aXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBtb3N0bHkgc2FtZSBhcyBk
cmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0d28uCiBzdGF0aWMgdm9p
ZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
SW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewot
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4
dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRl
KCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsICpuYXRpdmVJbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3Rh
dGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNo
YWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtODYwLDcgKzg2MCwxMyBAQCB2b2lkIGRyYXdH
bHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNv
dXJjZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1
dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1Bs
YXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7Cit9CisKK3ZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBm
bG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAg
IHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3
ZDdhMGE1MGU5YzE5MDY2ZGQ5M2RlNTk2MWQ2NjkxYS4uYzg4ODEyMTQ5NWEyZTJkOTJmMGMzNGNl
Y2Y2NjYwYTQ2ZjlhZjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsOCBAQCB2
b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwog
CiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNl
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBv
aW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2ds
eXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBm
bG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dT
dGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNh
aXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lk
IGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmLCBPcmll
bnRhdGlvblNpemluZyBvcGVyYXRpb25TaXppbmcgPSBPcmllbnRhdGlvblNpemluZzo6Tm9ybWFs
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYwYzcw
NzY4MjBkMDZhNTViYTVjNTU4MjQ4YzMuLmRlYWM4YzgzZjgzMjIwZTZiMTUzYWVhMGFkMGJhMGEz
YWU3YTkxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNCArMTIz
LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3Jt
Q29udGV4dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUu
c3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAg
ICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1h
Z2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdl
KCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9w
dGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBk
cmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggOGVmNGY3ODZiNzI0OTE0MjQ1NmVmZjFmMGFk
ODIxNmNjOTA1NTM2Ny4uNTg2NTE4OTI2MzczYTBjMjI3NjA5ZmJlNjdkMDhmMTkwODFlNjI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODUsMTcgKzI4NSwy
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGRyYXdQbGF0Zm9ybUlt
YWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGxhdGZv
cm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5z
dGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGlt
YWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29u
dGV4dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNr
bmVzcykKQEAgLTQyMSw3ICs0MjYsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y2xpcEJvdW5kcygpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKaW5kZXggMWM4MjcxMzBjMmE1ZmUyOGY3NTM1ZTE5NDVhMzNkYzk2ODYyMDUxNC4uYjlm
YTI0Zjk1N2RlZDg3Nzg1NmY5OGY5NmVjOGI4NzJhMDAyOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDggQEAgcHVibGljOgogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIAogICAgIGJv
b2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5k
ZXggNGYxZjc1NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uZjU0ZmQ4N2FkYWJm
YjdmMmNiMzJiNTYzZjFmODRhNzE0M2EwMjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVy
biBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJl
aGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTgg
QEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50
KGNyLmdldCgpKTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUoY29weSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdT
dG9yZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUobV9zdXJmYWNlKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkp
ID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50
KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3
OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYw
Y2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
IDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRy
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJm
YWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4NDM0
MTU4YjRkMDMzMDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUzOTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFjZVNp
emUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlID8g
Y2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0KIAot
Ym9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jv
b2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdlIHx8
IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRf
Q09MT1I7CisgICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRf
Y29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CiB9
CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
KSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJ
bnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRT
aXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisg
ICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBD
QUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAg
dW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBpeGVs
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRpcGxp
ZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0aXZl
SW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFnZTo6
Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggY2Y4ZWMyOWI1
Y2U2NGE1MjAxN2I3NWQwOTBiNWY5MjZmZDU2MDEyYS4uMGExOTkwYWVhYzI5M2VkMTA5ODAyODk4
NTJlMjRhZThlNmZjNmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjgwLDExICsyODAsMTYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2Rh
dGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IFJl
dGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiAjZW5kaWYKQEAgLTQ0NywyMyArNDUyLDIzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLnByZVRyYW5zZm9ybWVk
TmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdo
dCh0aWxlSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzdWJJbWFnZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAg
IGlmICh0aWxlUmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJbWFnZSA9IHRp
bGVJbWFnZTsKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0
aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGlt
YWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdl
cyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVu
IHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5o
ZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aElt
YWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0
byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxv
YWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUg
bGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2Fs
ZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxl
SW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgp
ICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNw
YWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhl
IGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVy
LWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0
IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KQEAgLTUxMiw3ICs1
MTcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEZsb2F0U2l6ZSBi
dWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpOwotICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRy
OwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAv
LyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBh
biBhbHBoYSBtYXNrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGJiOTFkZWM5MTIy
NGQ0MTk3ZWNhODFiYmRiYzRlMDU2N2U0M2MwNGQuLjA0MDM5NDY5MTM1YzM1NTU1MjQyZWM1Yjlm
N2EyZjg2MzA5YzIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zMzgsOCArMzM4LDkg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJ
bWFnZS5nZXQoKSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0lt
YWdlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBtX2NnSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpOworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKTsKICAgICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC0zNDcsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGkKICAgICAvLyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUg
aW1hZ2UgcmUtcGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNv
bG9yIHRhYmxlIGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdl
dCgpKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNw
YWNlKGltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JT
cGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNl
TW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENv
bnRleHQ7CkBAIC0zNjIsMjIgKzM2MywyNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAg
ICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVu
ZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0
bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdl
V2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdl
V2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRp
c2NhcmQgdGhlIG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZy
b20gdGhlIGJpdG1hcCBjb250ZXh0LgotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwotICAgICAg
ICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1h
Z2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1h
cENvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAg
ICAgfQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNv
bXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0lt
YWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgaWYgKCFtX2NnSW1hZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1Bl
ckNvbXBvbmVudChpbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1h
Z2VHZXRCaXRzUGVyUGl4ZWwoaW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50
ICE9IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJp
dHNQZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRC
aXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBD
R0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3Vy
Y2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBp
bnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90
IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MTksNyArNDI0LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGkKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvTm90aGluZzsK
ICAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBzd2l0
Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgeworICAgIHN3aXRjaCAo
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAg
ICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvVW5tdWx0aXBseTsKQEAgLTQ2MywxNCAr
NDY4LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VG
b3JtYXQgPT0gRGF0YUZvcm1hdDo6TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFn
ZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CisgICAgbV9waXhlbERhdGEgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFn
ZS5nZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
Q0ZEYXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgc3Jj
VW5wYWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0
Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBD
R0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcg
PSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYg
KHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBA
IC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZVNp
emUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOworICAg
IGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFmYTVjMTdiMy4uNTRi
ODc4YjQzNDc2ZTE5YmQ2ZjYxNzFmOGI0OTYyNzc2M2UwZmIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcApAQCAtNjcsMjQgKzY3LDI0IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNl
dHVwQ29udGV4dCgpCiAgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNv
bHV0aW9uU2NhbGUpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNy
b3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplKQorc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBi
YWNrZW5kU2l6ZSkKIHsKLSAgICBpZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkg
IT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS53aWR0aCgpKSB8fCBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLmhlaWdodCgp
KSkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
aW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUu
aGVpZ2h0KCkpKSk7Ci0gICAgcmV0dXJuIGltYWdlOworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+
c2l6ZSgpICE9IGJhY2tlbmRTaXplKQorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVp
Z2h0KCkpKSk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogfQogCi1zdGF0aWMgUmVmUHRy
PEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxD
R0ltYWdlUmVmPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0
aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBj
b25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
bikKIHsKICAgICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGlt
YWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoV1RGTW92ZShpbWFnZSksIGJhY2tl
bmRTaXplKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVp
Z2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0Qmxl
bmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCks
IGxvZ2ljYWxTaXplKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9
IGxvZ2ljYWxTaXplOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBpbWFn
ZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJ
bWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFj
ZSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkp
OwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRy
PENHSW1hZ2VSZWY+CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHBy
ZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAg
ICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCkBA
IC0xMTQsNyArMTE0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBzcmNSZWN0U2Nh
bGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9y
ZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxl
ZCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2Us
IG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAog
dm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTM4LDcgKzEzOCw3IEBAIFJldGFpblB0cjxDRkRh
dGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpCiAgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1l
VHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHByb3RlY3RlZFBpeGVsQXJyYXk7CiAKICAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0
KCksIGpwZWdVVEkoKSkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlE
aW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAzMiwg
NCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtD
R0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Cisg
ICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKHBpeGVsQXJy
YXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAz
MiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CiAgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1
dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9w
cGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CkBAIC0xNjUs
MTIgKzE2NSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAgICAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndpZHRo
KCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCks
IHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkp
KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSwgaW1h
Z2UuZ2V0KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRT
aXplKCkuaGVpZ2h0KCkpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAg
aW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNv
bnRleHQuZ2V0KCkpKTsKICAgICB9CiAKICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKCFlbmNvZGVJ
bWFnZShpbWFnZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQorICAg
IGlmICghZW5jb2RlSW1hZ2UoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdXRpLmdldCgp
LCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHJldHVybiBXVEZNb3ZlKGNmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5j
cHAKaW5kZXggZmZlZjY2MzMwZDFmYmUyNmM0YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uMzU2ZWI1
MjYzMzc0MDcwODgzYTI5M2Q2NTBjNjg1NGI0N2VmZDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQgQEAgR3JhcGhpY3NDb250ZXh0JiBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICpt
X2NvbnRleHQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNo
IChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJl
dHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSkpOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1h
cENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKIAogICAg
IGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1h
Z2VDcmVhdGUoCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVh
dGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUuaGVp
Z2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNw
YWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBtX2RhdGFQcm92aWRlci5nZXQo
KSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5YmQ3ZjFiYWI0N2ZmN2M3OTc0MzQ4
MzNjMjdhNTQ5NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2RkZjA2M2M0YTg2NDhmZGZmYWNlN2Nm
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZGJj
M2I3ZWI4YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAzMC4uYTlkNTQ4NWEyNjFiNWEwZGY1
M2QyYjg5NzEwYWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZvcm1hdCBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9y
Rm9ybWF0OjpCR1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5KSBjb25zdAogewotICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0ZUlt
YWdlKCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9zdXJmYWNlLT5jcmVhdGVJ
bWFnZSgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKLSAgICByZXR1cm4gSU9T
dXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSk7CisgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJm
YWNlKSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1
bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAg
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChh
dXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRp
b25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0
MDMxMjRhOTA0MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIwMWZmYzBmYjU3N2NmYjgyYmZlYzY5
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC01MSw4ICs1MSw4IEBA
IHB1YmxpYzoKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNp
emVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUlt
YWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFn
ZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4OTBhMDcxODEwOTIzZjc1YmEwZTIy
OTNjNDZiZWE4NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcyOTdlOWIxMDI5NDM3MGExZTI3NTA2
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNv
ZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW0KICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5n
T3B0aW9ucykKIHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVyICVwIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1MTEzNTk1MWNkMWI1MzhiZGRmMWVj
ZTU0NTA2ZGRmNmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFmOGU5YTE5MDU3MzEzZDU1MTY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCmluZGV4IDQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1YmQ5Y2I2NDZhNWJhZGViZGFkYzIu
LmYyZmNlNGFhNGI3NzFkYWUzZmI0MmQ1ZGJlM2FhMTFmYjBlNmExMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBA
IC0zNywyMCArMzcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2
ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUlt
YWdlOjpzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAg
cmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIHBsYXRm
b3JtSW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChwbGF0Zm9ybUltYWdlLmdldCgpKSwg
Q0dJbWFnZUdldEhlaWdodChwbGF0Zm9ybUltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CiB9CiAK
LWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiti
b29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhhSW5m
byBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFnZUFs
cGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkp
OwogICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYm
IChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5h
dGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAgIGlmICghaW1h
Z2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlmICgh
bV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1
cm4gQ29sb3IoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKQEAgLTYw
LDcgKzYwLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRt
YXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBtX3BsYXRmb3JtSW1hZ2Uu
Z2V0KCkpOwogCiAgICAgaWYgKCFwaXhlbFszXSkKICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFu
c3BhcmVudEJsYWNrOwpAQCAtNjgsMTEgKzY4LDExIEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4g
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFszXSk7CiB9CiAKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAj
aWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBTdWJpbWFnZUNhY2hl
V2l0aFRpbWVyOjpjbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyAgICBpZiAobV9wbGF0Zm9ybUlt
YWdlKQorICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKG1fcGxhdGZv
cm1JbWFnZS5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggY2JmNjI0ZjYyNzNjM2I1N2FiOWYz
ZGJjYzVhYjE3ZDVlMzE5NmQ0YS4uNjk1NGM1NjY1NzBhZDdhZTZjMWU3NjBmMDc4N2QzNzcwYWNh
YTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCkBAIC02MywxMCArNjMsMTcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRy
YW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJ
bWFnZSgpLm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIAorICAgIGlmICghcGxhdGZvcm1JbWFnZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBk
aXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3Rl
YWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tz
LgogICAgIGlmIChtX3JlcGVhdFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gQ0dQYXR0
ZXJuQ3JlYXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBwYXR0
ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAg
cmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0
dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAv
LyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3Ro
aW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8g
cmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC03NywxMCArODQsMTAgQEAgQ0dQ
YXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGls
ZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxsIHJl
bGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRlcm5S
ZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpLmxlYWtSZWYoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxhdGZv
cm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVy
bkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
IH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIENHUGF0dGVybkNy
ZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NH
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
aW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0KaW5kZXggNTEzZjQ1NWNhZDhlNWU2MDUyNzI4ZDM0N2MzOTNkOWY0NDdmZTM4OC4uMmZhYjY5
ZTAzMzI2YzM3YjRjM2MxYzk4M2Q5NDA4OWEyMThjMjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIFJl
dGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JT
b3VyY2VHcmFwaGljKFNvdXJjZUdyCiAgICAgaWYgKGlzPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+
KCpzb3VyY2VJbWFnZSkpCiAgICAgICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhJT1N1cmZh
Y2U6ZG93bmNhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKS5zdXJmYWNl
KCkuc3VyZmFjZSgpXTsKICAgICAKLSAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFn
ZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIHJldHVybiBbQ0lJ
bWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpXTsKIH0KIAogUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkVDb2xvck1h
dHJpeCYgZWZmZWN0LCBjb25zdCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYgaW5wdXRJbWFn
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGQ2YmUyNzRjNjhkZWVmYjRjMGQ1MzYxYmU2
NDgxNTI0MDMyYzlmNDEuLjFkZDRhMjRhZjJlODg3MzM5MjM3ZTlhMGRhMTMwZGQ2YjI2NDEzZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02OCw2ICs2OCw3IEBAIGVudW0gY2xhc3MgSXRl
bVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwKICAgICBEcmF3SW1h
Z2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdQbGF0Zm9ybUltYWdlLAog
ICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDQ3Yzc2MmUxYTYxOTdkNmM4YjhjNDVmYTlj
ZmRjMDVhMDNkZWU1MWIuLjEyMDU2MjI4YTk3MGE3NzljODM2NmY5MzkyMWU5NmQyYzM1OGQ5OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTExOCw2ICsxMTgsOCBA
QCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAgcmV0
dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3Jt
SW1hZ2U6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1hZ2U+
KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJu
IHNpemVvZihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgpAQCAtODU5LDkgKzg2MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCiAgICAgcmV0
dXJuIHRzOwogfQogCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotICAgICwg
bV9pbWFnZShpbWFnZSkKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAg
ICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3Qp
CkBAIC04NzEsMTIgKzg3Myw0MCBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogCiBEcmF3TmF0
aXZlSW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgRHJhd05hdGl2
ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit2b2lkIERyYXdO
YXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKLSAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3Qs
IG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICAvLyBTaG91bGQgYmUgaGFuZGxlZCBieSB0aGUg
ZGVsZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0
ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsK
KyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgorICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVt
b3RlLXJlc291cmNlLWlkZW50aWZpZXIiLCBpdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjpEcmF3UGxhdGZvcm1J
bWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBEcmF3aW5nSXRl
bShJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2UpCisgICAgLCBtX2ltYWdlKGltYWdlKQorICAg
ICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQorICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJl
Y3QpCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQor
eworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6fkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBkZWZhdWx0
OworCit2b2lkIERyYXdQbGF0Zm9ybUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShtX2ltYWdlLCBtX2lt
YWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKK30KKwor
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQ
bGF0Zm9ybUltYWdlJiBpdGVtKQogewogICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdp
bmdJdGVtJj4oaXRlbSk7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KQEAgLTE2Nzcs
NiArMTcwNyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2Fs
ZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5h
dGl2ZS1pbWFnZSI7IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdl
OiB0cyA8PCAiZHJhdy1wbGF0Zm9ybS1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TGluZTogdHMgPDwgImRyYXctbGluZSI7IGJyZWFrOwpAQCAtMTgwMCw2ICsxODMx
LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYg
aXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAgICB0cyA8PCBkb3duY2FzdDxE
cmF3UGxhdGZvcm1JbWFnZT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRl
bSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXgg
ZjAxNWJlNWU4NjYwNmVjYzJmNmNlODU3YzFmNzExNjc2OTRmZThlMy4uN2I3ZTlhMGU3MGRlYzcy
ZjgyOTMzMzRjNGI5ZDU2YTRkMzJmMDI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCkBAIC0xNzAxLDI3ICsxNzAxLDMwIEBAIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+
PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiBjbGFzcyBEcmF3
TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERyYXdOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKTsKIAorICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25S
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1h
Z2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIERy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3
TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsK
KyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTczMSw3ICsxNzM0LDcg
QEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJbWFn
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtX2lt
YWdlOworICAgIGVuY29kZXIgPDwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAg
ZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0
OwogICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTc0MSw3ICsxNzQ0LDc3IEBAIHZvaWQg
RHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2
ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxOYXRpdmVJ
bWFnZVB0cj4gaW1hZ2U7CisgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFNpemU+
IGltYWdlU2l6ZTsKKyAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsKKyAgICBpZiAoIWltYWdlU2l6
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZGVzdGluYXRpb25SZWN0OworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWN0OworICAg
IGlmICghZGVzdGluYXRpb25SZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzcmNSZWN0OworICAgIGRlY29kZXIgPj4gc3JjUmVjdDsK
KyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+IG9w
dGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9u
cyk7Cit9CisKK2NsYXNzIERyYXdQbGF0Zm9ybUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdQbGF0Zm9ybUltYWdlPiBjcmVhdGUoY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5E
cmF3UGxhdGZvcm1JbWFnZSgpOworCisgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3JjUmVjdDsgfQorICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+PiBkZWNvZGUoRGVjb2Rl
ciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQorCisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2ltYWdlOworICAgIEZsb2F0U2l6ZSBt
X2ltYWdlU2l6ZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRS
ZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9Owor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlOworICAg
IGVuY29kZXIgPDwgbV9pbWFnZVNpemU7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVj
dDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3UGxhdGZvcm1J
bWFnZT4+IERyYXdQbGF0Zm9ybUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxQbGF0Zm9ybUltYWdlUHRyPiBpbWFnZTsKICAgICBkZWNvZGVyID4+IGltYWdl
OwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNzY2
LDcgKzE4MzksNyBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUlt
YWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVh
dGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlv
bnMpOworICAgIHJldHVybiBEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKCppbWFnZSwgKmltYWdl
U2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKIH0KIAogY2xhc3Mg
RHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewpAQCAtMzMzMiw2ICszNDA1LDkgQEAg
dm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd05h
dGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQbGF0Zm9ybUltYWdlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQbGF0Zm9y
bUltYWdlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhpcyk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzU1Myw2ICszNjI5LDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVt
Pj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IERyYXdQbGF0Zm9ybUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGlm
IChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0z
NzI3LDYgKzM4MDcsNyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
RHJhd1RpbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
RHJhd1RpbGVkU2NhbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0ltYWdlQnVmZmVyKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKERyYXdOYXRpdmVJbWFnZSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3UGxhdGZvcm1JbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3UmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3TGluZSkKQEAgLTM3OTgsNiArMzg3OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGQx
NDJjMzc3OWNiOTkzZTczNzJiYjhiODg4N2ZjYzRjNzUyZmU5ODkuLjQwZmNhYWFhNDUzNmZiNTA1
NWYzOTQyNDVmZDA2Y2I5Y2Q5ZmM1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKQEAgLTE5NCw5ICsxOTQsMTggQEAgYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWMK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIFJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKSk7CisgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX2RlbGVnYXRl
LT5sb2NrUmVtb3RlTmF0aXZlSW1hZ2UoaW1hZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVjb3JkZXI6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdQbGF0Zm9ybUltYWdlOjpjcmVhdGUo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKIH0KIAogdm9p
ZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMzFjOGM4OTYzNzhjMGNhZmJiMjEx
Mjg5NTk3Y2VlMjhiNGZhNzVkMi4uYjg4OTU2YTk5YjJiOTk1Y2M4MzA3MGJhOTM3YjcxNjc0Njg4
NDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Niw2ICs2
Niw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkg
eyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgbG9j
a1JlbW90ZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsKQEAg
LTEwOCw3ICsxMDksOCBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApp
bmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4MDNhZGMyOGY0ZjI3MWVmZjU4OWI3Li5jMGFhZTNhN2Q0
OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2ZDdkNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2Ft
cGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlKCkgY29uc3QKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAgICAgICByZXR1cm4g
bV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfQog
ICAgIHZvaWQgZHJvcEltYWdlKCkgeyBtX2ltYWdlID0gbnVsbHB0cjsgfQogCkBAIC0xNzksNyAr
MTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xk
ZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaAppbmRleCA2ZTJlYTA3OTdiZDNjZmQzZTlkNDUwMDg0OTY4ZThkMzMz
OTU5YTdkLi41ODY5ZDhjODZhNDE5NGQzZTM4OGVjOTIwZTUyNTdlNzgyNjkxYWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CiAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9CiAgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzRjZTEyZGI3
MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1ZTY3OTIxOC4uZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2
YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUsNyArMzIxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBvdXRwdXRUZXh0dXJlLCBv
dXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwg
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4ODY2N2Q3YzMyYzE1ZThm
Y2ZkZTdkYmM0OTliNTFkYWViLi4wYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkwOGFk
MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBA
IC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
ICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZpZGVvVHJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggODEzNmMxZmZmNDViOWEzMTc3
YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYzI0Nzk1ZjUwOWEzMzZlZjBkN2IxNzFkMjY2NDQ2Y2Fh
ZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
SWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpA
QCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0
cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogewogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEljb246OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAg
ICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogCiAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpIaWdoKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2NnSW1hZ2UuZ2V0KCksIHNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1fY2dJbWFnZSwg
c2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggNjkwOGYxMDc2MzJlODkwMThj
YTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4uOWJiNTAyODkwYzY5ODhmMzdlYmRkYjkyMzUyMTNjNWI0
ZmU1MmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbQpAQCAtNzQsNyArNzQsNyBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdl
KCk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYgbmF0aXZlSW1hZ2VzKQorUmV0YWlu
UHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0
b3I8UmVmUHRyPE5hdGl2ZUltYWdlPj4mIG5hdGl2ZUltYWdlcykKIHsKICAgICAvLyBJZiBuYXRp
dmVJbWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBk
b2Vzbid0IGhhdmUgdmFsaWQgZGF0YQogICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBjYWxsIHRvIENH
SW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdpbGwgZmFpbCBhbmQgd2UnbGwgaGFuZGxl
IGl0IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4OSw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEJp
dG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRy
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBuYXRpdmVJ
bWFnZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2Uo
ZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLmdldCgpLCAwKTsKKyAgICAgICAgQ0dJbWFn
ZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUo
ZGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggNjI5OGNmMzYwNzNjN2FlNDRmNDNjNmI1NjQ0MjJiMzdi
ODZjZjEwNy4uZmMyY2JiNjhlYjJjNDAxYmZiMTc3MGFmYmFjYzk2ODUyOTY5MDg3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2
b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZS0+c2l6
ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUlt
YWdlSGFzQWxwaGEobmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6
IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJl
c2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9y
dHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNFKENBSVJPKQotICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2Up
KTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2VEYXRh
LCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggYTJjOWUwOTNmYzE0
YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1NS4uMmU5ZWVjOGZmNDZlZjQ5NGZkOWIzMWUwMGI5
OWU3ZTQ0OGVkMzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NSwyNSArNTU1LDMxIEBAIGJvb2wgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQorYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7Ci0gICAgc3RydWN0IERyYXdOYXRpdmVJ
bWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMs
IGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKLSAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2
ZUltYWdlKCkgPSBkZWZhdWx0OworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQbGF0
Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBzdHJ1
Y3QgRHJhd1BsYXRmb3JtSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CisgICAgICAgIHZp
cnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhl
Y3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShy
ZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBh
cmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdl
KGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFy
ZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAg
ICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3TmF0aXZlSW1hZ2U8PlxuIjsKKyAgICAgICAgICAg
IHRzIDw8IGluZGVudCA8PCAiRHJhd1BsYXRmb3JtSW1hZ2U8PlxuIjsKICAgICAgICAgfQogICAg
IH07CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdy
YXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05h
dGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkp
KTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGxhdGZvcm1JbWFnZT4oUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0
YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpA
QCAtNTk0LDcgKzYwMCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRl
cm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAKICAgICBVTlVTRURf
UEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0
ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKKyAgICAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZS0+cGxhdGZvcm1J
bWFnZSgpKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCkBAIC0xMDc5LDcgKzEwODUsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0lt
YWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLmdldCgpKSwgZGVzdFJl
Y3QpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSksIGRl
c3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCAzODA5M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNm
NjAzZWQxM2JhLi5kODg0YTFmMmM3OTVhNzczY2U3ZmFkYmQ3NGQ5MDA1YzI1MzI3N2U5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9y
bUltYWdlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJ
bWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmlu
ZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0MjQxODBjOGFiNWQwYzkuLmE2MTEwOTJlYzkx
NDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KIHsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWVJbWFnZSA9
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWVJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCi0g
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5nZXQoKTsKKyAgICBjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7
CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMmFiZjQzODJk
MzAwZjRlMWQzMzIxOTMxZWE5OWRhNDQ0ZmExZTM4Zi4uMGRkZmE5NjRhMWViMGJlYzVjNjNmYmQ5
MGYxYTEyNThlNTE5YjQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVy
OjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzCiAKIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihUeXBlIGxh
eWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50KQogICAgIDogR3JhcGhpY3NMYXll
cihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDAp
CiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFs
c2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKQEAgLTI5NCwyNiArMjkzLDI2IEBAIHZv
aWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSog
aW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9u
IGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBjaGFuZ2VkLgotICAgICAgICAvLyBUaGlzIGNv
ZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgTmF0aXZl
SW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4K
KyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBl
cXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0
aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhpcyBhc3N1bXB0aW9uIGlzIHRydWUg
Zm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdl
UHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICgh
bmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1dG8gbmV3TmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2VQdHIg
PT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGlmIChuZXdOYXRpdmVJbWFn
ZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5ld05hdGl2ZUltYWdlUHRyOworICAg
ICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5ld05hdGl2ZUltYWdlOwogICAgICAgICBp
ZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgICAgICBtX2NvbXBv
c2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICAgICAgbV9jb21wb3Np
dGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VT
Y2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbnVs
bHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fY29tcG9zaXRlZEltYWdlLmdldCgpLCBDb250
ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KG1fY29tcG9zaXRlZEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlOjpJbWFnZSk7CiAgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRDaGFuZ2UpOwogICAgIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDNiM2E0ODMzMDE1YzVjNzljZDZlNmM5MzBl
MmI1NzdmNDE0ZjQxNTQuLjU4ZjRmMzY1ZDI1NzM0NzcyOTMyN2FmYmNhZDE4YzdjMTRjM2VlOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aCIKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJMYXllciBt
X2xheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fYmFja2Ry
b3BMYXllcjsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2Nv
bXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlOwog
ICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3Jl
OwogCiAgICAgaW50IG1fY2hhbmdlTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDUyYzVkYjA3NzYwZWY3Y2Yx
NWYwOWMyODM3OGZjZmQ0ZDgwZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEwMWFiMDk2Y2FiMzY2Mjcw
YzQ0ODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNiBAQCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NM
YXllcgogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50KGZhbHNlKQogICAgICwg
bV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigw
KQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fYW5pbWF0aW9u
U3RhcnRlZFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25T
dGFydGVkVGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVl
c3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4NSwxMiArNTg0LDEyIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9v
bCBzaG93KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0ciA9
IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRyOwot
ICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0ciA9PSBuYXRpdmVJbWFnZVB0cikKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ug
PyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51bGxwdHI7CisgICAgaWYg
KG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID09
IG5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9
IGltYWdlOwotICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbmF0aXZlSW1hZ2VQdHI7
CisgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZTsKIAogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAgbm90aWZ5Rmx1c2hSZXF1
aXJlZCgpOwpAQCAtODQ5LDExICs4NDgsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIG1fbmljb3Np
YS5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQgPSB0cnVlOwogCiAgICAg
Ly8gRGV0ZXJtaW5lIGltYWdlIGJhY2tpbmcgcHJlc2VuY2UgYWNjb3JkaW5nIHRvIHRoZSBjb21w
b3NpdGVkIGltYWdlIHNvdXJjZS4KLSAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIp
IHsKKyAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAgICAgICAgQVNTRVJUKG1f
Y29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgYXV0byYgaW1hZ2UgPSAqbV9jb21wb3NpdGVkSW1h
Z2U7CiAgICAgICAgIHVpbnRwdHJfdCBpbWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZpbWFnZSk7Ci0gICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyLmdldCgpKTsKKyAg
ICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAg
ICAgICAgLy8gUmVzcGF3biB0aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBpZiB0aGUgdW5kZXJseWlu
ZyBpbWFnZSBjaGFuZ2VkLgogICAgICAgICBpZiAobV9uaWNvc2lhLmltYWdlQmFja2luZykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CmluZGV4IGVlOGY1Nzg3OWFkYTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNlMTNlNDEuLjlmMGUxNDk2
YmRjYzVkMmRiNmE5ZTY2YjAyNDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTIyMyw3ICsyMjMsNyBA
QCBwcml2YXRlOgogICAgIH0gbV9uZWVkc0Rpc3BsYXk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1f
Y29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUlt
YWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7
CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAgICBSdW5Mb29wOjpUaW1l
cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25U
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDU3YmE4NThmZjk5YzJk
YjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkuLjE3ODA3MjkzODg0NjVjOTZlODA5MDYzYTM4ZWFi
YTRiZTE0MzdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDEx
ICsyMDcsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkK
ICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQx
Qml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUlt
YWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNT
RVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRl
KCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGlt
YWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5h
bHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGM1M2Q4YmY4NWMwOTkzODgyOTI0OGY4MmRkZDkxYzlk
ZTMzYzA3ODMuLmE1NmEzYjQxOWQ1ZWQ0YzQzZTRmNmYxYmE4YWNhNTYwMzY0YzBiNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0yODMsNyArMjgzLDEyIEBA
IEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdUaWxlZElt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQoreworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5z
dGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQs
IGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0
ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOTVlYjM3MGI3NWJhZGUwMzlkNmY5NDg3MmFlYWY0Y2Yx
ZTVlNTNjYy4uNWY5MGZmMWYxYjlmMDJiYjMxN2IxNjNkZjczNjEzYzI2ZmI1ZGE0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNzEsNyArNzEsMTAgQEAgcHVibGlj
OgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKKyAgICAKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
Y3BwCmluZGV4IDdkMjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3YjY0ZTgxYzVjOTQuLjY1NmNi
MTRlNzI4OGYyM2E4OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVh
dGUoYwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgYml0bWFwOwogICAgIEhS
RVNVTFQgaHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1hcCk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpj
cmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHImJiBiaXRtYXApCitJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXAp
CiAgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KFdURk1v
dmUocGxhdGZvcm1Db250ZXh0KSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmZsdXNo
Q29udGV4dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIElt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IpIGNvbnN0CiB7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBU
YXJnZXQ7CiAgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVu
ZGVyVGFyZ2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQpOwpAQCAtMTMzLDEwICsx
MzMsMTAgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAgIH0KIAotICAgIHJldHVybiBp
bWFnZTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9
CiAKLXN0YXRpYyBOYXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJ
RDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2Us
IGNvbnN0IEludFNpemUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUNy
b3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJn
ZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogewogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgOiBGbG9h
dFNpemUoKTsKIApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcK
IAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVS
ZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQotICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAg
ICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwogCiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElE
MkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICAg
ICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJn
ZXQsIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHBy
ZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBAQCBSZWZQdHI8SW1hZ2U+IElt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICByZXR1cm4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQuZ2V0KCksIFdU
Rk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZl
UmVzb2x1dGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCitQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0
bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CiAgICAgbG9hZERhdGFUb0Jp
dG1hcElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXgg
Y2VmMzllYTc5MjExZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2MS4uMWQ1NzRhZWVjZGI5ZDIy
ODAyMTRmMWMwY2FmNWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7
CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVD
b3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3ZlcnJpZGU7CkBAIC01OSw3
ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gbV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdlUHRyIG1fYml0bWFwOworICAg
IFBsYXRmb3JtSW1hZ2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
R1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKaW5kZXggNzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTkyMTMzZDU1M2NkM2E0Yi4uOTAz
YzUyZDMzMGIzYjljYzU1YjVkYWE2NTMzYzBhMzFmNGU0MmQyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtOTEsOCAr
OTEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBm
cmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewot
ICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0g
ICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CisgICAgICAgIGF1dG8gaW1h
Z2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5z
aXplKCkgPT0gc3JjU2l6ZSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1f
Y3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAgICAgICAg
ICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0
aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRl
eCBkNGVhZmM1OTlhMDBmMjM5NTc4OTJlM2NhYTJlODVlYmNlMzgwNWMwLi5jY2FlYmU2NDQyZDEw
ZjgzNjk2NzhiYmI0MDc3ZDZkOGE0Yzk3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Mywx
MSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFt
ZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoIW5hdGl2ZUlt
YWdlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBzdXJmYWNlID0gbmF0
aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYz
YjU0NjkwZmNjMjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBj
ZjAxNDc2ZTFlOTFlNjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJE
MVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVy
VGFyZ2V0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
IHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVl
YWNjZjE3ZTAuLmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJl
Y2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1
MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uZWFjN2NiZTYxN2I5YjdmOTVhYWY2N2NhYjk1OTk2OWM5
ZDljYTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtNTAsNjAgKzUwLDM2IEBAIHN0
YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKICAgICByZXR1cm4gaW1h
Z2luZ0ZhY3Rvcnk7CiB9CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBVSU5UIHdpZHRoID0gMDsKLSAgICBVSU5U
IGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAg
IHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2Ug
PyBwbGF0Zm9ybUltYWdlLT5HZXRQaXhlbFNpemUoKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBu
YXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0
aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlKQorICAgIGlmICgh
bV9wbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEMkQxX1BJWEVM
X0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOworICAgIEQyRDFf
UElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1h
dCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RF
X0lHTk9SRTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVs
U29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUo
aW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6
ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKLXsKLSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpOwotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2Ug
dGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdl
U2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRo
ZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1h
cCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNS
ZWN0ID0gc3JjUmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQot
ICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0s
IHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBh
dXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUlt
YWdlKCpwbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6
OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdl
cyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1
YmltYWdlcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogI2lmIENBQ0hFX1NVQklNQUdF
UwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1h
Z2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2Fj
aGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgog
fQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjlj
YWU4Zjk3ODE1MTA0MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3
MGI1MWY1ZWY1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgU2Vjb25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1Bs
YXRmb3JtSW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1o
ZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2
ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCmluZGV4IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4
MzIyMmVjM2JiMzg1NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1h
QW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRl
eCBiODM1YTY5Y2JjNDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQz
MTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAg
bV9waXhlbHMtPnJlZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0
MGViZTc2YWYwMzFmYTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcw
NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzks
MTEgKzIzOSwxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgp
CiAKICAgICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2Uu
Z2V0KCkpLCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAot
ICAgICAgICBbXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAg
ICAgICBbXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAg
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAg
ICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7
CiAgICAgICAgIH0KICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2lt
YWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1w
bGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0o
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAg
ICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJl
ZlB0cjxNZWRpYVNhbXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1l
ZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaAppbmRleCBmZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZi
MjQ0YTQ4NDkzZDJhNWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVjsKIAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJh
bWVUeXBlID0gV1RGOjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4+OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8
UmVmUHRyPE5hdGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNz
IENhcHR1cmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExv
Z2dlckhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4
IDNmNmNiNmVkNWRmYTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLmIwNTlhMzI1MWQ4Yjk2
NTdiYTkwMTRjNDRmODA2M2FmODI3YjFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWMubW0KQEAgLTkxLDggKzkxLDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uKQogICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CiAKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3Jt
SW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgYXV0byBzYW1wbGVU
aW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21z
KS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJ
bWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOworICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFT
YW1wbGUocGxhdGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3Rh
dGlvbigpKTsKICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAxZGJl
ZDM2NTQ1NmUyMjgzYWQ0ZTBhZGFhMWI3Yzc1YzkzNzdjMmYxLi4zNGVkOWVmOGNmNGY4NjZjYTAz
ZmRjYTkzMDRhOTYwOTZiYzY1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEzOSw4ICsxMzksMTAgQEAgRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4
dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKICAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGlt
Zy0+bmF0aXZlSW1hZ2UoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0Nv
bnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShk
cmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybUltYWdlID0gc3JjSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkgeworICAgICAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOworICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBwbGF0Zm9ybUlt
YWdlLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdD
b250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmlu
ZGV4IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjExMWE0YjJjMzU1
YzA3Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFpbnRJ
bmZvJiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0Lndp
ZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFkZ2VE
aW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dSZWN0
TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogCi0gICAgQ0lJbWFn
ZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1h
Z2UoKS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0
aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKIAog
ICAgIC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0aCBp
biB0aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAgIFJldGFpblB0cjxD
R1BhdGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KGFi
c29sdXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8gMiwg
bnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
NjNlZGYxMmUyMTMzMzBkZjJkYWNiOTY1NDAyNTY1MzE2M2I0MGJjMS4uYjA2MGQ3MjgyOWNiNzFk
MzBiNmJmMjg1YTMzYmI3OGVjYTc5YTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdl
OjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQK
IH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBp
bWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3du
ZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZSBu
ZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikK
K1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogI2Vu
ZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJn
ZXRDb250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAgICBpZiAoIW1fcGFn
ZSB8fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgK
aW5kZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQyOC4uMjgyNWY5ZDM4
OThkOGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51
bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlm
CiAjaWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsK
ICNlbmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNkNjVmNWU4MzFiMzFh
ZjM2NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRh
aW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBlNjQ0ZjdhY2Yz
MGVjMjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUwNTNjNTkyMjU3Mzcw
ZjJiOGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wg
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJ
bWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5OTExMWE3ODkwYjU3ODVmNGUxMDYyZDY4ODIw
NjU0N2Q1MjUwM2JkLi4xMWJmOGZlMmVmNDA4YmFlOTE2ZDRmZTA2YTdmNDNkNTk5ZGRkYjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNyw3ICsyMTcs
NyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAg
ICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
cicsCisgICAgICAgICdXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJywKICAgICAgICAgJ1dlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGRiMDhjNDMxOGFlODU1YzhiYzU3ODE5
MmRmODYxYTgxNWFiMGIyMzkuLmU1NzEzZTMwMWY2MDI2YmNiNmRiNjIxZjRlZjRiN2UxMGY2NTE5
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdl
UmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogCiAgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBn
cmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3Qs
IHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzMzc5
NTk2YmU2OWQ5MjRhZTBjYTZkOGY5ZjFmZmIwMWIyMGMzZDZjLi41ZWU5MzM1NWQ3MzZhNWVkYTAx
ZWNlNGI0Y2M1NWIyOGNjMDgwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsMTYgKzExMDAsMTYgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxl
JiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlTmF0
aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
c3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1JbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGF1dG8gaW1hZ2VTaXplID0g
bmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IE5hdGl2ZUltYWdl
OjpzaXplKHBsYXRmb3JtSW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEh
Z3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUp
KTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2Us
IGltYWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1h
Z2VTaXplKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgYml0
bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKQEAgLTExMTcsNyArMTExNyw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2
ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBs
YXRmb3JtSW1hZ2UpCiB7CiAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250
ZXh0OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwpAQCAtMTEzNiwy
NSArMTEzNiwyNSBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZl
SW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdAogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBwbGF0Zm9ybUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
dm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1J
bWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUlt
YWdlKQogewotICAgIGJvb2wgaGFzSW1hZ2UgPSAhIWltYWdlOworICAgIGJvb2wgaGFzSW1hZ2Ug
PSAhIXBsYXRmb3JtSW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKIAogICAgIGlmICho
YXNJbWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAg
ICAgICBlbmNvZGVQbGF0Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShE
ZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29k
ZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgaW1hZ2UgPSBudWxs
cHRyOworICAgIHBsYXRmb3JtSW1hZ2UgPSBudWxscHRyOwogCiAgICAgYm9vbCBoYXNJbWFnZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKQEAgLTExNjMsMTcgKzExNjMsMTcg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAgICBpZiAoIWhhc0ltYWdlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFn
ZSk7CisgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFn
ZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIEFyZ3VtZW50
Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAgIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFn
ZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJu
IGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBk
ZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBhYmNhMDI0MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0
OTZiMDliOTJiOGUzLi5mOTFjYjkxMmEyOTQyZmRjYjBkNTk2NzJjNDc4YmM0ZjhiYjk2NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9u
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZVB0ci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC00MTksOSArNDE5LDkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Oklt
YWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHI+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNk
NWY2OTg4YjIxMTU4OGRhN2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2
ZTc0MzMxNzdiOTAzZGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKQEAgLTE4NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6
OnJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lk
KgogCiBSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAg
ICBpZiAoIXBsYXRmb3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYg
KGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1ODg2N2ViMmEw
ZmM0ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLmU2MzAwOTQ4YWE4OGQ3MWI1Mzc3ZTRhYzEwN2M5MDY4
NTk5OTA3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVj
a0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
CiAgICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyArNTYyLDcg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBh
Z2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRl
ZEljb25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRh
ID0gdGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBt
X2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1fbG9h
ZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4s
IE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxvd0Rh
dGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFzZVdy
aXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVS
TCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIs
IE1vbm90b25pY1RpbWU6Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
bG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFn
ZT4sIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CiAgICAg
ICAgICAgICBpZiAoIWljb25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8g
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdl
LT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkg
PCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkgewpAQCAtNjIyLDcgKzYyMiw3IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNM
b2NrKTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNv
blVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxw
dHIsIHsgfSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNl
dChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNU
aW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0YVNpemUpIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0
YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgK
aW5kZXggOTYxMmY5OWMyY2ZiN2M1MTM2NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uNWM3NjkwMTdm
OWU0ZGUxODc2Y2Q0YWY1ZTE3Y2NkMWNjMWFkNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQ
YWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29s
KT4mJik7Ci0gICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dE
YXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyJiYpPiYmKTsKKyAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBB
bGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiYmKT4mJik7CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkws
IEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEs
NyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV9wYWdlVVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9w
YWdlVVJMVG9JY29uVVJMTWFwTG9jazsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4s
IE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZEljb25zOwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xv
Y2s7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2lj
b25JREZvckljb25VUkxTdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBh
ZGZmYTYyZTQ3N2I3ODM5MzYzYzI1ZTk4MDI5Li5iZjAzZTQzZjBmZDkxZTczZGE4MDlkYzMyZDE0
NDUzOWExNGY0ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMg
UmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0
aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCld
KTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBib29sIHNo
b3VsZFVzZURyYWdJbWFnZVRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1Nv
dXJjZVN0YXRlJiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkZDg5YzBmMGFmYTgyYjEzMGQ1
MjQyZWQxYzk5ZDZlMmJiZjU1ODg5Li45NDRiNWE3YjFjY2RhM2JhYjBhZWU3ZWI2N2Y5NmQ3OGVh
ZDkxZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc1MDMsMTMgKzc1MDMsMTMgQEAgc3RhdGljIE5T
QXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNz
aW9uKGlkIDxVSURyb3AKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB1bnNlbGVjdGVkU25h
cHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0aXZlSW1hZ2UoKTsKLSAg
ICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlKQorICAgIGlmICghdW5zZWxlY3RlZFNuYXBz
aG90SW1hZ2UgfHwgdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5n
ZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdl
T3JpZW50YXRpb25VcF0pOworICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXRE
cmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVk
U25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgX3Vu
c2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGlu
aXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAg
ICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKIApAQCAtNzczMiwx
MSArNzczMiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJbWFnZShX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICgh
Y2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Cisg
ICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRo
Q0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0p
OwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggY3JlYXRlVGFyZ2V0
ZWREcmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuCkBAIC03OTkxLDEzICs3
OTkxLDEzIEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9s
ZGVyRWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvIHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2VsZWN0aW9uLT5u
YXRpdmVJbWFnZSgpOwotICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlKSB7Cisg
ICAgICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgfHwgdW5zZWxlY3RlZFNuYXBzaG90
SW1hZ2UtPmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwg
IkZhaWxlZCB0byBhbmltYXRlIGltYWdlIHBsYWNlaG9sZGVyczogY291bGQgbm90IGRlY29kZSB1
bnNlbGVjdGVkIGNvbnRlbnQgaW1hZ2UuIik7CiAgICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERl
bGF5ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBh
ZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hv
dEltYWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgICAgIGF1dG8gdW5z
ZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9y
aWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgICAgIGF1dG8gc25hcHNob3RW
aWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0
ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgICAgICBbc25hcHNob3RWaWV3
IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgYWRkU3VidmlldzpzbmFwc2hv
dFZpZXcuZ2V0KCldOwpAQCAtMTAwNDEsNyArMTAwNDEsMTIgQEAgc3RhdGljIFVJTWVudSAqbWVu
dUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhVSVZpZXdDb250cm9sbGVyICpwcmV2
aWV3VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29u
dGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0
b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAg
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0
b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwg
bmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAg
ICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9w
cmVzZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNv
bnRyb2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTc2YzA2MzhjN2RhMmEwNGYxZTA4OWJjNGQ0OTBmMjI0
Yjg3ZDIxNi4uYWNlZjAwNzkzM2UyZjJjZDBlNjdiMjQyZWYwMTA1YTJiMTQzYjRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtOTYs
MTAgKzk2LDEwIEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAog
ewogI2lmIFVTRShDRykKLSAgICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOwor
ICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHko
KSk7CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxpZiBVU0Uo
Q0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApp
bmRleCAwNWMxMDljZDIwMjZkMTVmODBlYjgzMmFkOWYxYjdiYTMzYmI5NTU3Li45ZTI0YWI5OWVi
YzY3NWNlMjAxYTU5Mzk3MjhjNjE5ZGJhNTk1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gKm1fY29udGV4dDsgfQogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
PiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRv
QkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBjYTAyNTJhNDZlMmMwNzFmZmQ1MzRiODMzZGJiNDU1NTg2N2VkNTgzLi43OWEyMTE0YmEy
NDk3MDJjYzU1NDdmZmExM2IzM2MzOTYwODY0OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC04MTEsNyArODExLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IDVmODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjBk
NzU1MmY0OTNmMDc0MjQxMmE2YmUyOTczOTYyMTZkYzk1ZjU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOwotICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsK
IAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggODFjYjMxYjg1ZmYyNjg1MTAwYjk0MmY4ZWNkNjUxODdjZDQyODM4MS4uOTI5
NzYwZTJkZjZiZTNjYjI3ZDBlNWVmNmZlYzIzM2ZmNzk4MTllMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2ODMsNyArMTY4Myw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29s
IHdhc0NhbmNlbGxlZCkKICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBib29sIGlzQWxtb3N0
U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQogewotICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBiaXRtYXAtPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJp
dG1hcC0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIEFTU0VSVChD
R0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CiAKICAgICBDR0JpdG1hcElu
Zm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0KaW5kZXggNWI4Y2I2YzM4YzdhNWIxNjY3NGJmMTRhYzAxMjBjMzVmZGYz
YWRmNi4uN2FhMDA0YTYxNjllYjQwMjA0ZGIyMjRkNmVkYzIyNmYyNzI3NDhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01MzYsNyArNTM2LDcgQEAgaWQgPERPTUV2ZW50VGFy
Z2V0PiBraXQoRXZlbnRUYXJnZXQqIHRhcmdldCkKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7
CiAgICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2Uo
KSkKLSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBsYXRm
b3JtSW1hZ2UoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmICghKmNnSW1hZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ4MTc2OTk2NzVl
Y2ZiYjljMjM2NzkzNWMyMmM1N2M3OGE0YTM0ZjEuLmZkMDk2ZGRmOTUwY2JmZTgxNjNiMTM2NzVh
Y2RkZTMxN2I5ZjMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQpAQCAtMTcxLDEwICsxNzEsMTYgQEAgY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNhY2hlZEltYWdlPihj
YWNoZWRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFdlYkNvcmU6OkNh
Y2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigq
Y2FjaGVkUmVzb3VyY2UpOworCisgICAgYXV0byYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJD
b3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdl
Lmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJ
bWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIAorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0
aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IGI2MGUzMjZmMTBiZjVjZTNjYTZmYTNmNDBiMWFhOGUwOTc5ZDQyMzcuLjYzZTk1MmQ3ZTJjMTRl
YzkxM2MxNzlhNWEyYzY3ZGU3NTM3YWQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg0NSwxNCArODQ1LDE0IEBAIHByaXZhdGU6CiAgICAgX3Rl
eHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBjcmVhdGVOU0FycmF5KGluZGljYXRv
ckRhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykubGVha1JlZigpOwogICAg
IF9jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlU2Nh
bGVGYWN0b3I7CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdo
dCkKLSAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdp
dGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJ
bWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRo
Q0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5h
dGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwogICAgIGlmIChpbmRpY2F0b3JEYXRh
LmNvbnRlbnRJbWFnZSkKLSAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdl
dCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvblVwXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdl
dCgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRp
dmVJbWFnZSgpOwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBp
bml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRvckRhdGEuY29udGVu
dEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgICAg
IH0KICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="429387"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412881</attachid>
            <date>2020-11-01 21:38:21 -0800</date>
            <delta_ts>2020-11-01 22:25:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101213819.patch</filename>
            <type>text/plain</type>
            <size>235292</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODhlMTRlNGRkODQwZDE4ZjcwZTE5YjI2MzMzOWVk
OWRiYjU0ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisg
ICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworTmF0
aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCit7CisgICAgaWYgKG1fb2JzZXJ2ZXIgJiYgbV9wbGF0
Zm9ybUltYWdlKQorICAgICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApp
bmRleCAwMzM0NzU5NjA3ZjhmMjBkZTMxMjQ4NTlhNmYwZjA5NDUxZTE4ZTViLi4zMjc0ODI0NTZl
OWMzNTA1MWQ2ODUzNmY0NTMyYTIwZWIyMGVlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3LDE2ICsyNyw0OSBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCIgICAgCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CiAKLVdF
QkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLUNv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKK2NsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUlt
YWdlV2lsbEJlRGVsZXRlZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CiAKLX0KKyAg
ICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1J
bWFnZVB0ciYmKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgp
OworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9
CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2U7IH0K
KyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gbV9wbGF0Zm9y
bUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorCisgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZShtX3BsYXRmb3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgp
IGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworCisgICAg
dm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2Vy
dmVyOyB9CisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOworICAgIAorcHJpdmF0ZToKKyAgICBO
YXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0ciBt
X3BsYXRmb3JtSW1hZ2U7CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07Cisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHsgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3
N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFkMDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVj
dCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQotI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQot
dHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENB
SVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNl
bGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdl
UHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTJkMDdmOTQ0ZTllMzk4ZmNmNTI0
ZmExOWVmMDQ1OTExMDEzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3Qg
Q0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJD
YWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2VsaWYgVVNFKERJUkVDVDJEKQor
dXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJpdG1hcD47CisjZWxpZiBVU0Uo
Q0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD47
CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxTaGFy
ZWRCaXRtYXA+OworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmluZGV4IDFiMDdmODZmMzkzMTc4ZjRjZjdm
ZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZl
ZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
TGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHZp
ZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA4YTVmNTg3MGEzNTM1NzNkODY5
NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgxNjY0YTI0MTk0OTNlOTViYTUz
Nzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5MTZmOTBhYmQwNzUzYTExNTU2
YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRkMGQzNDg0YjE1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC01NjcsNyAr
NTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5h
cmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBo
b2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmlu
ZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5YzFlYTYuLjI2YjNkNzhmZTFi
MGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBw
YWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKQEAgLTM0Myw3ICsz
NDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4g
bV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92
aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xh
c3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZjI5NDg4MTZlZGRlNzllNzhh
MTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uM2FiYmE5MmU1MDlhMjE0MDQ5ZDUwNDE2ZDY1MjQwMWM0
NjE4Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogewogICAgIHVwZGF0ZUxhc3RJbWFn
ZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSk7CisgICAg
bV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9s
YXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAK
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkxheWVyKQog
ICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7
CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/
IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKICAgICB1cGRhdGVEaXNh
YmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0yMjkzLDcgKzIyOTMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVU
eXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJ
bWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKIAogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBidWZmZXIgdG9vayAiLCAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsKIH0KQEAgLTIzMTQsOCArMjMxNCw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9P
dXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdElt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAw
IH0sIG1fbGFzdEltYWdlLT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpt
X2xhc3RJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAog
ICAgIC8vIElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhl
IHBhc3QgZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAv
LyB2aWRlbyBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVk
LgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1
cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFz
dFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRU
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFs
cGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICByZXR1cm4gbV9sYXN0
SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2
MzIxNjE0ZGUxYjBhMzgwN2Y5YWIuLmEwYWY5Yjg3NGNhZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5
NGI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHVwZGF0
ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8aWQ+IG1fcGVyZm9ybVRhc2tPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8QVZTdHJlYW1T
ZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3JnYkNvbmZvcm1lcjsKICAgICBSZWZQdHI8
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogICAg
IERlcXVlPFJldGFpblB0cjxpZD4+IG1fc2l6ZUNoYW5nZU9ic2VydmVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFi
YjBlLi44YmM0OGZhM2UzMjQ1MjU2NzVkOWU4Yzg4ZGY5ZjNhYzE3NDQwODg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC01NjQsMTAgKzU2NCwxMCBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAg
ICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7
Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOworICAgIHJldHVybiBtX2xhc3RJbWFnZTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpCkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fcmdiQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAotICAgIG1fbGFzdEltYWdlID0gbV9y
Z2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25m
b3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYyNiw4ICs2MjYsOCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAw
LCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdl
LCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdM
T2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQpAQCAtMTIxOSw3ICsxMjE5LDcg
QEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRl
b0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdl
KCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmgKaW5kZXggMDg4ZjFkOTJjOTdmMzkyNWJmOWE5YmMwYjIzNzlkMzUwYmRi
YmNhOS4uODc4MDk2YWRiZDZlMjVkNDMxODZiZWViMGJhZGY0NjhmODZjZTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgogICAgICAgICBD
dXJyZW50RnJhbWVQYWludGVyKCkgPSBkZWZhdWx0OwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAK
LSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2U7CisgICAgICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY2dJbWFnZTsKICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtZWRpYVNh
bXBsZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBp
eGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggOTg5ZmI4OWRhMmFiMzhkMWYxYzE3ZDVhZmQxY2E4MjI2MDIyN2NiNC4uOWE1MzZkYjkyYjJl
MDQyZDg3ODE0YTllZWFhYTkzZWVjODM4OThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtNzYyLDcgKzc2Miw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7
Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9G
dWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgPyBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKQEAgLTk1
NSw3ICs5NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJH
ZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
bV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRl
SW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKQEAgLTk3
NSwxNCArOTc1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgaWYgKCFtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UuZ2V0KCk7
Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7CisgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRl
ci5jZ0ltYWdlOworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXpl
KCkpOwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGlt
YWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Qu
c2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjli
MTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3
MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyAr
MTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkK
K3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRl
b0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRp
dmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlm
IChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29u
dGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGMwMDY5
YmRjZmJkNjFmZjc2NThlYWNkMTA2MDgyYWUwYzZmZDIwZDIuLjNjOGY3YzAyYTM5OWQxYWZkODdk
NmVmNzZjZWUxYjAzZjFlY2EzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAv
LyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNj
YWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNo
YW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBs
YXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFk
NGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMz
NDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5
TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0
aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpA
QCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRD
b2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA5YTU3ZWJlMmQ1NWEwNzljMzdmMWNhYjk2YTdmYjczZjVi
ZjQzOWJhLi5iOGY3NDVhYjcwZDBlMWMzM2IyZTI0OGZhNTVhNzEyM2FkZDc1YjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3NCwxNiArMTc0LDE2IEBAIGVudW0gUGF0aERyYXdpbmdTdHls
ZSB7CiAKIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxv
YXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVy
SW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qo
cm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRv
ciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1
dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgKm5h
dGl2ZUltYWdlLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJT
aXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBtb3N0bHkgc2FtZSBhcyBk
cmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0d28uCiBzdGF0aWMgdm9p
ZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
SW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewot
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4
dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRl
KCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsICpuYXRpdmVJbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3Rh
dGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNo
YWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtODYwLDcgKzg2MCwxMyBAQCB2b2lkIGRyYXdH
bHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNv
dXJjZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1
dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1Bs
YXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7Cit9CisKK3ZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBm
bG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAg
IHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3
ZDdhMGE1MGU5YzE5MDY2ZGQ5M2RlNTk2MWQ2NjkxYS4uYzg4ODEyMTQ5NWEyZTJkOTJmMGMzNGNl
Y2Y2NjYwYTQ2ZjlhZjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsOCBAQCB2
b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwog
CiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNl
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBv
aW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2ds
eXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBm
bG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dT
dGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNh
aXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lk
IGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmLCBPcmll
bnRhdGlvblNpemluZyBvcGVyYXRpb25TaXppbmcgPSBPcmllbnRhdGlvblNpemluZzo6Tm9ybWFs
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYwYzcw
NzY4MjBkMDZhNTViYTVjNTU4MjQ4YzMuLmRlYWM4YzgzZjgzMjIwZTZiMTUzYWVhMGFkMGJhMGEz
YWU3YTkxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNCArMTIz
LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3Jt
Q29udGV4dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUu
c3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAg
ICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1h
Z2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdl
KCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9w
dGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBk
cmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggOGVmNGY3ODZiNzI0OTE0MjQ1NmVmZjFmMGFk
ODIxNmNjOTA1NTM2Ny4uNTg2NTE4OTI2MzczYTBjMjI3NjA5ZmJlNjdkMDhmMTkwODFlNjI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODUsMTcgKzI4NSwy
MiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGRyYXdQbGF0Zm9ybUlt
YWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGxhdGZv
cm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5z
dGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGlt
YWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29u
dGV4dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNr
bmVzcykKQEAgLTQyMSw3ICs0MjYsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y2xpcEJvdW5kcygpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKaW5kZXggMWM4MjcxMzBjMmE1ZmUyOGY3NTM1ZTE5NDVhMzNkYzk2ODYyMDUxNC4uYjlm
YTI0Zjk1N2RlZDg3Nzg1NmY5OGY5NmVjOGI4NzJhMDAyOGI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDggQEAgcHVibGljOgogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIAogICAgIGJv
b2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5k
ZXggNGYxZjc1NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uMWQyMjUwNjNhYTFm
M2E5NTIyZWFjMjIyZTdhNzZmZjkxZjc0YzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVy
biBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJl
aGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTgg
QEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50
KGNyLmdldCgpKTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUoY29weSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdT
dG9yZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUobV9zdXJmYWNlKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkp
ID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50
KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkKQEAgLTEwMCw3
ICsxMDAsOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogCiBWZWN0b3I8dWludDhfdD4gSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKIHsKLSAgICBh
dXRvIHN1cmZhY2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKTsKKyAgICBhdXRvIHN1cmZhY2Ug
PSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwog
ICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gaW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaAppbmRleCBhNjlkNWVlMGZmNjNmNzc5NTgyNWRjNjc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0
MDIyNjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBjYmY1ZWIyNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBn
ZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAotICAgIE5h
dGl2ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4
IDA1YzBmODFjYjM0MTkwY2IzNzNiZDg0MzQxNThiNGQwMzMwMWFiMDQuLjExNWUwYmQwYzk2OGQx
MTE2ZDk5OTE1NjdjZGNiYzQ5MjkxZTM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0z
NSwzNCArMzUsMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2ZUlt
YWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUltYWdl
OjpzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0
dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCkpIDogSW50U2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25z
dAogewotICAgIHJldHVybiAhaW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFn
ZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1J
bWFnZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkg
IT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1h
Z2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRm
b3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xv
cigpOwogCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZSht
X3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAg
ICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9j
YXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0
KCkpKTsKKyAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25l
ZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7
CiAgICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsg
KnBpeGVsIH0pKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAppbmRleCBjZjhlYzI5YjVjZTY0YTUyMDE3Yjc1ZDA5MGI1ZjkyNmZkNTYwMTJh
Li4wYTE5OTBhZWFjMjkzZWQxMDk4MDI4OTg1MmUyNGFlOGU2ZmM2ZWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCkBAIC0yODAsMTEgKzI4MCwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9y
ZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93
blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZv
cm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxh
dGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3Rv
bmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgpAQCAtNDQ3
LDIzICs0NTIsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUlt
YWdlID0gaW1hZ2UucHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRp
b25zLm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAg
IGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQg
aCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwog
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNp
emUpCi0gICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOworICAgICAgICBzdWJJbWFnZSA9IHRp
bGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5n
IGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBk
ZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAg
ICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFn
ZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAg
ICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxl
UmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFn
ZUluUmVjdCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAg
ICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNh
dXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcs
CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQg
bWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9h
dCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENH
SW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYg
KHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkg
JiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBG
SVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVu
IHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAg
IC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3Qg
aW1hZ2UgdG8gZml0LgpAQCAtNTEyLDcgKzUxNyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
CiAgICAgfQogCiAgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0
aW9uUmVjdC5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVy
LmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9
IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJl
IGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4u
MDQwMzk0NjkxMzVjMzU1NTUyNDJlYzViOWY3YTJmODYzMDljMjAwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKQEAgLTMzOCw4ICszMzgsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAg
IGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0
ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VX
aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8
ICFtX2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50
byBhbiBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSBy
ZXF1aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAg
IC8vIGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdl
R2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JT
cGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAg
aWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWlu
UHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJp
dG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRT
ZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0
aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFn
ZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdl
dCgpKTsKIAogICAgICAgICAvLyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5k
IHJlcGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAg
IG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRt
YXBDb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdl
dCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2Nn
SW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBv
bmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAg
c2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdl
dCgpKTsKKyAgICBpZiAoIW1fY2dJbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNv
bXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBz
aXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7
CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJD
b21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1Bl
clBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFw
SW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAg
ICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgp
KTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxk
IHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0
YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UK
QEAgLTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBo
YU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0g
QWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1h
Z2UuZ2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgp
KSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAg
aWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6
RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGkKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQo
KSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERh
dGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdl
dCgpKSk7CiAKICAgICB1bnNpZ25lZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVf
dCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwor
ICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQo
KSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8g
OCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tB
bGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTU0Myw3ICs1NDgsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29u
dGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVy
cG9sYXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUs
IGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShjZ0lt
YWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1YjIwZDg5MmVkOGJiY2Y2MDE4
MTZhNjM2NzZhMDBmMWZhNWMxN2IzLi41NGI4NzhiNDM0NzZlMTliZDZmNjE3MWY4YjQ5NjI3NzYz
ZTBmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC02NywyNCArNjcsMjQgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkKICAgICBjb250ZXh0KCkuYXBw
bHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CiB9CiAKLXN0YXRpYyBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJl
ZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUpCitzdGF0aWMgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShSZWZQdHI8TmF0aXZlSW1hZ2U+
JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplKQogewotICAgIGlmIChpbWFnZSAm
JiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRT
aXplLndpZHRoKCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNp
emVfdD4oYmFja2VuZFNpemUuaGVpZ2h0KCkpKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5k
U2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsKLSAgICByZXR1cm4gaW1hZ2U7
CisgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgIT0gYmFja2VuZFNpemUpCisgICAgICAg
IHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
aW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6
ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsKKyAgICByZXR1cm4gV1RGTW92ZShp
bWFnZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGlj
IFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJl
c29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUg
PT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0g
ICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCks
IGJhY2tlbmRTaXplKTsKKyAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vz
c2FyeShXVEZNb3ZlKGltYWdlKSwgYmFja2VuZFNpemUpOwogICAgIGVsc2UgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6
ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRo
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkp
OwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRT
aXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBp
bWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAg
LTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRl
clNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAg
IE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAg
ICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShj
b3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwog
CiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZj
b250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAg
ICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgs
NyArMTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRv
Q0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZy
b21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGlt
YWdlOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsK
IAogICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU2LDcgKzE1
Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgIGlmICghZGF0YVByb3ZpZGVy
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURp
bWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgo
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJh
eURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lk
dGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtD
R0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtD
R1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwog
ICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgp
LCBiYWNrZW5kU2l6ZSgpKTsKQEAgLTE2NSwxMiArMTY1LDEyIEBAIFJldGFpblB0cjxDRkRhdGFS
ZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwg
NCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShj
b250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgo
KSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2Uo
Y29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJh
Y2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tl
bmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIAogICAgIGF1
dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKLSAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1
YWxpdHksIGNmRGF0YS5nZXQoKSkpCisgICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYw
MjNmZjk0ZTc4ODUyYzZjOTIwLi4zNTZlYjUyNjMzNzQwNzA4ODNhMjkzZDY1MGM2ODU0YjQ3ZWZk
OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMDcsMTQgKzEw
NywxNCBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29w
eUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSkpOwogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIG1fYmFja2VuZFNpemUu
d2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCiAg
ICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1h
cEluZm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5k
ZXggYjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2MyN2E1NDk3MzEwODI4NS4uN2QyMzNkMjIyNzg1
YWQzZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdlYjhiM2QxYWQ4OGQwYWIzZjBlZWY5MGE3Yzhk
ODVlMDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJiODk3MTBhZTgzN2ZiZjliMWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIENv
bG9yRm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0
KCkgY29uc3QKICAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZl
SW1hZ2UoKQogewotICAgIHJldHVybiBJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZSht
X3N1cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShJT1N1cmZhY2U6OnNp
bmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdl
KCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9i
YWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAg
IGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5k
ZXggMzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3NDBmYi4uZjUwOWVlZTY1YTcy
MmUxMjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKLSAgICBOYXRpdmVJ
bWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRp
dmVJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmlu
ZGV4IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0NmJlYTg3NDQ1YWJhMGMuLmNkYWYxNWMxMDlk
Yzc5NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTQ5Miw3ICs0
OTIsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJDRzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHJldHVybiAoZnJhbWVTaXplLmFy
ZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJD
Rzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25z
KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewogICAgIExPRyhJbWFnZXMsICJJ
bWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgp
OwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA0
Njc5MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1MDZkZGY2YjNiLi44YmEzMDA5ZDNiNmI2MzQ5
NzNiYWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0
IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAg
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7Cisg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggNDAwZDZlZjBhNDU3N2Q1
ZDdjYzViZDljYjY0NmE1YmFkZWJkYWRjMi4uZjJmY2U0YWE0Yjc3MWRhZTNmYjQyZDVkYmUzYWEx
MWZiMGU2YTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTM3LDIwICszNywyMCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IElu
dFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdp
ZHRoKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHBsYXRmb3JtSW1hZ2Uu
Z2V0KCkpKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29u
c3QKIHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGlt
YWdlLmdldCgpKTsKKyAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJ
bmZvKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAgICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsK
IH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xv
cigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9
IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgdW5zaWduZWQgY2hh
ciBwaXhlbFs0XTsgLy8gUkdCQQpAQCAtNjAsNyArNjAsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNp
bmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgICAg
IHJldHVybiBDb2xvcigpOwogCiAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRl
eHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRt
YXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7Cisg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAKICAgICBpZiAoIXBpeGVsWzNdKQog
ICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CkBAIC02OCwxMSArNjgsMTEg
QEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQogICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBp
eGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBjbGVhck5hdGl2ZUlt
YWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1h
Z2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1h
Z2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0
KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRo
VGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApp
bmRleCBjYmY2MjRmNjI3M2MzYjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3
MGFkN2FlNmMxZTc2MGYwNzg3ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBD
R1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlm
b3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3Qu
aGVpZ2h0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlm
IChhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAg
cGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAg
aWYgKCFwbGF0Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElm
IHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFj
a2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9p
ZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVh
dFkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgp
Lm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdD
b25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdl
MihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5n
Q29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNl
ZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9u
cyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJl
ZC4KQEAgLTc3LDEwICs4NCwxMCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxv
YXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAog
ICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3Mg
ZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYg
cGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAg
IENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0
IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJh
Y2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRl
KHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAs
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tz
KTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBU
UlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCA1MTNmNDU1Y2FkOGU1ZTYwNTI3Mjhk
MzQ3YzM5M2Q5ZjQ0N2ZlMzg4Li4yZmFiNjllMDMzMjZjMzdiNGMzYzFjOTgzZDk0MDg5YTIxOGMy
MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Lm1tCkBAIC0xNzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAo
aXM8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJu
IFtDSUltYWdlIGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyPigqc291cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVy
biBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2Uo
KS5nZXQoKV07CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1h
Z2UtPmNvcHlOYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRh
aW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVD
b2xvck1hdHJpeChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRh
aW5QdHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXgg
ZDZiZTI3NGM2OGRlZWZiNGMwZDUzNjFiZTY0ODE1MjQwMzJjOWY0MS4uMWRkNGEyNGFmMmU4ODcz
MzkyMzdlOWEwZGExMzBkZDZiMjY0MTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTY4
LDYgKzY4LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdUaWxl
ZFNjYWxlZEltYWdlLAogICAgIERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2Us
CisgICAgRHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgRHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3Qs
CiAgICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
NDdjNzYyZTFhNjE5N2Q2YzhiOGM0NWZhOWNmZGMwNWEwM2RlZTUxYi4uMTIwNTYyMjhhOTcwYTc3
OWM4MzY2ZjkzOTIxZTk2ZDJjMzU4ZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25z
dCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1
ZmZlcj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAg
ICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihk
b3duY2FzdDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC04NTksOSArODYxLDkgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJ
bWFnZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6
RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0
aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2UpCi0gICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwg
bV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3Qp
CiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKQEAgLTg3MSwxMiArODczLDQwIEBAIERyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpCiAKIERyYXdOYXRpdmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0g
ZGVmYXVsdDsKIAotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1h
Z2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIC8v
IFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxj
b25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYu
CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0u
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291
cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVj
dCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworRHJhd1Bs
YXRmb3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSkK
KyAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAg
LCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQor
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjp+RHJh
d1BsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdQ
bGF0Zm9ybUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9z
cmNSZWN0LCBtX29wdGlvbnMpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BsYXRmb3JtSW1hZ2UmIGl0ZW0pCiB7CiAgICAgdHMg
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKICAgICAvLyBGSVhNRTog
ZHVtcCBtb3JlIHN0dWZmLgpAQCAtMTY3Nyw2ICsxNzA3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2Fs
ZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRz
IDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6IHRzIDw8ICJkcmF3LXBsYXRmb3JtLWltYWdlIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRl
cm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVj
dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5l
IjsgYnJlYWs7CkBAIC0xODAwLDYgKzE4MzEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVt
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6
CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVtKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDE1YmU1ZTg2NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2
NzY5NGZlOGUzLi43YjdlOWEwZTcwZGVjNzJmODI5MzMzNGM0YjlkNTZhNGQzMmYwMjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3MDEsMjcgKzE3MDEsMzAgQEAgT3B0
aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUlt
YWdlPiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cykpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFn
ZSgpOwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OyB9CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXpl
OyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQog
ICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNp
emU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3Ny
Y1JlY3Q7CkBAIC0xNzMxLDcgKzE3MzQsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVu
Y29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBA
IC0xNzQxLDcgKzE3NDQsNzcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxE
cmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
KyAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOworICAgIGRlY29kZXIgPj4gaW1h
Z2VTaXplOworICAgIGlmICghaW1hZ2VTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgZGVjb2Rl
ciA+PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgaWYgKCFkZXN0aW5hdGlvblJlY3QpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7
CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBv
cHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0
aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKK30KKworY2xhc3MgRHJhd1BsYXRmb3JtSW1h
Z2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHJhd1Bs
YXRmb3JtSW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGxhdGZvcm1JbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgIH0KKworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCk7CisKKyAgICBGbG9h
dFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0
IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGxh
dGZvcm1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9F
WFBPUlQgRHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IG1faW1hZ2U7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IERyYXdQbGF0Zm9ybUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKKyAgICBl
bmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0Owor
ICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtSW1hZ2VQdHI+IGlt
YWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE3NjYsNyArMTgzOSw3IEBAIE9wdGlvbmFsPFJlZjxEcmF3
TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJl
dHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5h
dGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdQbGF0Zm9ybUlt
YWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVj
dCwgKm9wdGlvbnMpOwogfQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CkBAIC0zMzMyLDYgKzM0MDUsOSBAQCB2b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGVuY29k
ZXIgPDwgZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1hZ2U+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGVuY29kZXIgPDwgZG93
bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUzLDYgKzM2
MjksMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29k
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZN
b3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0
Zm9ybUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd1BsYXRmb3JtSW1hZ2U6OmRl
Y29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNv
ZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM3MjcsNiArMzgwNyw3IEBAIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRTY2FsZWRJbWFnZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQbGF0Zm9ybUltYWdlKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5lKQpAQCAtMzc5OCw2ICszODc5LDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNj
YWxlZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1h
Z2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZDE0MmMzNzc5Y2I5OTNlNzM3MmJiOGI4ODg3ZmNjNGM3
NTJmZTk4OS4uNDBmY2FhYWE0NTM2ZmI1MDU1ZjM5NDI0NWZkMDZjYjljZDlmYzUxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTk0LDkgKzE5NCwxOCBA
QCBib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K2Jvb2wgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICBpZiAo
IW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1vdGVOYXRpdmVJbWFnZShpbWFnZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQo
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQo
RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCAzMWM4Yzg5NjM3OGMwY2FmYmIyMTEyODk1OTdjZWUyOGI0ZmE3NWQyLi5iODg5NTZhOTli
MmI5OTVjYzgzMDcwYmE5MzdiNzE2NzQ2ODg0NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvY2tS
ZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
KSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0o
Y29uc3QgSXRlbSYpIHsgfTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW0oY29u
c3QgSXRlbSYpIHsgfTsKICAgICB9OwpAQCAtMTA4LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVs
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRjOTk0YjczMWZhODk1NGVmODgwM2FkYzI4
ZjRmMjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYyYjdkNTdhOTE2NTE0ZTYwZjk4OTZkN2Q2ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00NiwxMSArNDYs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJH
U3RyZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAorICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgaW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2
ZUltYWdlKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCkt
PnBsYXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAgdm9pZCBkcm9wSW1hZ2UoKSB7IG1faW1hZ2Ug
PSBudWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxv
Y2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDZlMmVhMDc5
N2JkM2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlhN2QuLjU4NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5
MjBlNTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5n
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGluZGV4IDw9IG1fc2Ft
cGxlRGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5h
bDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykp
IGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjczZjVlNjc5MjE4
Li5mMWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzIxNSw3ICszMjE1
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVD
b3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0
KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmlu
ZGV4IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjBhYjJjNmM5MTRi
ZmUzY2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVu
dW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92
ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFj
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bQppbmRleCA4MTM2YzFmZmY0NWI5YTMxNzdhOTY4YmI2ZjYyYjJkZjg5MDdkYTU1Li5jMjQ3OTVm
NTA5YTMzNmVmMGQ3YjE3MWQyNjY0NDZjYWFlZjIxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0ljb246Okljb24oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiAgICAg
OiBtX2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBAIC00Nyw3ICs0Nyw3IEBAIFJlZlB0cjxJY29uPiBJ
Y29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVz
Ki8pCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9ySW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK1JlZlB0cjxJ
Y29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1h
Z2UpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1f
Y2dJbWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJh
d1BsYXRmb3JtSW1hZ2UobV9jZ0ltYWdlLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5t
bQppbmRleCA2OTA4ZjEwNzYzMmU4OTAxOGNhOTBlOTkwZjM0NDg3N2I5NGI2ZmI5Li45YmI1MDI4
OTBjNjk4OGYzN2ViZGRiOTIzNTIxM2M1YjRmZTUyYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC03NCw3ICs3NCw3IEBAIFJl
ZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAg
ICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4g
Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQ
dHI+JiBuYXRpdmVJbWFnZXMpCitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlm
ZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYgbmF0aXZl
SW1hZ2VzKQogewogICAgIC8vIElmIG5hdGl2ZUltYWdlcy5zaXplKCkgaXMgemVybywgd2Uga25v
dyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8g
RXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEg
d2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKQEAgLTg5LDcgKzg5LDcg
QEAgUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihj
b25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBD
R0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2Uu
Z2V0KCksIDApOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlv
bi5nZXQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgMCk7CiAKICAgICBD
R0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJu
IGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCA2Mjk4Y2Yz
NjA3M2M3YWU0NGY0M2M2YjU2NDQyMmIzN2I4NmNmMTA3Li5mYzJjYmI2OGViMmM0MDFiZmIxNzcw
YWZiYWNjOTY4NTI5NjkwODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHAKQEAgLTEwOSwxMSArMTA5LDE0IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZTo6aGFuZGxlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAgICAgYXV0byBuYXRp
dmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUobV9pbWFn
ZUJ1ZmZlcikpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZVNp
emUobmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZUltYWdlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGF1
dG8gc2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2VIYXNBbHBoYShuYXRpdmVJbWFnZSkgPyBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhh
KCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFn
KTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBu
YXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8qIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
LT51cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIElu
dFBvaW50KCksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcAppbmRleCBhMmM5ZTA5M2ZjMTRiYTVjMWU4MjljNGIyNGUxNjU0MDAzN2E0NDU1Li4y
ZTllZWM4ZmY0NmVmNDk0ZmQ5YjMxZTAwYjk5ZTdlNDQ4ZWQzM2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTU1
LDI1ICs1NTUsMzEgQEAgYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikK
IHsKLSAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24s
IE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewot
ICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CisgICAgLy8gRklY
TUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQoreworICAgIHN0cnVjdCBEcmF3UGxhdGZvcm1JbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6
U2hhZG93U3RhdGU+IHsKKyAgICAgICAgdmlydHVhbCB+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBy
ZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRp
dmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwx
PigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAg
ICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFy
ZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJn
PDU+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBv
dmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdOYXRp
dmVJbWFnZTw+XG4iOworICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3UGxhdGZvcm1J
bWFnZTw+XG4iOwogICAgICAgICB9CiAgICAgfTsKIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNp
emUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERy
YXdQbGF0Zm9ybUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC01OTQsNyArNjAwLDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKICAgICBpZiAoYXV0byBz
dXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucykpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4o
V1RGTW92ZShzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkpLCBJbnRTaXplKGltYWdlLnNpemUoKSks
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsK
IH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTEwNzksNyArMTA4NSw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgRmxvYXRSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1
cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+KHN1cmZhY2UuZ2V0KCkpLCBkZXN0UmVjdCkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpKSwgZGVzdFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDM4MDkz
ZDQxMzViNGQ3YjY1MTFhMTYwODdhZmYxM2Y2MDNlZDEzYmEuLmQ4ODRhMWYyYzc5NWE3NzNjZTdm
YWRiZDc0ZDkwMDVjMjUzMjc3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDggQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2Um
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNv
cmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggODI2ZDJkYTViZGVlYjY3OTVmZDA3ZjE1MTQy
NDE4MGM4YWI1ZDBjOS4uYTYxMTA5MmVjOTE0NzAwOTIyNjBkOGIwNGI3Y2EzNTFjNzZmNDZmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEJpdG1hcFRl
eHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSZWN0LCBjbwogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBOYXRp
dmVJbWFnZVB0ciBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgYXV0byBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1OSw3
ICsxNTksNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGlt
YWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogICAgIGNvbnN0IGNoYXIqIGltYWdl
RGF0YTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBm
cmFtZUltYWdlLmdldCgpOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsK
ICAgICBieXRlc1BlckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFj
ZSk7CiAjZWxpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAyYWJmNDM4MmQzMDBmNGUxZDMzMjE5MzFlYTk5ZGE0NDRmYTFlMzhm
Li4wZGRmYTk2NGExZWIwYmVjNWM2M2ZiZDkwZjFhMTI1OGU1MTliNDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUmVmPEdy
YXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSog
ZmFjdG9yeSwgR3JhcGhpY3MKIAogR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMp
CiAgICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgw
KQpAQCAtMjk0LDI2ICsyOTMsMjYgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAg
ICAgICAgLy8gTWFrZSB0aGUgZGVjaXNpb24gYWJvdXQgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGNo
YW5nZWQuCi0gICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHBv
aW50ZXIgZXF1YWxpdHkgb24gYSBOYXRpdmVJbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxs
IGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgorICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhl
IGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgUGxhdGZvcm1JbWFnZVB0ciBp
cyBhIHZhbGlkIHdheSB0byB0ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgogICAgICAgICAv
LyBUaGlzIGFzc3VtcHRpb24gaXMgdHJ1ZSBmb3IgdGhlIEdUSysgcG9ydC4KLSAgICAgICAgTmF0
aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZVB0cikKKyAgICAgICAgYXV0
byBuZXdOYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmIChuZXdOYXRpdmVJbWFnZVB0ciA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikK
KyAgICAgICAgaWYgKG5ld05hdGl2ZUltYWdlID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
ID0gbmV3TmF0aXZlSW1hZ2VQdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0g
bmV3TmF0aXZlSW1hZ2U7CiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAg
ICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
Y3JlYXRlKCk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2Uo
aW1hZ2UpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShw
YWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKKyAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFn
ZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIobV9j
b21wb3NpdGVkSW1hZ2UuZ2V0KCksIENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpJbWFnZSk7CisgICAg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIobV9jb21wb3NpdGVkSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgQ29udGVudHNMYXllclB1cnBvc2U6OkltYWdlKTsKICAgICBub3RpZnlDaGFu
Z2UoQ29udGVudENoYW5nZSk7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdl
KGltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
M2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3
NzI5MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdl
UHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0
YzkxYjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTM4LDcgKzEz
OCw2IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVj
dEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFs
c2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQogICAgICwgbV9yZXF1
ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVk
KQogewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGlt
YWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUltYWdlUHRyKQorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9
IG5hdGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFja2luZyBwcmVz
ZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgotICAgIGlmICht
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAgICBhdXRv
JiBpbWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0cl90IGltYWdlSUQg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAgICAgdWludHB0cl90
IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAvLyBSZXNwYXduIHRoZSBJbWFnZUJhY2tp
bmcgb2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAgICAgICAgIGlmICht
X25pY29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTky
ZWY5NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBtX25lZWRzRGlzcGxh
eTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRl
ZFRpbWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4gbV9y
ZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uMTc4
MDcyOTM4ODQ2NWM5NmU4MDkwNjNhMzhlYWJhNGJlMTQzN2VhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTEgKzIwNywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9y
bUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRp
dmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFn
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUlt
YWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhi
Zjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4My4uYTU2YTNiNDE5ZDVlZDRjNDNlNGY2
ZjFiYThhY2E1NjAzNjRjMGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5jcHAKQEAgLTI4Myw3ICsyODMsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250
ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2Uo
aW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQbGF0Zm9y
bUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcw
Yjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi41ZjkwZmYxZjFiOWYwMmJiMzE3YjE2
M2RmNzM2MTNjMjZmYjVkYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5o
CkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1h
Z2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2Fj
ZWYyMmU2OTdiNjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0
YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJp
dG1hcCgmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsK
QEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdC
LCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3Jt
Q29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRp
dmVJbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0
Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwg
UGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAg
ICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2go
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFC
aXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJp
dG1hcFRhcmdldCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eQogCiAgICAgfQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBU
YXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGlj
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBA
QCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlv
cik7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRm
b3JtSW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRh
cmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVy
U2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6
ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSAr
MTg3LDExIEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKGJpdG1hcFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCBy
ZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCkKIHsKICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2
YzQ1N2RjMjYxLi4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFn
ZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uKSBvdmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5
M2I5ZDRlOTIxMzNkNTUzY2QzYTRiLi45MDNjNTJkMzMwYjNiOWNjNTViNWRhYTY1MzNjMGEzMWY0
ZTQyZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0
CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYg
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lk
dGgoKSkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAg
ICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAg
ICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBv
c2l0ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4
NWViY2UzODA1YzAuLmNjYWViZTY0NDJkMTBmODM2OTY3OGJiYjQwNzdkNmQ4YTRjOTdjMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAKQEAgLTkzLDcgKzkzLDExIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7
CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VB
dEluZGV4KGkpOworICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSk7CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcAppbmRleCAyMWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1
Li43N2IxYTRhMTg4ODFjMGI1YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVj
dDJEOjpzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAg
ICAgbV9yZW5kZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIElt
YWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2Fj
YTkzZTM5MjQyN2IyNjUzNTRjYWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIw
NGU5ZmJiMDZhZDBiMWM5MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXpl
X3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFs
OwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkg
ZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNw
cAppbmRleCA5MGY3OGMyMzhmMThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi5lYWM3Y2Jl
NjE3YjliN2Y5NWFhZjY3Y2FiOTU5OTY5YzlkOWNhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQu
Y3BwCkBAIC01MCw2MCArNTAsMzYgQEAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2lu
Z0ZhY3RvcnkoKQogICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKIH0KIAotSW50U2l6ZSBuYXRp
dmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJ
bWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAg
IFVJTlQgd2lkdGggPSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IHBsYXRmb3JtSW1hZ2UtPkdldFBpeGVsU2l6ZSgp
IDogSW50U2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewot
ICAgIGlmICghaW1hZ2UpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdl
dFBpeGVsRm9ybWF0KCk7CisgICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBtX3Bs
YXRmb3JtSW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFs
cGhhTW9kZSAhPSBEMkQxX0FMUEhBX01PREVfSUdOT1JFOwogfQogCi1Db2xvciBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xv
ciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAo
IWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBp
ZiAoIW1fcGxhdGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAg
cmV0dXJuIENvbG9yKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwotCiAgICAgcmV0dXJuIENv
bG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGF1dG8qIHBsYXRmb3JtQ29u
dGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0KLSAgICAvLyBTdWJzYW1wbGluZyBt
YXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0g
ICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsK
LQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBs
ZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgot
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1w
bGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNh
bXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwot
ICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0
KCksIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlv
bnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKLX0KLQotdm9p
ZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotCiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBzdWJp
bWFnZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1J
bWFnZSkKKyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRm
b3JtSW1hZ2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0
YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0
dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVj
b2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgbG9ja0hvbGRl
cihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1z
IGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVz
dCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggODhjOTBiNmU4YTJkMzRjOTAy
MjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIzODU3NDczYWNiOTdkN2U1MTA0Zjcy
ZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0
IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFn
OyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVy
biBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjljYmM0NWI3Yjg5MmUwZTdiZmExOWZm
MDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNr
aW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3Rv
cmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+cmVmKCk7CiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCmlu
ZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJj
MGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIEludFNpemUo
SU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJm
YWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1h
Z2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7CisgICAgICAg
ICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgfQogICAgICk7CiAKQEAgLTI2Mywx
MSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkK
IAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlh
U2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0g
ICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+
IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRy
PE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CiAgICAgICAgICAg
ICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1h
Z2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfQogICAgICk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJl
NWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFj
Njc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtNTIsNyAr
NTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogCiBjbGFzcyBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVi
bGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRy
PENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CisgICAgdXNpbmcgRGlzcGxh
eUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkz
OTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIg
QEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkK
ICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAgICAgICAgIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1
ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZl
SW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVC
dWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1
ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9ybUltYWdlLmdldCgpLCBzYW1w
bGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwogICAgIGlmICghc2FtcGxlQnVmZmVy
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3
N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTM5LDgg
KzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250
ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwog
ICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQo
KSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQs
IGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJh
d0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQog
ICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAppbmRleCAzYTVlMDBiZTY3MThi
MTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li5jMGVkM2MxZGFiZWU0YWIzYTNkNzg3YTQ2ODdh
NjUxZWYzZmE3MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIsOSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAxLjApOwogICAgIGNhaXJvX2ZpbGxfcHJl
c2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltZy0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoc3VyZmFjZSkgeworICAgIE5h
dGl2ZUltYWdlIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKSB7CisgICAg
ICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAg
ICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA0OTFhZDkwZDA1
MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4xMTFhNGIyYzM1NWMwN2I5NDk1OTYyNDZk
ZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5
c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAg
IENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVjdC53aWR0aCgpIC0gYmFkZ2VE
aW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRn
ZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgYmFk
Z2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAotICAgIENJSW1hZ2UgKmlucHV0SW1hZ2Ug
PSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCkuZ2V0KCldOwor
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdl
Lm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAgICAvLyBDcmVhdGUg
YSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdlLCBh
cyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJj
bGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVj
dCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDYzZWRmMTJlMjEzMzMw
ZGYyZGFjYjk2NTQwMjU2NTMxNjNiNDBiYzEuLmIwNjBkNzI4MjljYjcxZDMwYjZiZjI4NWEzM2Ji
NzhlY2E3OWE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiB9CiAKICNpZiBVU0Uo
Q0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNh
bGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUg
bmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2UgbmVlZHMKIC8vIHRvIGJl
IGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKICNlbmRpZgogCiAjaWYgVVNF
KERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsK
ICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAgaWYgKCFtX3BhZ2UgfHwgIXRhcmdldENv
bnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IGQ3YWE4ZGQx
MzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjguLjI4MjVmOWQzODk4ZDhmMjRiNzQxNzgw
NDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
CkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVTdGFydEFuaW1h
dGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRpZgogI2lmIFVTRShESVJF
Q1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAjZW5kaWYKICAgICAK
ICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3Bw
CmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1ZjVlODMxYjMxYWYzNjUuLjAwMjhkNzZk
ZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtNDUsNyArNDUs
NyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2lu
aXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0
KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJn
ZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZTY0NGY3YWNmMzBlYzIyNGRmODUxNWQ4
N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUzYzU5MjI1NzM3MGYyYjhmMmY1Nzk0YTRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7
CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0
IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2ODgyMDY1NDdkNTI1MDNiZC4u
MTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5OWRkZGIzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBs
YXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklk
ZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHInLAorICAgICAgICAn
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAgICAg
ICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1NzgxOTJkZjg2MWE4MTVhYjBi
MjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBmNjUxOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
V0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwg
V0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KFdl
YkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKICAgICBy
ZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzM3OTU5NmJlNjlkOTI0YWUw
Y2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVkNzM2YTVlZGEwMWVjZTRiNGNjNTViMjhj
YzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhh
bmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVu
Y29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBOYXRpdmVJbWFnZTo6c2l6ZShwbGF0Zm9y
bUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4
dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgRmxvYXRSZWN0
KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUltYWdlLCBpbWFnZVNpemUsIEZs
b2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSkpOwogCiAg
ICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVOYXRp
dmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAg
ICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgbmF0
aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1J
bWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQog
ewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBkZWNv
ZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKQEAgLTExMzYsMjUgKzExMzYsMjUgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXIm
IGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
LT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBi
b29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29sIGhhc0ltYWdlID0gISFwbGF0Zm9ybUlt
YWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAKICAgICBpZiAoaGFzSW1hZ2UpCi0gICAg
ICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICAgICAgZW5jb2RlUGxh
dGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2Rl
ciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGltYWdlID0gbnVsbHB0cjsKKyAgICBwbGF0
Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgaGFzSW1hZ2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3ICsxMTYzLDE3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKERlY29kZXImIGRl
Y29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVy
biBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi12b2lk
IEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENvZGVyPFBsYXRmb3Jt
SW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29k
ZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoZW5jb2RlciwgcGxh
dGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29sIEFyZ3Vt
ZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0
Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBkZWNvZGVPcHRpb25h
bE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxQ
bGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJD
b3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNiNDk2YjA5YjkyYjhlMy4u
ZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4YmI5NjcxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2Rl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRp
bWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJik7
CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2Vi
Q29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgzZDVmNjk4OGIyMTE1ODhk
YTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2Rl
MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVBy
b3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoKIAogUmVmUHRyPElt
YWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9y
bUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlmIChhdXRvIHBsYXRmb3Jt
SW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4NjdlYjJhMGZjNGVjODU3ZjM0NzVh
NGU4MjVhMzVjLi5lNjMwMDk0OGFhODhkNzFiNTM3N2U0YWMxMDdjOTA2ODU5OTkwN2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
QEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0
UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29ucwogICAgIH0pOwogfQog
Ci12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0Rh
dGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2Fk
ZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRJY29ucy5jb250YWlu
cyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0YSA9IHRoaXMtPmljb25E
YXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5z
ZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+
KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBtX2xvYWRlZEljb25zLnNldChp
Y29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1l
PihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxsb3dEYXRhYmFzZVdyaXRlID09
IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0Rh
dGFiYXNlV3JpdGU6OlllczsKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdy
aXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9w
YWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1l
Ojpub3coKSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNl
dChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNU
aW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAgICAgICAgaWYgKCFp
Y29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGUpIHsKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIEljb25EYXRh
YmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNp
Z25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7Ci0gICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFr
ZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3Rk
OjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwg
eyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAgICAgICAg
YXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAo
aW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEsIGljb25EYXRhU2l6
ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IDk2MTJmOTlj
MmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLjVjNzY5MDE3ZjllNGRlMTg3NmNkNGFm
NWUxN2NjZDFjYzFhZDZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVk
KGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFi
YXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9vbCk+JiYpOwotICAgIHZv
aWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYmKT4mJik7Cisg
ICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdy
aXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4m
Jik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5z
aWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNl
V3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2NrIG1fcGFnZVVSTFRvSWNvblVS
TE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CisgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1l
Pj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNMb2NrOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pY29uSURGb3JJY29uVVJM
U3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEwYWRmZmE2MmU0NzdiNzgz
OTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2RhODA5ZGMzMmQxNDQ1MzlhMTRmNDgxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUlt
YWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VEcmFnSW1h
Z2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBhZmE4MmIxMzBkNTI0MmVkMWM5OWQ2ZTJi
YmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2ViNjdmOTZkNzhlYWQ5MWU4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVBy
b3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9w
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBz
bmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCF1bnNlbGVj
dGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3Bh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBd
KTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBv
cmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29udGVu
dFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxlY3Rl
ZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0
aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3MzIsMTEgKzc3MzIsMTEgQEAg
c3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
IGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFn
ZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcg
aW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtNzk5MSwxMyArNzk5MSwxMyBAQCBzdGF0
aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9J
bnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAKICAgICAgICAgYXV0byB1bnNlbGVjdGVk
U25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0aXZlSW1hZ2UoKTsK
LSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkgeworICAgICAgICBpZiAoIXVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwo
KSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gYW5p
bWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5vdCBkZWNvZGUgdW5zZWxlY3RlZCBjb250
ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUuY2xlYXJBbGxEZWxheWVkSXRlbVByZXZp
ZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5nZXQoKSBz
Y2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50
SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpw
cm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRvIHNuYXBzaG90VmlldyA9IGFkb3B0TlMo
W1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3NuYXBzaG90VmlldyBzZXRGcmFtZTpkYXRh
LT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107
CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25hcHNob3RWaWV3LmdldCgpXTsK
QEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBVSU1lbnUgKm1lbnVGcm9tTGVnYWN5UHJl
dmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpCiB7CiAgICAg
aWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRX
aXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0dXJuIFtbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9uUmVj
dHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29u
dHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4N2QyMTYuLmFjZWYw
MDc5MzNlMmYyY2QwZTY3YjI0MmVmMDEwNWEyYjE0M2I0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDEwICs5NiwxMCBAQCBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBVU0UoQ0cp
Ci0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwogI2VsaWYgVVNF
KERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNFKENBSVJPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMDVjMTA5Y2Qy
MDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4uOWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5
NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRl
eHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJD
b3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdl
YkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5v
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2
ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4uNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZh
MTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODEx
LDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1
Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIyMTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0
MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAg
LTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBw
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDgx
Y2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0MjgzODEuLjkyOTc2MGUyZGY2YmUzY2Iy
N2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiB3ZWJGcmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQp
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0
bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRp
dmVJbWFnZSgpLmdldCgpOworICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUlt
YWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQ
ZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwogCiAgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9
IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMwMTIwYzM1ZmRmM2FkZjYuLjdhYTAwNGE2
MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZmMjcyNzQ4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KEV2ZW50
VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBpZiAodGV4dEluZGljYXRvcikgewogICAgICAgICBpZiAo
SW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlKCkpCi0gICAgICAgICAg
ICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CisgICAgICAg
ICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuYXV0
b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoISpjZ0ltYWdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkODE3Njk5Njc1ZWNmYmI5YzIzNjc5MzVj
MjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRkZjk1MGNiZmU4MTYzYjEzNjc1YWNkZGUzMTdiOWYzMWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTE3MSwxMCAr
MTcxLDE2IEBAIGNsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdl
YkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogICAgIFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5y
ZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAgICAgaWYgKCFpczxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oY2FjaGVkUmVzb3VyY2Up
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2Fj
aGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNl
KTsKKworICAgIGF1dG8mIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1h
Z2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+
bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2FjaGVk
SW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBuYXRpdmVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiNjBlMzI2ZjEwYmY1
Y2UzY2E2ZmEzZjQwYjFhYThlMDk3OWQ0MjM3Li42M2U5NTJkN2UyYzE0ZWM5MTNjMTc5YTVhMmM2
N2RlNzUzN2FkMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBwcml2YXRlOgogICAgIF90ZXh0UmVjdHNJbkJvdW5k
aW5nUmVjdENvb3JkaW5hdGVzID0gY3JlYXRlTlNBcnJheShpbmRpY2F0b3JEYXRhLnRleHRSZWN0
c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpLmxlYWtSZWYoKTsKICAgICBfY29udGVudEltYWdl
U2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwogICAg
IGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpCi0gICAgICAgIF9j
b250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBp
bml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0Lmdl
dCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvbkRvd25NaXJyb3JlZF07CisgICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxp
Z2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVu
dGF0aW9uRG93bk1pcnJvcmVkXTsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2Up
Ci0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1h
Z2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07
CisgICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1h
Z2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1h
Z2VPcmllbnRhdGlvblVwXTsKIAogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGluZGljYXRvckRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdl
Om5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRh
dGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BB
TDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50
YXRpb25VcF07CiAgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgICAgICB9CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="429393"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412885</attachid>
            <date>2020-11-01 22:20:28 -0800</date>
            <delta_ts>2020-11-01 23:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101222027.patch</filename>
            <type>text/plain</type>
            <size>243860</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjY5MDhlMGU4MWFkOTJlMTUzMDI1NWEzYTJmNTdhYTY0OThhMDE3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtMTc0LDE2ICsxNzQsMTYgQEAgZW51bSBQYXRoRHJhd2lu
Z1N0eWxlIHsKIAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25z
dCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0g
bGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0
UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9w
ZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBp
ZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0
LCAqbmF0aXZlSW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBs
YXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0
YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBT
aGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1l
IGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRp
YyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUp
CiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFk
b3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBo
YSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkxLDggQEAgc3RhdGlj
IHZvaWQgZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBJbWFnZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBp
ZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpKQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVy
U2l6ZSkpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIo
cGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9h
dFJlY3QobGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBG
aWxsU291cmNlIGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRv
d1N0YXRlLmdsb2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MCwxMyBAQCB2b2lkIGRyYXdHbHlwaHMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYg
ZmlsbFNvdQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFs
cGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0
aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFs
cGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3Vy
ZmFjZSA9IG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3Jt
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7Cit9CisKK3ZvaWQgZHJhd1BsYXRm
b3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBn
bG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRm
b3JtQ29udGV4dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3ZDdhMGE1
MGU5YzE5MDY2ZGQ5M2RlNTk2MWQ2NjkxYS4uYzg4ODEyMTQ5NWEyZTJkOTJmMGMzNGNlY2Y2NjYw
YTQ2ZjlhZjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsOCBAQCB2b2lkIGNs
ZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lk
IGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29u
c3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+
JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwg
Y29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiwgTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYp
Owordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1
cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQ
YXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgSW50
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIElu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmLCBPcmllbnRhdGlv
blNpemluZyBvcGVyYXRpb25TaXppbmcgPSBPcmllbnRhdGlvblNpemluZzo6Tm9ybWFsKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYwYzcwNzY4MjBk
MDZhNTViYTVjNTU4MjQ4YzMuLmJkYjA1OTZkN2RjZjc1ZGQwNTliNjk4OTZhMmYxN2I1OWE3MDhk
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNCArMTIzLDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tl
U3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0
byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMs
IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJv
cmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjY2LDggKzI3MSw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZl
cigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICBpZiAo
YXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQorICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4
dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAK
IEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKQEAgLTY4MSw4ICs2
ODYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIAogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZv
cm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQor
ICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRHTENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCmluZGV4IGZhZGIyNDNlNjc4YjcyN2Yx
MGIwYjZiM2IyZTkwZjA1OGJkMzkyNWUuLjI4OWQ1MjRjODYyZGM5ZTAxNDNmMzc5OTFjNDQ1ZGE0
NmRlZmYxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCkBAIC01Niw3ICs1
Niw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgICAgIHNvdXJjZS0+c2V0RGF0YSht
X2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IHNv
dXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNl
ID0gc291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKS0+cGxhdGZvcm1JbWFnZSgpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBI
VE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVu
IGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggOGVmNGY3ODZiNzI0OTE0MjQ1
NmVmZjFmMGFkODIxNmNjOTA1NTM2Ny4uNDdlMTA3NWZjMTdhZWZhZTVjMWE2Nzg1Y2M1MzQ4ZTU5
ZWY5NjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODUs
MTcgKzI4NSwyMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgYwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oaW1h
Z2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0g
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCks
IGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENh
aXJvOjpkcmF3UGxhdGZvcm1JbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRl
c3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJm
YWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRl
cm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgSW50
U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAt
NDIxLDcgKzQyNyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwQm91
bmRzKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0
LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBk
ZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBseURldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRl
eCAxYzgyNzEzMGMyYTVmZTI4Zjc1MzVlMTk0NWEzM2RjOTY4NjIwNTE0Li5iOWZhMjRmOTU3ZGVk
ODc3ODU2Zjk4Zjk2ZWM4Yjg3MmEwMDI4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaApAQCAtNzYsNyArNzYsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggYWM0YjFmNzkwNzY4NGNhNmRiODYy
NzIxMzk5N2Q0YjU2YTgyMGU4Zi4uNjZlMGI4ZjRlYjU3MjBlYmI2MzcwYTBjNTQ5YjNkMmI2YTI0
OGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGNvbnN0IGF1dG8mIGRlc3RpbmF0aW9u
Q29udGV4dFN0YXRlID0gZGVzdENvbnRleHQuc3RhdGUoKTsKIAogICAgIGlmIChhdXRvIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tp
bmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNvcmU6OkNh
aXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOworICAgICAgICBkcmF3
TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAqaW1hZ2UsIGRlc3RS
ZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNv
cmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwogfQogCiB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
JmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENv
bG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0ZjFmNzU3MjZhYTgzZDg0YWRiYjM3MmFlZjc2ZGZjNGM4
ZWY3Yjg1Li4zZjc1Y2UxOTgxYmFjZWYzN2M5NDEyMjFlZDRjNmQwNTRmOWQyZTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJv
dygpIGNvbnN0CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1
cmZhY2UuZ2V0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6
IHsKQEAgLTc3LDE4ICs3NywxOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsK
ICAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwogCi0gICAgICAgIHJldHVybiBjb3B5Owor
ICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNvcHkpKTsKICAgICB9
CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gbV9zdXJm
YWNlOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UpOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3Vy
ZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAog
ewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdF
ICYmIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19D
T05URU5UX0NPTE9SX0FMUEhBKQpAQCAtMTAwLDcgKzEwMCw4IEBAIE5hdGl2ZUltYWdlUHRyIElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgp
IGNvbnN0CiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6
OnRvQkdSQURhdGEoKSBjb25zdAogewotICAgIGF1dG8gc3VyZmFjZSA9IGNhaXJvU3VyZmFjZUNv
ZXJjZVRvSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2Fpcm9TdXJmYWNlQ29lcmNl
VG9JbWFnZSgpOworICAgIGF1dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChzdXJm
YWNlLmdldCgpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGE2OWQ1ZWUwZmY2M2Y3Nzk1
ODI1ZGM2NzY2ZDZkMTZiNzI2MWQ2NWUuLjJiYjQwMjI2NTBjZjljMDFiNDZhMjJmODEzNmZmMGNi
ZjVlYjI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5o
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCA6
IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+JiYpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY2Fpcm9TdXJmYWNlQ29l
cmNlVG9JbWFnZSgpIGNvbnN0OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2Fpcm9TdXJmYWNl
Q29lcmNlVG9JbWFnZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBtdXRhYmxlIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKaW5kZXggMDVjMGY4MWNiMzQxOTBjYjM3M2JkODQzNDE1
OGI0ZDAzMzAxYWIwNC4uMTE1ZTBiZDBjOTY4ZDExMTZkOTk5MTU2N2NkY2JjNDkyOTFlMzkyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZl
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTM1LDM0ICszNSwyOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXpl
KGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IGNh
aXJvU3VyZmFjZVNpemUocGxhdGZvcm1JbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CiB9CiAKLWJv
b2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29s
IE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpbWFnZSB8fCBj
YWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOworICAgIHJldHVybiAhbV9wbGF0Zm9ybUltYWdlIHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2Nv
bnRlbnQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogfQog
Ci1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkg
Y29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50
U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6
ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICBpZiAoY2Fpcm9fc3VyZmFj
ZV9nZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAg
IGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkgIT0gQ0FJ
Uk9fU1VSRkFDRV9UWVBFX0lNQUdFKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHVu
c2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOworICAgIHVuc2lnbmVkKiBwaXhlbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpKTsKICAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVk
KGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwogfQogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQotewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUlt
YWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNs
ZWFyU3ViaW1hZ2VzKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggY2U1Mjc4MDYwYTBkZjVj
MTBmZDEyOGY5NmRmODkzYWY4NmEwMmNmMS4uNzQxYzk2ZjI0N2JiMmYyY2I5NjZhZWViZDhlNjhk
YzNlODZhM2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxMCArMzUsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdl
KCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8
IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBh
dXRvJiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKwogICAgIGNhaXJv
X3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1
cmZhY2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNl
ciBzcGFjZSBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBjZjhlYzI5YjVjZTY0YTUyMDE3
Yjc1ZDA5MGI1ZjkyNmZkNTYwMTJhLi4wYTE5OTBhZWFjMjkzZWQxMDk4MDI4OTg1MmUyNGFlOGU2
ZmM2ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTEgKzI4MCwxNiBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2Vy
VG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3Jt
SW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICNlbmRpZgpAQCAtNDQ3LDIzICs0NTIsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QKIAogICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UucHJlVHJhbnNmb3JtZWROYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlKTsKIAotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFn
ZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdl
OwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKHRpbGVS
ZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwor
ICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNv
ZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNo
b3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5
IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdl
IGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsK
LSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
dGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdh
cHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdl
IG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmlj
aWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0
aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFu
c2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQo
KSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBp
bWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWln
aHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRv
IGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVw
ZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3Qs
IGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpAQCAtNTEyLDcgKzUxNyw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3Rp
bmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG5hdGl2
ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAKICAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBU
aGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1h
c2sgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQxOTdlY2E4
MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uMDQwMzk0NjkxMzVjMzU1NTUyNDJlYzViOWY3YTJmODYzMDlj
MjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMzOCw4ICszMzgsOSBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgaQogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgp
KTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7
CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAg
IGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIC8v
IHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1w
YWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUg
aW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0KCkpOworICAg
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2Uu
Z2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0TW9k
ZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4
ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsKQEAg
LTM2MiwyMiArMzYzLDI2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250ZXh0
LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9p
bWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9p
bWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBOb3cgZGlzY2FyZCB0aGUg
b3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0aGUgYml0
bWFwIGNvbnRleHQuCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIG1fY2dJbWFn
ZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSkpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9CiAKLSAg
ICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1f
Y2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRz
UGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fY2dJbWFnZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsK
KyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50
KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQ
ZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBi
aXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJp
dHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBv
bmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8o
bV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRC
aXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNl
OwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxh
cmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhh
dCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaQogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAgIEFscGhh
Rm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFn
ZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0
QWxwaGFJbmZvKGltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAg
bV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0ICs0NjgsMTQgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBE
YXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Bp
eGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVBy
b3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLmdldCgpKSkp
OwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1f
aW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRC
eXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNpZ25lZCBzcmNVbnBhY2tBbGln
bm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJv
dyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRC
eXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVy
Um93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykg
ewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTU0Myw3ICs1
NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRT
aXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQo
KSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5k
cmF3UGxhdGZvcm1JbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRl
eCA1YjIwZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBmMWZhNWMxN2IzLi41NGI4NzhiNDM0NzZl
MTliZDZmNjE3MWY4YjQ5NjI3NzYzZTBmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBA
IC02NywyNCArNjcsMjQgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0
KCkKICAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2Fs
ZSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUp
CitzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2Fy
eShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
KQogewotICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLndpZHRoKCkpIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUuaGVpZ2h0KCkpKSkKLSAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dS
ZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkp
KTsKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgIT0g
YmFja2VuZFNpemUpCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VD
cmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKTsK
KyAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+
JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRl
clNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAg
IGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZO
ZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKTsKKyAgICAgICAgaW1hZ2UgPSBjcmVh
dGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShXVEZNb3ZlKGltYWdlKSwgYmFja2VuZFNpemUpOwog
ICAgIGVsc2UgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwg
NCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29u
dGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1Jl
Y3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNp
emUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNp
emU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsK
LSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRl
eHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQog
CiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsx
MTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25z
KTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5k
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCkBAIC0xMzgsNyArMTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAg
ICBBU1NFUlQodXRpKTsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cHJvdGVjdGVkUGl4ZWxBcnJheTsKIAogICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VU
SSgpKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAg
ICAgIGlmICghZGF0YVByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMu
d2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxB
cnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0
ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgaW1h
Z2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lv
bnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4
ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVs
c2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdl
KENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKQEAgLTE2NSwxMiArMTY1LDEy
IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2Vu
ZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAg
ICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNr
ZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7
Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWln
aHQoKSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQo
KSkpOwogICAgIH0KIAogICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLSAgICBpZiAoIWVuY29kZUltYWdlKGltYWdl
LmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCisgICAgaWYgKCFlbmNv
ZGVJbWFnZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHks
IGNmRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIFdU
Rk1vdmUoY2ZEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBm
ZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNmZjk0ZTc4ODUyYzZjOTIwLi4zNTZlYjUyNjMzNzQwNzA4
ODNhMjkzZDY1MGM2ODU0YjQ3ZWZkOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwCkBAIC0xMDcsMTQgKzEwNywxNCBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29udGV4dDsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhh
dmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
KSk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpOwogCiAgICAgY2FzZSBEb250
Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgK
KyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZSgKICAgICAg
ICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xv
clNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAg
ICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggYjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2MyN2E1NDk3
MzEwODI4NS4uN2QyMzNkMjIyNzg1YWQzZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdlYjhiM2Qx
YWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVlMDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJiODk3MTBh
ZTgzN2ZiZjliMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTEzNSwxNCArMTM1LDE0IEBAIENvbG9yRm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJH
UkE7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewotICAgIHJldHVybiBJT1N1cmZhY2U6OnNp
bmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRy
YXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2Us
IG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQog
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQw
Y2M3NDBmYi4uZjUwOWVlZTY1YTcyMmUxMjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgog
ICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVy
bmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0NmJlYTg3
NDQ1YWJhMGMuLmNkYWYxNWMxMDlkYzc5NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJDRzo6ZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAg
IHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQog
ewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9w
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAppbmRleCA0Njc5MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1MDZkZGY2
YjNiLi44YmEzMDA5ZDNiNmI2MzQ5NzNiYWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5n
QXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQp
IGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAK
aW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDljYjY0NmE1YmFkZWJkYWRjMi4uZjJmY2U0YWE0
Yjc3MWRhZTNmYjQyZDVkYmUzYWExMWZiMGU2YTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTM3LDIwICsz
NywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXpl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1cm4gaW1h
Z2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/
IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0
SGVpZ2h0KHBsYXRmb3JtSW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRp
dmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZl
SW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGluZm8gPSBD
R0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsKKyAgICBDR0ltYWdlQWxwaGFJbmZvIGlu
Zm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAgICAgcmV0
dXJuIChpbmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0g
a0NHSW1hZ2VBbHBoYUZpcnN0KTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNv
bGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3Jt
SW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigp
OwogCiAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQpAQCAtNjAsNyArNjAsNyBA
QCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgQ0dDb250ZXh0U2V0
QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgIENH
Q29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEs
IDEpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAK
ICAgICBpZiAoIXBpeGVsWzNdKQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CkBAIC02OCwxMSArNjgsMTEgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlk
Q29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0K
IAotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICNpZiBDQUNIRV9T
VUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6
OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAg
ICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdl
dCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2MjRmNjI3M2MzYjU3YWI5ZjNkYmNjNWFiMTdk
NWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYwNzg3ZDM3NzBhY2FhNjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
QEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIHBhdHRlcm5U
cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRy
YW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBw
bGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0
aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMs
IHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0
b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYg
KG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zv
cm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJuVHJhbnNm
b3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9N
QVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVu
ZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4g
bm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3LDEwICs4NCwxMCBAQCBDR1BhdHRlcm5SZWYg
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNl
clNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWln
aHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUg
Q0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxs
YmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUlt
YWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxl
YWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tz
ID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICBy
ZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRS
VUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdl
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGls
aW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCA1
MTNmNDU1Y2FkOGU1ZTYwNTI3MjhkMzQ3YzM5M2Q5ZjQ0N2ZlMzg4Li4yZmFiNjllMDMzMjZjMzdi
NGMzYzFjOTgzZDk0MDg5YTIxOGMyMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0xNzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJ
SW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBo
aWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUlt
YWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2Fz
dDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNl
KCldOwogICAgIAotICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUlt
YWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQoKV07CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdl
V2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZl
Y3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggZDZiZTI3NGM2OGRlZWZiNGMwZDUzNjFiZTY0ODE1MjQwMzJj
OWY0MS4uMWRkNGEyNGFmMmU4ODczMzkyMzdlOWEwZGExMzBkZDZiMjY0MTNkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKQEAgLTY4LDYgKzY4LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVp
bnQ4X3QgewogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAogICAgIERyYXdJbWFnZUJ1ZmZlciwK
ICAgICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgRHJhd1Bh
dHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggNDdjNzYyZTFhNjE5N2Q2YzhiOGM0NWZhOWNmZGMwNWEwM2Rl
ZTUxYi4uMTIwNTYyMjhhOTcwYTc3OWM4MzY2ZjkzOTIxZTk2ZDJjMzU4ZDk4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIHNpemVfdCBJ
dGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3TmF0aXZl
SW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRlbSkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRv
d25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6
CkBAIC04NTksOSArODYxLDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9
CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6
IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0gICAgLCBtX2ltYWdlKGlt
YWdlKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0
aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKQEAgLTg3MSwx
MiArODczLDQwIEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpCiAKIERyYXdOYXRpdmVJbWFnZTo6
fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdl
OjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0
LCBtX29wdGlvbnMpOworICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxlZ2F0ZS4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAg
ICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAgIC8vIEZJ
WE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUtcmVzb3Vy
Y2UtaWRlbnRpZmllciIsIGl0ZW0ucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAgIHJl
dHVybiB0czsKK30KKworRHJhd1BsYXRmb3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3UGxhdGZvcm1JbWFnZSkKKyAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2ltYWdl
U2l6ZShpbWFnZVNpemUpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAs
IG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9CisKK0Ry
YXdQbGF0Zm9ybUltYWdlOjp+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
RHJhd1BsYXRmb3JtSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
K3sKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBt
X2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworfQorCitzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BsYXRmb3JtSW1h
Z2UmIGl0ZW0pCiB7CiAgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihp
dGVtKTsKICAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgpAQCAtMTY3Nyw2ICsxNzA3LDcg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0
ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlOiB0
cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZlLWltYWdl
IjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6IHRzIDw8ICJk
cmF3LXBsYXRmb3JtLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBAIC0xODAwLDYgKzE4MzEsOSBAQCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQbGF0Zm9y
bUltYWdlPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDE1YmU1ZTg2
NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2NzY5NGZlOGUzLi43YjdlOWEwZTcwZGVjNzJmODI5MzMzNGM0
YjlkNTZhNGQzMmYwMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3
MDEsMjcgKzE3MDEsMzAgQEAgT3B0aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFn
ZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIGNsYXNzIERyYXdOYXRpdmVJbWFn
ZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0
aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHN0
YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJh
d05hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
IG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFn
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAg
ICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0
OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNzMxLDcgKzE3MzQsNyBAQCBwcml2YXRl
OgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAg
ZW5jb2RlciA8PCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8
IG1faW1hZ2VTaXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgZW5j
b2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0xNzQxLDcgKzE3NDQsNzcgQEAgdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBp
bWFnZTsKKyAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKKyAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXpl
OworICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOworICAgIGlmICghaW1hZ2VTaXplKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5h
dGlvblJlY3Q7CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgaWYgKCFkZXN0
aW5hdGlvblJlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICgh
c3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPElt
YWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAg
ICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
KmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKK30KKwor
Y2xhc3MgRHJhd1BsYXRmb3JtSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
cmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQbGF0Zm9y
bUltYWdlKCk7CisKKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNS
ZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3By
aXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisK
KyAgICBQbGF0Zm9ybUltYWdlUHRyIG1faW1hZ2U7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXpl
OworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNS
ZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdQbGF0Zm9ybUltYWdlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5jb2RlciA8
PCBtX2ltYWdlU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OworICAgIGVu
Y29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gRHJh
d1BsYXRmb3JtSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFs
PFBsYXRmb3JtSW1hZ2VQdHI+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE3NjYsNyArMTgzOSw3
IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqaW1hZ2Us
ICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAg
cmV0dXJuIERyYXdQbGF0Zm9ybUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVz
dGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQogCiBjbGFzcyBEcmF3UGF0dGVy
biA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CkBAIC0zMzMyLDYgKzM0MDUsOSBAQCB2b2lkIEl0ZW06
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZlSW1hZ2U+
KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3Jt
SW1hZ2U6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1hZ2U+KCp0
aGlzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CkBAIC0zNTUzLDYgKzM2MjksMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRp
dmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0g
RHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1dG8gaXRl
bSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM3MjcsNiArMzgw
Nyw3IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJ
bWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRT
Y2FsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d05hdGl2ZUltYWdlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdQbGF0Zm9ybUltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdMaW5l
KQpAQCAtMzc5OCw2ICszODc5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZDE0MmMzNzc5Y2I5
OTNlNzM3MmJiOGI4ODg3ZmNjNGM3NTJmZTk4OS4uNDBmY2FhYWE0NTM2ZmI1MDU1ZjM5NDI0NWZk
MDZjYjljZDlmYzUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMTk0LDkgKzE5NCwxOCBAQCBib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJh
d05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpKTsKKyAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxvY2tSZW1v
dGVOYXRpdmVJbWFnZShpbWFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFwcGVu
ZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJhd1BsYXRm
b3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVu
ZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFJlY29yZGVy
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMWM4Yzg5NjM3OGMwY2FmYmIyMTEyODk1OTdjZWUy
OGI0ZmE3NWQyLi5iODg5NTZhOTliMmI5OTVjYzgzMDcwYmE5MzdiNzE2NzQ2ODg0NTExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwpAQCAtMTA4LDcgKzEw
OSw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUs
IEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1h
Z2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRjOTk0
YjczMWZhODk1NGVmODgwM2FkYzI4ZjRmMjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYyYjdkNTdh
OTE2NTE0ZTYwZjk4OTZkN2Q2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUpLCBwcmVz
ZW50YXRpb25TaXplKSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25z
dAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFtX2ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBt
X2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5p
bWFnZSgpLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAgdm9pZCBk
cm9wSW1hZ2UoKSB7IG1faW1hZ2UgPSBudWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB1
bnNpZ25lZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIg
eyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCmluZGV4IDZlMmVhMDc5N2JkM2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlhN2QuLjU4
NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5MjBlNTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGluZGV4IDw9IG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5
YjIyZTExMGQyYjczZjVlNjc5MjE4Li5mMWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFh
MDA1YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMzIxNSw3ICszMjE1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICBy
ZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291
cmNlT3JpZW50YXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRlN2RiYzQ5
OWI1MWRhZWIuLjBhYjJjNmM5MTRiZmUzY2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIxNiw3ICsy
MTYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxh
dGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
TGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1
cGRhdGVFbmFibGVkVmlkZW9UcmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKaW5kZXggY2Q1MGExZTg2YzIzMTI2ZmRiODkxNGRh
M2EzOTcwMWZkZGQ2YTY2MS4uODRkZDRiNzgwMTI1ZDJlMmM1MTdhOTY2ODkzNmU0NTcwMTQ4NWU3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VH
dGsuY3BwCkBAIC01Niw3ICs1NiwxMCBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRH
ZGtQaXhidWYoKQogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1h
Z2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1cmZhY2Ug
PSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNlID8gY2Fp
cm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgxMzZjMWZm
ZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYwZDdiMTcx
ZDI2NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSWNvbjo6
SWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFn
ZSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25z
dCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJ
Y29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKIAogICAg
IGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdldCgpLCBz
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZSht
X2NnSW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5MDhmMTA3
NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLjliYjUwMjg5MGM2OTg4ZjM3ZWJkZGI5
MjM1MjEzYzViNGZlNTJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlm
ZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2ZUltYWdl
cykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24o
Y29uc3QgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7CiAgICAg
Ly8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRo
aXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUg
Y2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdl
J2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRp
dmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CisgICAg
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdl
QnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDYyOThjZjM2MDczYzdhZTQ0ZjQzYzZi
NTY0NDIyYjM3Yjg2Y2YxMDcuLmZjMmNiYjY4ZWIyYzQwMWJmYjE3NzBhZmJhY2M5Njg1Mjk2OTA4
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5LDExICsx
MDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZl
SW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXpl
LCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBv
cnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVTRShDQUlS
TykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLmdldCgp
OworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRz
KGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IGEy
YzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUuLjJlOWVlYzhmZjQ2ZWY0OTRm
ZDliMzFlMDBiOTllN2U0NDhlZDMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NTUsMjUgKzU1NSwzMSBAQCBi
b29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewotICAgIHN0cnVjdCBE
cmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7Ci0gICAgICAgIHZpcnR1YWwg
fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgc3RydWN0IERyYXdQbGF0Zm9ybUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24s
IE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewor
ICAgICAgICB2aXJ0dWFsIH5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAg
ICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlk
ZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRG
b3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBh
cmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3UGxh
dGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFy
ZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd05hdGl2ZUltYWdlPD5cbiI7Cisg
ICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdQbGF0Zm9ybUltYWdlPD5cbiI7CiAgICAg
ICAgIH0KICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYg
c3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BsYXRmb3JtSW1hZ2U+
KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKQEAgLTU5NCw3ICs2MDAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogCiAg
ICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7Cisg
ICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2Ut
PnBsYXRmb3JtSW1hZ2UoKSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3OSw3ICsxMDg1LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBG
bG9hdFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS5nZXQo
KSksIGRlc3RSZWN0KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdl
QnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCkpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgwOTNkNDEzNWI0ZDdiNjUxMWEx
NjA4N2FmZjEzZjYwM2VkMTNiYS4uZDg4NGExZjJjNzk1YTc3M2NlN2ZhZGJkNzRkOTAwNWMyNTMy
NzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVS
dWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4o
V2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVkMGM5Li5h
NjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVD
b250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiB7CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1l
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBhdXRvIGZy
YW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAjaWYgVVNF
KENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UuZ2V0KCk7
CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVzUGVyTGlu
ZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlmIFVTRShE
SVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4
IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUzOGYuLjBkZGZhOTY0YTFlYjBi
ZWM1YzYzZmJkOTBmMWExMjU4ZTUxOWI0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXllcj4gR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGlj
cwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IEdy
YXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1fbmVlZHNE
aXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQsMjYgKzI5
MywyNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBNYWtlIHRo
ZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAgICAgICAg
Ly8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBv
biBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlz
IGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0
IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRv
IHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNzdW1wdGlv
biBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuZXdO
YXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAg
ICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlmICghbmV3
TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5ld05hdGl2
ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBpZiAobmV3
TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRpdmVJbWFn
ZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJbWFnZTsK
ICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29tcG9zaXRl
ZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKICAgICAg
ICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAgICAg
IG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3Rvcigp
ICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJbWFnZS5n
ZXQoKSwgQ29udGVudHNMYXllclB1cnBvc2U6OkltYWdlKTsKKyAgICBzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBDb250
ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOwogICAgIG5vdGlmeUNoYW5nZShDb250ZW50Q2hhbmdl
KTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAxNWM1Yzc5
Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li41OGY0ZjM2NWQyNTczNDc3MjkzMjdhZmJjYWQxOGM3
YzE0YzNlZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmgiCkBAIC0xNTUsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckxheWVy
PiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2Jh
Y2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1MmM1ZGIw
Nzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3ZjkxMDFhYjA5
NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUs
IEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxz
ZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAsIG1fY29v
cmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBt
X2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5nVGlsZUNy
ZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01ODUsMTIg
KzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDog
bnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRy
OworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3Np
dGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5hdGl2
ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2U7CiAK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIG5vdGlm
eUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAg
ICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1
ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0
byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAgICAgICAg
IEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0gKm1fY29t
cG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ci5n
ZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBvYmplY3QgaWYgdGhl
IHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5pbWFnZUJh
Y2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVjZTEzZTQx
Li45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMjMs
NyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAgUmVmUHRy
PEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgUnVu
TG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5kaW5nVGls
ZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1N2Jh
ODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4xNzgwNzI5Mzg4NDY1Yzk2ZTgw
OTA2M2EzOGVhYmE0YmUxNDM3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAK
QEAgLTIwNywxMSArMjA3LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZv
cm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IENP
TVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBjNTNkOGJmODVjMDk5Mzg4MjkyNDhm
ODJkZGQ5MWM5ZGUzM2MwNzgzLi5hNTZhM2I0MTlkNWVkNGM0M2U0ZjZmMWJhOGFjYTU2MDM2NGMw
YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtMjgzLDcg
KzI4MywxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpk
cmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5wbGF0Zm9ybUlt
YWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZv
cm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1ZWIzNzBiNzViYWRlMDM5ZDZmOTQ4
NzJhZWFmNGNmMWU1ZTUzY2MuLjVmOTBmZjFmMWI5ZjAyYmIzMTdiMTYzZGY3MzYxM2MyNmZiNWRh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcxLDcgKzcxLDEw
IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIElt
YWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBi
b29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0
Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIyZTY5N2I2NGU4MWM1
Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGJpdG1h
cDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZiaXRtYXApOwog
ICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsNyArOTAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOwogfQog
Ci1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRyJiYgYml0
bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUltYWdlUHRy
JiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRmb3JtQ29u
dGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdl
dD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKQEAg
LTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAKICAgICB9CiAKLSAg
ICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShp
bWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZO
ZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRt
YXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRhcmdldCog
Yml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykK
IHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNpemUoaW1h
Z2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBS
ZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
cHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsK
KyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAg
ICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
IGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
Yml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25T
Y2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAgUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
cmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0
LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgp
LCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVy
VGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29t
cGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogewogICAgIGxv
YWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3ZGMyNjEuLjFkNTc0
YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgp
IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRl
OwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2Jp
dG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0ZjkzYjlkNGU5MjEzM2Q1NTNj
ZDNhNGIuLjkwM2M1MmQzMzBiM2I5Y2M1NWI1ZGFhNjUzM2MwYTMxZjRlNDJkMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
QEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3Qg
ZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVz
OyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
LmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgeworICAgICAg
ICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAm
JiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50
RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsK
ICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNy
Y1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODkyZTNjYWEyZTg1ZWJjZTM4MDVjMC4uZjBi
ODc1ZGRiNWE1Yjg4OTA4MzZlNDZjNTI1ODU1YmE5NjAwNmZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAt
OTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZy
YW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsg
KytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwotICAg
ICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBmcmFtZUltYWdl
QXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS5zaXpl
KCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkp
IHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKLSAg
ICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0
UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWln
aHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1
cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBzaXpl
X3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisgICAgICAgIG1fY3VycmVudEZyYW1l
ID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
c3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKKyAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFs
bGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5j
cHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0
YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0
VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIG1fcmVu
ZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0
Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0
MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2
YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAg
IE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwor
ICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmlu
YWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXgg
OTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uZWFjN2NiZTYxN2I5Yjdm
OTVhYWY2N2NhYjk1OTk2OWM5ZDljYTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAt
NTAsNjAgKzUwLDM2IEBAIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5
KCkKICAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7CiB9CiAKLUludFNpemUgbmF0aXZlSW1hZ2VT
aXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNp
emUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBVSU5UIHdp
ZHRoID0gMDsKLSAgICBVSU5UIGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7CisgICAgcmV0
dXJuIHBsYXRmb3JtSW1hZ2UgPyBwbGF0Zm9ybUltYWdlLT5HZXRQaXhlbFNpemUoKSA6IEludFNp
emUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBpZiAo
IWltYWdlKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZv
cm1hdCgpOworICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUlt
YWdlLT5HZXRQaXhlbEZvcm1hdCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUg
IT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZl
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8
fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3Bs
YXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBD
b2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogICAgIHJldHVybiBDb2xvcigpOwog
fQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAv
LyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdl
LCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdl
U2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1Jl
Y3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1h
Z2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJl
Y3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJz
YW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0
ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJO
YXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQog
I2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNo
ZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisg
ICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdl
LmdldCgpKTsKICNlbmRpZgogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1
cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUxZDY2ZDVj
MC4uNjgyODFjMGVkODNjMmQzOGQ3YzdmNWY5ZTFmMWIxZDcyMzM3YjQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2MywxMSBAQCBzdGF0
aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNv
bnN0IEludFBvaW50JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRl
cm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19j
dXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90Lngo
KSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsKICNlbHNl
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAg
ICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhv
dFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9zdXJmYWNl
KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHN1cmZhY2UuZ2V0KCksIGVmZmVjdGl2ZUhvdFNw
b3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSkpOwogI2VuZGlmIC8vIFVTRShHVEs0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUxMDQx
ZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUwYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBTZWNv
bmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0
ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMg
Y2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGlt
YWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
ODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIzODU3
NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBA
IC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2Zp
bGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjljYmM0
NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1
NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+cmVm
KCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAzMWZh
MTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBA
IHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAg
ICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3Vy
ZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJlZlB0
cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4gSW50
U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgfQog
ICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywg
c2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2Ft
cGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAg
fQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGZm
YzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNkMmE1
ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwog
CiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6
OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47
CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0aXZl
SW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZh
MzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0NGY4
MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBk
YXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAgICAg
ICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVh
dGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIg
cGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5j
b3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7
Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVN
ZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCks
IHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1wbGVC
dWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9y
bUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwogICAg
IGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIyODNh
ZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5
NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNH
V2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJh
d0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFn
ZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxl
bmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCBy
ZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBz
cmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRCbGVu
ZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApp
bmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li5jMGVkM2MxZGFi
ZWU0YWIzYTNkNzg3YTQ2ODdhNjUxZWYzZmE3MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIsOSBAQCBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3Jp
ZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAxLjApOwog
ICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAo
c3VyZmFjZSkgeworICAgIE5hdGl2ZUltYWdlIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZlSW1hZ2Ut
PmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fpcm9fc2V0
X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAgICAgIGNh
aXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQppbmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4xMTFhNGIy
YzM1NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lkIFJlbmRl
clRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVj
dC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJh
ZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENH
UmVjdE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAotICAgIENJ
SW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2
ZUltYWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFn
ZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07
CiAKICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBh
dGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBSZXRhaW5Q
dHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVj
dChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAv
IDIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDYzZWRmMTJlMjEzMzMwZGYyZGFjYjk2NTQwMjU2NTMxNjNiNDBiYzEuLmIwNjBkNzI4Mjlj
YjcxZDMwYjZiZjI4NWEzM2JiNzhlY2E3OWE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRp
dmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2Vz
IG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1h
Z2UgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCopCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikK
ICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
dGFyZ2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAgaWYgKCFt
X3BhZ2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjguLjI4MjVm
OWQzODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2NoZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNl
bmRpZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmlu
YWw7CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVybiBtX3Bh
Z2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1ZjVlODMx
YjMxYWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1h
Z2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9j
b250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZTY0NGY3
YWNmMzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUzYzU5MjI1
NzM3MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIo
U1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNv
bnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2
ODgyMDY1NDdkNTI1MDNiZC4uMTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5OWRkZGIz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTcsNyAr
MjE3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHInLAorICAgICAgICAnV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAgICAgICdX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1
NzgxOTJkZjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBm
NjUxOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJ
bWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCBy
ZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
MzM3OTU5NmJlNjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVkNzM2YTVl
ZGEwMWVjZTRiNGNjNTViMjhjYzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhh
bmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29k
ZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKK3N0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6
ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBOYXRpdmVJ
bWFnZTo6c2l6ZShwbGF0Zm9ybUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8
PCAhIWdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VT
aXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUlt
YWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0s
IGltYWdlU2l6ZSkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAg
IGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0
aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQogewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNz
Q29udGV4dDsKICAgICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKQEAgLTEx
MzYsMjUgKzExMzYsMjUgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5h
dGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbFBsYXRm
b3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSkKIHsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29sIGhhc0lt
YWdlID0gISFwbGF0Zm9ybUltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAKICAgICBp
ZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsK
KyAgICAgICAgZW5jb2RlUGxhdGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0K
IAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBk
ZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGltYWdlID0g
bnVsbHB0cjsKKyAgICBwbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgaGFzSW1h
Z2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3ICsxMTYz
LDE3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2
ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2Rlciwg
aW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3Jt
SW1hZ2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1
bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25h
bE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBsYXRmb3Jt
SW1hZ2UoZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxO
YXRpdmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCitib29sIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJl
dHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1
cm4gZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwog
fQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYx
OWNiNDk2YjA5YjkyYjhlMy4uZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4YmI5Njcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9w
dGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJp
Y3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3Jl
OjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYp
OwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
UHRyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlk
YTgzZDVmNjk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZl
NmEwNmU3NDMzMTc3YjkwM2RlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qg
dm9pZCoKIAogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7
Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAg
IGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4Njdl
YjJhMGZjNGVjODU3ZjM0NzVhNGU4MjVhMzVjLi5lNjMwMDk0OGFhODhkNzFiNTM3N2U0YWMxMDdj
OTA2ODU5OTkwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29ucwogICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VX
cml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2
Miw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9s
b2FkZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29u
RGF0YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQ
dHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBt
X2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1h
Z2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxs
b3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJh
c2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGlj
b25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxs
cHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZl
SW1hZ2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwog
ICAgICAgICAgICAgaWYgKCFpY29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChp
bWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRy
dWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpIHsKQEAgLTYyMiw3ICs2MjIs
NyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7
CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZElj
b25zTG9jayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0
KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihu
dWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29u
cy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3Rv
bmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAg
ICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNv
bkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5oCmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLjVjNzY5
MDE3ZjllNGRlMTg3NmNkNGFmNWUxN2NjZDFjYzFhZDZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5k
U2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBw
YWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwg
Ym9vbCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4mJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcg
KzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2Nr
IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFp
cjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1h
Z2U+LCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNv
bnNMb2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4g
bV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcw
YzEwYWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2RhODA5ZGMz
MmQxNDQ1MzlhMTRmNDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3Rh
dGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8
IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdl
dCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9v
bCBzaG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERy
YWdTb3VyY2VTdGF0ZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBhZmE4MmIx
MzBkNTI0MmVkMWM5OWQ2ZTJiYmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2ViNjdmOTZk
NzhlYWQ5MWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBAIHN0YXRp
YyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9w
U2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3Rl
ZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7
Ci0gICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2VsZWN0ZWRT
bmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0
TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1h
Z2UuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JF
ZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxl
Y3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAg
IF91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9j
XSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0p
OwogICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3
MzIsMTEgKzc3MzIsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBp
ZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
OworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0ZVRh
cmdldGVkRHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtNzk5MSwx
MyArNzk5MSwxMyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFj
ZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAKICAgICAg
ICAgYXV0byB1bnNlbGVjdGVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlv
bi0+bmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkg
eworICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFw
c2hvdEltYWdlLT5pc051bGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERy
b3AsICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5vdCBkZWNv
ZGUgdW5zZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUuY2xlYXJB
bGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFn
ID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25h
cHNob3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAgICBhdXRv
IHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRvIHNuYXBz
aG90VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNl
bGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3NuYXBzaG90
VmlldyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25h
cHNob3RWaWV3LmdldCgpXTsKQEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBVSU1lbnUg
Km1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJvbGxlciAq
cHJldmlld1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9y
LmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwor
ICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
IHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
CisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkg
KilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0
ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkw
ZjIyNGI4N2QyMTYuLmFjZWYwMDc5MzNlMmYyY2QwZTY3YjI0MmVmMDEwNWEyYjE0M2I0YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAg
LTk2LDEwICs5NiwxMCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHko
KTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VD
b3B5KCkpOwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYg
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4uOWUyNGFi
OTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6
OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5
QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4uNzlhMjEx
NGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIyMTNlMzQz
Li4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
ZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29s
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0MjgzODEu
LjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjgzLDcgKzE2
ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiB3ZWJGcmFtZSwg
Ym9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9vbCBpc0Fs
bW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdlUmVmIGlt
YWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBBU1NF
UlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwogCiAgICAgQ0dCaXRt
YXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMwMTIwYzM1
ZmRmM2FkZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZmMjcyNzQ4Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBpZiAodGV4dEluZGljYXRv
cikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVudElt
YWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9y
ZWxlYXNlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoISpjZ0ltYWdl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkODE3Njk5
Njc1ZWNmYmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRkZjk1MGNiZmU4MTYzYjEz
Njc1YWNkZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KQEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogICAgIFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFpczxXZWJDb3JlOjpDYWNoZWRJbWFn
ZT4oY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBXZWJDb3Jl
OjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFn
ZT4oKmNhY2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJ
bWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2Fj
aGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICAKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAo
IW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBiNjBlMzI2ZjEwYmY1Y2UzY2E2ZmEzZjQwYjFhYThlMDk3OWQ0MjM3Li42M2U5NTJkN2Uy
YzE0ZWM5MTNjMTc5YTVhMmM2N2RlNzUzN2FkMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBwcml2YXRlOgogICAg
IF90ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gY3JlYXRlTlNBcnJheShpbmRp
Y2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpLmxlYWtSZWYoKTsK
ICAgICBfY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZVNjYWxlRmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdo
bGlnaHQpCi0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1h
Z2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9y
aWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CisgICAgICAgIF9jb250
ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0
V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgp
LT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKICAgICBpZiAoaW5kaWNhdG9y
RGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJ
SW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJ
SW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxl
IG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKIAogICAgIGlmIChpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+
bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBf
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0
aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1h
Z2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAgICAgICBfY29udGVudEltYWdlV2l0
aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNv
bnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAg
ICAgICB9CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="429397"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412887</attachid>
            <date>2020-11-01 23:19:52 -0800</date>
            <delta_ts>2020-11-02 00:13:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201101231951.patch</filename>
            <type>text/plain</type>
            <size>244379</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjI1YTg1MmQ0NzdiNjdjZmNkODFkMTg0ZmEwODgxMjA4MzYxZGFmNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsK
IAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBv
aW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBu
YXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZl
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdT
aGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRy
YXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmls
bFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsK
KyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5
ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNl
IGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLT5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMs
IGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7Cit9CisKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBo
YSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4
dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3ZDdhMGE1MGU5YzE5MDY2
ZGQ5M2RlNTk2MWQ2NjkxYS4uYzg4ODEyMTQ5NWEyZTJkOTJmMGMzNGNlY2Y2NjYwYTQ2ZjlhZjY5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsOCBAQCB2b2lkIGNsZWFyUmVjdChQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlw
aHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tl
U291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQs
IFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29s
b3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXR0ZXJuKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgSW50U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1
cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEludGVycG9sYXRp
b25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmLCBPcmllbnRhdGlvblNpemluZyBv
cGVyYXRpb25TaXppbmcgPSBPcmllbnRhdGlvblNpemluZzo6Tm9ybWFsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYwYzcwNzY4MjBkMDZhNTViYTVj
NTU4MjQ4YzMuLmJkYjA1OTZkN2RjZjc1ZGQwNTliNjk4OTZhMmYxN2I1OWE3MDhkODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNCArMTIzLDE5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRl
clRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0
LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0
YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYg
KG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUg
PSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0
ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNv
IHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjY2LDggKzI3MSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZv
cm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQor
ICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIEludFJlY3Qg
R3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKQEAgLTY4MSw4ICs2ODYsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0
KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgaWYgKGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRHTENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCmluZGV4IGZhZGIyNDNlNjc4YjcyN2YxMGIwYjZiM2Iy
ZTkwZjA1OGJkMzkyNWUuLmM2YWE3NzE4ZTliNDM0MTViMjUwNjQ5M2VhNWFjYzY4MDU3ZjgxMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEdMQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCkBAIC01Niw5ICs1Niw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2ltYWdlLT5k
YXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJjZS0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNl
LT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIDEuIEZvciB0
ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlw
bHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3Ig
ZWFjaCBwaXhlbCwKICAgICAgICAgLy8gd2hpY2ggaXMgdHJ1ZSBhdCBwcmVzZW50IGFuZCBtYXkg
YmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlIGFuZCBuZWVkcyBhZGp1c3RtZW50IGFjY29yZGluZ2x5
LgogICAgICAgICAvLyAyLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxDYW52YXNFbGVtZW50IGlu
cHV0IGluIHdoaWNoIEFscGhhIGlzIGFscmVhZHkgUHJlbXVsdGlwbGllZCBpbiB0aGlzIHBvcnQs
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggOGVmNGY3ODZiNzI0
OTE0MjQ1NmVmZjFmMGFkODIxNmNjOTA1NTM2Ny4uNDdlMTA3NWZjMTdhZWZhZTVjMWE2Nzg1Y2M1
MzQ4ZTU5ZWY5NjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBA
IC0yODUsMTcgKzI4NSwyMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgYwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQbGF0Zm9ybUlt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFS
QU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRl
KCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwor
ICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0
KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0
LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJh
d1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KQpAQCAtNDIxLDcgKzQyNyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpj
bGlwQm91bmRzKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewog
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgICAgIENhaXJvOjpjbGlwVG9J
bWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aAppbmRleCAxYzgyNzEzMGMyYTVmZTI4Zjc1MzVlMTk0NWEzM2RjOTY4NjIwNTE0Li5iOWZhMjRm
OTU3ZGVkODc3ODU2Zjk4Zjk2ZWM4Yjg3MmEwMDI4YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaApAQCAtNzYsNyArNzYsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggYWM0YjFmNzkwNzY4NGNh
NmRiODYyNzIxMzk5N2Q0YjU2YTgyMGU4Zi4uNjZlMGI4ZjRlYjU3MjBlYmI2MzcwYTBjNTQ5YjNk
MmI2YTI0OGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGNvbnN0IGF1dG8mIGRlc3Rp
bmF0aW9uQ29udGV4dFN0YXRlID0gZGVzdENvbnRleHQuc3RhdGUoKTsKIAogICAgIGlmIChhdXRv
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29w
eUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZHJhd05hdGl2
ZUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNv
cmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOworICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAqaW1hZ2Us
IGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEs
IFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9u
dENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAg
Q2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3Bh
Y2UsIENvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0ZjFmNzU3MjZhYTgzZDg0YWRiYjM3MmFlZjc2
ZGZjNGM4ZWY3Yjg1Li4zZjc1Y2UxOTgxYmFjZWYzN2M5NDEyMjFlZDRjNmQwNTRmOWQyZTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRl
c1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlk
ZShtX3N1cmZhY2UuZ2V0KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5n
U3RvcmU6IHsKQEAgLTc3LDE4ICs3NywxOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAg
ICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAw
LCAwKTsKICAgICAgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwogCi0gICAgICAgIHJldHVybiBj
b3B5OworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNvcHkpKTsK
ICAgICB9CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
bV9zdXJmYWNlOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2Up
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNh
aXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBj
b25zdAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWly
b19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBF
X0lNQUdFICYmIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBD
QUlST19DT05URU5UX0NPTE9SX0FMUEhBKQpAQCAtMTAwLDcgKzEwMCw4IEBAIE5hdGl2ZUltYWdl
UHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9J
bWFnZSgpIGNvbnN0CiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OnRvQkdSQURhdGEoKSBjb25zdAogewotICAgIGF1dG8gc3VyZmFjZSA9IGNhaXJvU3Vy
ZmFjZUNvZXJjZVRvSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2Fpcm9TdXJmYWNl
Q29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVz
aChzdXJmYWNlLmdldCgpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGE2OWQ1ZWUwZmY2
M2Y3Nzk1ODI1ZGM2NzY2ZDZkMTZiNzI2MWQ2NWUuLjJiYjQwMjI2NTBjZjljMDFiNDZhMjJmODEz
NmZmMGNiZjVlYjI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2Fpcm9T
dXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBtdXRhYmxlIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1f
c3VyZmFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKaW5kZXggMDVjMGY4MWNiMzQxOTBjYjM3M2Jk
ODQzNDE1OGI0ZDAzMzAxYWIwNC4uMTE1ZTBiZDBjOTY4ZDExMTZkOTk5MTU2N2NkY2JjNDkyOTFl
MzkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTM1LDM0ICszNSwyOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZh
Y2VTaXplKGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFn
ZSA/IGNhaXJvU3VyZmFjZVNpemUocGxhdGZvcm1JbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CiB9
CiAKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Citib29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpbWFn
ZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05U
RU5UX0NPTE9SOworICAgIHJldHVybiAhbV9wbGF0Zm9ybUltYWdlIHx8IGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9S
OwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENv
bG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkg
IT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSB8fCBzaXplKCkgIT0g
SW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICBpZiAoY2Fpcm9f
c3VyZmFjZV9nZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdF
KQorICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkg
IT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAot
ICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOworICAgIHVuc2lnbmVkKiBw
aXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpKTsKICAgICByZXR1cm4gdW5wcmVtdWx0
aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwogfQogCi12b2lk
IGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQotewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBjbGVhck5h
dGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikKK3ZvaWQgTmF0aXZlSW1h
Z2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggY2U1Mjc4MDYw
YTBkZjVjMTBmZDEyOGY5NmRmODkzYWY4NmEwMmNmMS4uNzQxYzk2ZjI0N2JiMmYyY2I5NjZhZWVi
ZDhlNjhkYzNlODZhM2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxMCArMzUsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGls
ZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
KyAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKwogICAg
IGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJm
YWNlKHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBh
bmQgdXNlciBzcGFjZSBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBjZjhlYzI5YjVjZTY0
YTUyMDE3Yjc1ZDA5MGI1ZjkyNmZkNTYwMTJhLi4wYTE5OTBhZWFjMjkzZWQxMDk4MDI4OTg1MmUy
NGFlOGU2ZmM2ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yODAsMTEgKzI4MCwxNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+
bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNp
ZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICNlbmRpZgpAQCAtNDQ3LDIzICs0NTIsMjMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UucHJlVHJhbnNmb3JtZWROYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRp
bGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1
YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYg
KHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAgIHN1YkltYWdlID0gdGlsZUlt
YWdlOworICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxs
eS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2Uu
IEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFy
ZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhl
IGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdo
dCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJ
blJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBh
aW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVk
IGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNz
IGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRp
bGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFn
ZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYg
aCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2lu
Zy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1h
Z2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1h
Z2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhl
IGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpAQCAtNTEyLDcgKzUxNyw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgRmxvYXRTaXplIGJ1ZmZl
ckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXplKCk7Ci0gICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9
IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJ
WE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFs
cGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQx
OTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uMDQwMzk0NjkxMzVjMzU1NTUyNDJlYzViOWY3YTJm
ODYzMDljMjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMzOCw4ICszMzgsOSBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdl
LmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2Uu
Z2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1fY2dJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5n
ZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkp
OwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQog
ICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFn
ZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3Ig
dGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uo
aW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNl
R2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2Rl
bEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4
dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9k
ZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBD
b250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0
aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0
aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBOb3cgZGlzY2Fy
ZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0
aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9
IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSkpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9
CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9u
ZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VH
ZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fY2dJbWFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29t
cG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0g
OCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1Bl
ckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1h
cEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1h
Z2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9
IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8g
b25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8g
c28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAg
IEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAo
Q0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0lt
YWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAg
ICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0ICs0Njgs
MTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1h
dCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0
RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLmdl
dCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRh
dGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNpZ25lZCBzcmNVbnBh
Y2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRl
c1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1h
Z2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5
dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFk
ZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTU0
Myw3ICs1NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29u
dGV4dC5kcmF3UGxhdGZvcm1JbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNv
cHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAppbmRleCA1YjIwZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBmMWZhNWMxN2IzLi41NGI4Nzhi
NDM0NzZlMTliZDZmNjE3MWY4YjQ5NjI3NzYzZTBmYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwCkBAIC02NywyNCArNjcsMjQgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBD
b250ZXh0KCkKICAgICBjb250ZXh0KCkuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRp
b25TY2FsZSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBl
ZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpCitzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5l
Y2Vzc2FyeShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplKQogewotICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLndpZHRoKCkpIHx8IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUuaGVpZ2h0KCkpKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFn
ZSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWln
aHQoKSkpKTsKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXpl
KCkgIT0gYmFja2VuZFNpemUpCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENH
SW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQo
KSkpKTsKKyAgICByZXR1cm4gV1RGTW92ZShpbWFnZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1h
Z2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24g
cHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0
IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQog
ewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0g
UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKTsKKyAgICAgICAgaW1hZ2Ug
PSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShXVEZNb3ZlKGltYWdlKSwgYmFja2VuZFNp
emUpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQo
KSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9n
aWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9n
aWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdl
dCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwg
aW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1h
Z2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAg
ICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJ
bWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEg
fHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAg
ICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTEx
NCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDog
RG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBv
cHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9i
YWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgsNyArMTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBl
KTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKIAogICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwg
anBlZ1VUSSgpKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
CiAgICAgICAgIGlmICghZGF0YVByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVu
c2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICog
cGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0
bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92
aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAg
ICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURp
bWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0
ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQ
cm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAg
ICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKQEAgLTE2NSwxMiAr
MTY1LDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwg
YmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAg
ICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwot
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5n
ZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFn
ZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUo
KS5oZWlnaHQoKSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4
dC5nZXQoKSkpOwogICAgIH0KIAogICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLSAgICBpZiAoIWVuY29kZUltYWdl
KGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCisgICAgaWYg
KCFlbmNvZGVJbWFnZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCB1dGkuZ2V0KCksIHF1
YWxpdHksIGNmRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIFdURk1vdmUoY2ZEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApp
bmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNmZjk0ZTc4ODUyYzZjOTIwLi4zNTZlYjUyNjMz
NzQwNzA4ODNhMjkzZDY1MGM2ODU0YjQ3ZWZkOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCkBAIC0xMDcsMTQgKzEwNywxNCBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29u
dGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNv
cHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKSk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpOwogCiAgICAgY2Fz
ZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZSgK
ICAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQo
KSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2Uo
bV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAog
ICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggYjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2My
N2E1NDk3MzEwODI4NS4uN2QyMzNkMjIyNzg1YWQzZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdl
YjhiM2QxYWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVlMDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJi
ODk3MTBhZTgzN2ZiZjliMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIENvbG9yRm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gQ29sb3JGb3Jt
YXQ6OkJHUkE7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdl
KCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNp
bmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewotICAgIHJldHVybiBJT1N1cmZh
Y2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2Up
KSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5n
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBh
ZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMp
OwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEy
NGE5MDQwY2M3NDBmYi4uZjUwOWVlZTY1YTcyMmUxMjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90
IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0
NmJlYTg3NDQ1YWJhMGMuLmNkYWYxNWMxMDlkYzc5NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJD
Rzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bQogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRp
b25zKQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA0Njc5MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1
MDZkZGY2YjNiLi44YmEzMDA5ZDNiNmI2MzQ5NzNiYWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFS
ZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKaW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDljYjY0NmE1YmFkZWJkYWRjMi4uZjJm
Y2U0YWE0Yjc3MWRhZTNmYjQyZDVkYmUzYWExMWZiMGU2YTEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTM3
LDIwICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1h
Z2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6
OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICByZXR1
cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1J
bWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpLCBDR0lt
YWdlR2V0SGVpZ2h0KHBsYXRmb3JtSW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKIH0KIAotYm9v
bCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wg
TmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGlu
Zm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsKKyAgICBDR0ltYWdlQWxwaGFJ
bmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAg
ICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGlu
Zm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZl
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8
fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3Bs
YXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBD
b2xvcigpOwogCiAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQpAQCAtNjAsNyAr
NjAsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgQ0dDb250
ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwot
ICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAs
IDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQo
KSk7CiAKICAgICBpZiAoIXBpeGVsWzNdKQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2s7CkBAIC02OCwxMSArNjgsMTEgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNd
KTsKIH0KIAotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICNpZiBD
QUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRo
VGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2Up
CisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUlt
YWdlLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2MjRmNjI3M2MzYjU3YWI5ZjNkYmNj
NWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYwNzg3ZDM3NzBhY2FhNjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIHBh
dHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCisgICAgUGxhdGZvcm1JbWFn
ZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdl
KCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVj
dGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBv
ZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAg
ICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiBDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1
cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJu
VHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElm
IEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcg
aXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1
bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3LDEwICs4NCwxMCBAQCBDR1BhdHRl
cm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVj
dC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFz
ZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVh
c2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLm5h
dGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUlt
YWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2Fs
bGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsK
LSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNp
bmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRl
KGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0
ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpp
bmRleCA1MTNmNDU1Y2FkOGU1ZTYwNTI3MjhkMzQ3YzM5M2Q5ZjQ0N2ZlMzg4Li4yZmFiNjllMDMz
MjZjMzdiNGMzYzFjOTgzZDk0MDg5YTIxOGMyMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0xNzcsNyArMTc3LDcgQEAgUmV0YWlu
UHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJj
ZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNv
dXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aElPU3VyZmFjZTpk
b3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1hZ2UpLnN1cmZhY2UoKS5z
dXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNv
dXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQoKV07CisgICAgcmV0dXJuIFtDSUltYWdl
IGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNvbG9yTWF0cml4
JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggZDZiZTI3NGM2OGRlZWZiNGMwZDUzNjFiZTY0ODE1
MjQwMzJjOWY0MS4uMWRkNGEyNGFmMmU4ODczMzkyMzdlOWEwZGExMzBkZDZiMjY0MTNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTY4LDYgKzY4LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlw
ZSA6IHVpbnQ4X3QgewogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlLAogICAgIERyYXdJbWFnZUJ1
ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAg
RHJhd1BhdHRlcm4sCiAgICAgRHJhd1JlY3QsCiAgICAgRHJhd0xpbmUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDdjNzYyZTFhNjE5N2Q2YzhiOGM0NWZhOWNmZGMw
NWEwM2RlZTUxYi4uMTIwNTYyMjhhOTcwYTc3OWM4MzY2ZjkzOTIxZTk2ZDJjMzU4ZDk4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTE4LDYgKzExOCw4IEBAIHNp
emVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4g
c2l6ZW9mKGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3
TmF0aXZlSW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFn
ZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRl
bSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6
ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1JlY3Q6CkBAIC04NTksOSArODYxLDkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4g
dHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
ICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0gICAgLCBtX2lt
YWdlKGltYWdlKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwg
bV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKQEAg
LTg3MSwxMiArODczLDQwIEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpCiAKIERyYXdOYXRpdmVJ
bWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAotdm9pZCBEcmF3TmF0aXZlSW1h
Z2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2
ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewotICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9z
cmNSZWN0LCBtX29wdGlvbnMpOworICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWxl
Z2F0ZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkK
K3sKKyAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOworICAg
IC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUt
cmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkp
OworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwor
ICAgIHJldHVybiB0czsKK30KKworRHJhd1BsYXRmb3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdl
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0
ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSkKKyAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBt
X2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkK
KyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9
CisKK0RyYXdQbGF0Zm9ybUltYWdlOjp+RHJhd1BsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1faW1hZ2UsIG1faW1hZ2VT
aXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworfQorCitzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BsYXRm
b3JtSW1hZ2UmIGl0ZW0pCiB7CiAgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0
ZW0mPihpdGVtKTsKICAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgpAQCAtMTY3Nyw2ICsx
NzA3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZElt
YWdlOiB0cyA8PCAiZHJhdy10aWxlZC1zY2FsZWQtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZl
LWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6IHRz
IDw8ICJkcmF3LXBsYXRmb3JtLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBAIC0xODAwLDYgKzE4MzEsOSBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVt
KQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgdHMgPDwgZG93
bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQ
bGF0Zm9ybUltYWdlPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMDE1
YmU1ZTg2NjA2ZWNjMmY2Y2U4NTdjMWY3MTE2NzY5NGZlOGUzLi43YjdlOWEwZTcwZGVjNzJmODI5
MzMzNGM0YjlkNTZhNGQzMmYwMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTE3MDEsMjcgKzE3MDEsMzAgQEAgT3B0aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERy
YXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIGNsYXNzIERyYXdOYXRp
dmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxE
cmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
ICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRHJhd05hdGl2ZUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRp
dmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRp
b25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xNzMxLDcgKzE3MzQsNyBAQCBw
cml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd05hdGl2ZUltYWdlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7
CisgICAgZW5jb2RlciA8PCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBlbmNv
ZGVyIDw8IG1faW1hZ2VTaXplOwogICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7CiAg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CkBAIC0xNzQxLDcgKzE3NDQsNzcgQEAgdm9pZCBEcmF3
TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdl
UHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1h
Z2VTaXplOworICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOworICAgIGlmICghaW1hZ2VTaXplKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBk
ZXN0aW5hdGlvblJlY3Q7CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJlY3Q7CisgICAgaWYg
KCFkZXN0aW5hdGlvblJlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAg
IGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9u
czsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
K30KKworY2xhc3MgRHJhd1BsYXRmb3JtSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+IGNyZWF0ZShjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdQ
bGF0Zm9ybUltYWdlKCk7CisKKyAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zcmNSZWN0OyB9CisgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4+IGRlY29kZShEZWNvZGVyJik7
CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd1BsYXRmb3JtSW1hZ2UoY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0
OyB9CisKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1faW1hZ2U7CisgICAgRmxvYXRTaXplIG1faW1h
Z2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3Qg
bV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERyYXdQbGF0Zm9ybUltYWdlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CisgICAgZW5j
b2RlciA8PCBtX2ltYWdlU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0Owor
ICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdl
Pj4gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9w
dGlvbmFsPFBsYXRmb3JtSW1hZ2VQdHI+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE3NjYsNyAr
MTgzOSw3IEBAIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgq
aW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7
CisgICAgcmV0dXJuIERyYXdQbGF0Zm9ybUltYWdlOjpjcmVhdGUoKmltYWdlLCAqaW1hZ2VTaXpl
LCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwogfQogCiBjbGFzcyBEcmF3
UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CkBAIC0zMzMyLDYgKzM0MDUsOSBAQCB2b2lk
IEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3TmF0aXZl
SW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bs
YXRmb3JtSW1hZ2U6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1h
Z2U+KCp0aGlzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zNTUzLDYgKzM2MjksMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJ
dGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERy
YXdOYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gRHJhd1BsYXRmb3JtSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTM3Mjcs
NiArMzgwNyw3IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
VGlsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
VGlsZWRTY2FsZWRJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3SW1hZ2VCdWZmZXIpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd05hdGl2ZUltYWdlKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdQbGF0Zm9ybUltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKERyYXdQYXR0ZXJuKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdSZWN0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdMaW5lKQpAQCAtMzc5OCw2ICszODc5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdlLAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xp
bmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZDE0MmMz
Nzc5Y2I5OTNlNzM3MmJiOGI4ODg3ZmNjNGM3NTJmZTk4OS4uNDBmY2FhYWE0NTM2ZmI1MDU1ZjM5
NDI0NWZkMDZjYjljZDlmYzUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTk0LDkgKzE5NCwxOCBAQCBib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRl
bnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpKTsKKyAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fZGVsZWdhdGUtPmxv
Y2tSZW1vdGVOYXRpdmVJbWFnZShpbWFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2Uu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMWM4Yzg5NjM3OGMwY2FmYmIyMTEyODk1
OTdjZWUyOGI0ZmE3NWQyLi5iODg5NTZhOTliMmI5OTVjYzgzMDcwYmE5MzdiNzE2NzQ2ODg0NTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY2LDYgKzY2LDcg
QEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVt
b3RlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwpAQCAtMTA4
LDcgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUg
aFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4
IGRjOTk0YjczMWZhODk1NGVmODgwM2FkYzI4ZjRmMjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYy
YjdkNTdhOTE2NTE0ZTYwZjk4OTZkN2Q2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUp
LCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2Uo
KSBjb25zdAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKCFtX2ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCk7CisgICAgICAgIHJldHVybiBtX2lt
YWdlLT5pbWFnZSgpLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAg
dm9pZCBkcm9wSW1hZ2UoKSB7IG1faW1hZ2UgPSBudWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzks
NyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEo
KSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBo
b2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oCmluZGV4IDZlMmVhMDc5N2JkM2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlh
N2QuLjU4NjlkOGM4NmE0MTk0ZDNlMzg4ZWM5MjBlNTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGluZGV4IDw9IG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMo
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIw
OWQ4YmI5YjIyZTExMGQyYjczZjVlNjc5MjE4Li5mMWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRl
MzZhMGFhMDA1YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMzIxNSw3ICszMjE1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQK
ICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSgqbGF5ZXJCdWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1
dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3Zp
ZGVvU291cmNlT3JpZW50YXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRl
N2RiYzQ5OWI1MWRhZWIuLjBhYjJjNmM5MTRiZmUzY2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIx
Niw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAg
dm9pZCB1cGRhdGVFbmFibGVkVmlkZW9UcmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKaW5kZXggY2Q1MGExZTg2YzIzMTI2ZmRi
ODkxNGRhM2EzOTcwMWZkZGQ2YTY2MS4uODRkZDRiNzgwMTI1ZDJlMmM1MTdhOTY2ODkzNmU0NTcw
MTQ4NWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCkBAIC01Niw3ICs1NiwxMCBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdl
OjpnZXRHZGtQaXhidWYoKQogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2Ug
PSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0
aXZlSW1hZ2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1
cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNl
ID8gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgx
MzZjMWZmZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYw
ZDdiMTcxZDI2NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
SWNvbjo6SWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFn
ZShpbWFnZSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFn
ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsK
IAogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdl
dCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1J
bWFnZShtX2NnSW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5
MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLjliYjUwMjg5MGM2OTg4ZjM3
ZWJkZGI5MjM1MjEzYzViNGZlNTJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4g
SW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFn
ZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2
ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7
CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0
YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3Vn
aCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwg
YW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7
CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDYyOThjZjM2MDczYzdhZTQ0
ZjQzYzZiNTY0NDIyYjM3Yjg2Y2YxMDcuLmZjMmNiYjY4ZWIyYzQwMWJmYjE3NzBhZmJhY2M5Njg1
Mjk2OTA4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5
LDExICsxMDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJ
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0g
bmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVT
RShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IGEyYzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUuLjJlOWVlYzhmZjQ2
ZWY0OTRmZDliMzFlMDBiOTllN2U0NDhlZDMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NTUsMjUgKzU1NSwz
MSBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewotICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7Ci0gICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit7CisgICAgc3RydWN0IERyYXdQbGF0Zm9ybUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVy
YXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwg
RmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0
ZT4geworICAgICAgICB2aXJ0dWFsIH5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAog
ICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBv
dmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNv
bnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwy
PigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0
KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd05hdGl2ZUltYWdlPD5c
biI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdQbGF0Zm9ybUltYWdlPD5cbiI7
CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2Uu
Z2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BsYXRmb3Jt
SW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTU5NCw3ICs2MDAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1
cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3OSw3ICsxMDg1LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBGbG9hdFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFj
ZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBU
b0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgwOTNkNDEzNWI0ZDdi
NjUxMWExNjA4N2FmZjEzZjYwM2VkMTNiYS4uZDg4NGExZjJjNzk1YTc3M2NlN2ZhZGJkNzRkOTAw
NWMyNTMyNzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVk
MGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBh
dXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAj
aWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Uu
Z2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVz
UGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUzOGYuLjBkZGZhOTY0
YTFlYjBiZWM1YzYzZmJkOTBmMWExMjU4ZTUxOWI0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXll
cj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBH
cmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQs
MjYgKzI5MywyNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBN
YWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVh
bGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGlt
YWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlv
biB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQg
d2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNz
dW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5l
d05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBp
ZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRp
dmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJ
bWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZh
Y3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJ
bWFnZS5nZXQoKSwgQ29udGVudHNMYXllclB1cnBvc2U6OkltYWdlKTsKKyAgICBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBDb250ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOwogICAgIG5vdGlmeUNoYW5nZShDb250ZW50
Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAx
NWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li41OGY0ZjM2NWQyNTczNDc3MjkzMjdhZmJj
YWQxOGM3YzE0YzNlZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJO
YXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgiCkBAIC0xNTUsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
ckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
PiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1
MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3Zjkx
MDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXll
clR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVu
dChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAs
IG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAg
ICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5n
VGlsZUNyZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01
ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1Jl
cGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIDogbnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBu
dWxscHRyOworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9j
b21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9
IG5hdGl2ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1h
Z2U7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAg
IG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCkKICAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2Vk
ID0gdHJ1ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29y
ZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAg
ICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0g
Km1fY29tcG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1h
Z2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0ci5nZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBvYmplY3Qg
aWYgdGhlIHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5p
bWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVj
ZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAg
UmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9z
aXRlZE5hdGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAg
ICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5k
aW5nVGlsZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRl
eCA1N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4xNzgwNzI5Mzg4NDY1
Yzk2ZTgwOTA2M2EzOGVhYmE0YmUxNDM3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKQEAgLTIwNywxMSArMjA3LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3Jl
UGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNv
bnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3Rh
dGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRm
b3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBjNTNkOGJmODVjMDk5Mzg4
MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzLi5hNTZhM2I0MTlkNWVkNGM0M2U0ZjZmMWJhOGFjYTU2
MDM2NGMwYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAt
MjgzLDcgKzI4MywxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5wbGF0
Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29u
c3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3Jh
cGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1ZWIzNzBiNzViYWRlMDM5
ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2MuLjVmOTBmZjFmMWI5ZjAyYmIzMTdiMTYzZGY3MzYxM2My
NmZiNWRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcxLDcg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1
bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIyZTY5N2I2
NGU4MWM1Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZiaXRt
YXApOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsNyAr
OTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIp
OwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRy
JiYgYml0bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4
dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUlt
YWdlUHRyJiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRm
b3JtQ29udGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRl
clRhcmdldD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0
KTsKQEAgLTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAKICAgICB9
CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RG
TW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQy
RDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRh
cmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJv
dW5kcykKIHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNp
emUoaW1hZ2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBS
ZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFC
aXRtYXBSZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBp
bWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25T
Y2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olll
cykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICAg
ICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVp
bnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29s
dXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAg
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFw
VGFyZ2V0LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25T
Y2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogewog
ICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3ZGMyNjEu
LjFkNTc0YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92
ZXJyaWRlOwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2JpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0ZjkzYjlkNGU5MjEz
M2Q1NTNjZDNhNGIuLjkwM2M1MmQzMzBiM2I5Y2M1NWI1ZGFhNjUzM2MwYTMxZjRlNDJkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBz
aXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewor
ICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChp
bWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAgICAgICAgICAgIHNpemVfdCBj
dXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1l
ID0gaTsKICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODkyZTNjYWEyZTg1ZWJjZTM4MDVj
MC4uZjBiODc1ZGRiNWE1Yjg4OTA4MzZlNDZjNTI1ODU1YmE5NjAwNmZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cApAQCAtOTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5n
U291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6
ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZy
YW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
OwotICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFn
ZS5zaXplKCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlm
IChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lk
dGgoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFt
ZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6
ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFt
ZSA9IGN1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAg
ICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9
KTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3Vu
ZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4u
NzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3Qy
RDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAg
IG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYp
CitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5
M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRl
OWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90
KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZp
bmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAK
aW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uZWFjN2NiZTYx
N2I5YjdmOTVhYWY2N2NhYjk1OTk2OWM5ZDljYTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNw
cApAQCAtNTAsNjAgKzUwLDM2IEBAIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdG
YWN0b3J5KCkKICAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7CiB9CiAKLUludFNpemUgbmF0aXZl
SW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1h
Z2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBV
SU5UIHdpZHRoID0gMDsKLSAgICBVSU5UIGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBwbGF0Zm9ybUltYWdlLT5HZXRQaXhlbFNpemUoKSA6
IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWltYWdlKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQ
aXhlbEZvcm1hdCgpOworICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0
Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBo
YU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VT
aW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3Ig
TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
bWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYg
KCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJl
dHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogICAgIHJldHVybiBDb2xv
cigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRl
eHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5
IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAg
IEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0K
LSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVk
IGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAg
ICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBpZiAoc3Vic2FtcGxl
ZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0
KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1w
bGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAg
ICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgp
LCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25z
LCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2
b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLQogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgc3ViaW1h
Z2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRmb3JtSW1h
Z2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9y
bUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0N1cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUx
ZDY2ZDVjMC4uNjgyODFjMGVkODNjMmQzOGQ3YzdmNWY5ZTFmMWIxZDcyMzM3YjQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2MywxMSBA
QCBzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1h
Z2UsIGNvbnN0IEludFBvaW50JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3Qg
PSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVm
KGdka19jdXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RT
cG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsK
ICNlbHNlCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYg
KCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1h
Z2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9z
dXJmYWNlKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHN1cmZhY2UuZ2V0KCksIGVmZmVjdGl2
ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSkpOwogI2VuZGlmIC8vIFVTRShHVEs0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4
MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVl
ZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1J
bWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewog
ICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBp
bWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVt
cHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMz
YmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xv
clByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVh
NjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUy
MWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVs
cy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZh
ZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5
LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAg
ICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSks
IElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAg
IFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtd
KFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1
cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAg
ICAgfQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFu
c2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUs
IHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBb
dGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1l
ZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1w
bGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmlu
ZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0
OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUg
PSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8
TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVy
ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVs
cGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2
ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAx
NGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24p
CiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1h
Z2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVm
ZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29u
ZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5j
cmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCku
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShw
bGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkp
OwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2
ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMw
NGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRp
dmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwg
a0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250
ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1h
Z2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRT
ZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0
KCkpOworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fp
cm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcAppbmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li5jMGVk
M2MxZGFiZWU0YWIzYTNkNzg3YTQ2ODdhNjUxZWYzZmE3MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIs
OSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIElt
YWdlT3JpZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAx
LjApOwogICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAg
ICBpZiAoc3VyZmFjZSkgeworICAgIE5hdGl2ZUltYWdlIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZl
SW1hZ2UtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAg
ICAgIGNhaXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4x
MTFhNGIyYzM1NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lk
IFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1h
a2UocmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZz
ZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVj
dCA9IENHUmVjdE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAot
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdl
Lm5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFn
ZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKV07CiAKICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBw
aW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBS
ZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3Vu
ZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVu
c2lvbiAvIDIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCmluZGV4IDYzZWRmMTJlMjEzMzMwZGYyZGFjYjk2NTQwMjU2NTMxNjNiNDBiYzEuLmIwNjBk
NzI4MjljYjcxZDMwYjZiZjI4NWEzM2JiNzhlY2E3OWE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRo
ZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8g
UGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0
aXZlSW1hZ2UgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCopCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KikKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAg
aWYgKCFtX3BhZ2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjgu
LjI4MjVmOWQzODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2NoZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5h
bDsKICNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVy
biBtX3BhZ2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1
ZjVlODMxYjMxYWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXgg
ZTY0NGY3YWNmMzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUz
YzU5MjI1NzM3MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4K
ICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250
YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRl
MTA2MmQ2ODgyMDY1NDdkNTI1MDNiZC4uMTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5
OWRkZGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
MTcsNyArMjE3LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHInLAorICAgICAgICAnV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAg
ICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5M
b2FkQ2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1
NWM4YmM1NzgxOTJkZjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0
YjdlMTBmNjUxOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9X
S0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2UoQ0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6
ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VT
aXplLCByZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggMzM3OTU5NmJlNjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVk
NzM2YTVlZGEwMWVjZTRiNGNjNTViMjhjYzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJ
bWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGlt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBO
YXRpdmVJbWFnZTo6c2l6ZShwbGF0Zm9ybUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5j
b2RlciA8PCAhIWdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIGltYWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwg
aW1hZ2VTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0
Zm9ybUltYWdlLCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVj
dCh7IH0sIGltYWdlU2l6ZSkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNv
ZGVyLCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdy
YXBoaWNzQ29udGV4dDsKICAgICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsK
QEAgLTExMzYsMjUgKzExMzYsMjUgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0
Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25h
bFBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
cGxhdGZvcm1JbWFnZSkKIHsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29s
IGhhc0ltYWdlID0gISFwbGF0Zm9ybUltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAK
ICAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGlt
YWdlKTsKKyAgICAgICAgZW5jb2RlUGxhdGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdl
KTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNv
ZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGlt
YWdlID0gbnVsbHB0cjsKKyAgICBwbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wg
aGFzSW1hZ2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3
ICsxMTYzLDE3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25h
bE5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVj
b2RlciwgaW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBs
YXRmb3JtSW1hZ2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9p
ZCBBcmd1bWVudENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVP
cHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBs
YXRmb3JtSW1hZ2UoZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRD
b2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCitib29sIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewot
ICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAg
ICByZXR1cm4gZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1h
Z2UpOwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1
ODViYWYxOWNiNDk2YjA5YjkyYjhlMy4uZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4
YmI5NjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVj
dGlvbk9wdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9h
ZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+
IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBX
ZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRl
eCA5NTlkYTgzZDVmNjk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEy
MjgzYzZlNmEwNmU3NDMzMTc3YjkwM2RlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVh
YmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwg
Y29uc3Qgdm9pZCoKIAogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdl
KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0lt
YWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkp
OworICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0
NTg4NjdlYjJhMGZjNGVjODU3ZjM0NzVhNGU4MjVhMzVjLi5lNjMwMDk0OGFhODhkNzFiNTM3N2U0
YWMxMDdjOTA2ODU5OTkwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRh
YmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29ucwogICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdy
aXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYy
LDcgKzU2Miw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlm
ICghbV9sb2FkZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAg
ICBpY29uRGF0YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZl
SW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAg
ICAgICBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0
aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9
IG1fYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93
RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4Nyw3ICs1ODcs
NyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMu
c2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1l
PihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOworICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8
TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3co
KSkpOwogICAgICAgICAgICAgaWYgKCFpY29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAg
IGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRh
KSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpIHsKQEAgLTYyMiw3
ICs2MjIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3VsdCA9
IHRydWU7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xv
YWRlZEljb25zTG9jayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNv
bnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNU
aW1lPihudWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2Fk
ZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFT
aXplKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoaWNvbkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNp
emVBdmFpbGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5oCmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIu
LjVjNzY5MDE3ZjllNGRlMTg3NmNkNGFmNWUxN2NjZDFjYzFhZDZjYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29u
VVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCwgYm9vbCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2Ri
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAg
ICBMb2NrIG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6cGFpcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVk
SWNvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TmF0
aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9h
ZGVkSWNvbnNMb2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4
ZmNlNDcwYzEwYWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2Rh
ODA5ZGMzMmQxNDQ1MzlhMTRmNDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEg
QEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdl
KQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBj
Z0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0lt
YWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0
aWMgYm9vbCBzaG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNv
bnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBh
ZmE4MmIxMzBkNTI0MmVkMWM5OWQ2ZTJiYmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2Vi
NjdmOTZkNzhlYWQ5MWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBA
IHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zy
b21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5z
ZWxlY3RlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUlt
YWdlKCk7Ci0gICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2Vs
ZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9
IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBz
aG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1h
Z2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0p
OwogICAgIF91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3
IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5n
ZXQoKV0pOwogICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5j
b250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAK
QEAgLTc3MzIsMTEgKzc3MzIsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdl
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsK
LSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCldKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNy
ZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAt
Nzk5MSwxMyArNzk5MSwxMyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVz
T2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAK
ICAgICAgICAgYXV0byB1bnNlbGVjdGVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNl
bGVjdGlvbi0+bmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJ
bWFnZSkgeworICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0
ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5v
dCBkZWNvZGUgdW5zZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUu
Y2xlYXJBbGxEZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVk
aXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVj
dGVkU25hcHNob3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAg
ICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRv
IHNuYXBzaG90VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFn
ZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3Nu
YXBzaG90VmlldyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZp
ZXc6c25hcHNob3RWaWV3LmdldCgpXTsKQEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBV
SU1lbnUgKm1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJv
bGxlciAqcHJldmlld1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5s
aW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVh
c2VdOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5s
aW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgCisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5T
QXJyYXkgKilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJl
dmlld0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODli
YzRkNDkwZjIyNGI4N2QyMTYuLmFjZWYwMDc5MzNlMmYyY2QwZTY3YjI0MmVmMDEwNWEyYjE0M2I0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAKQEAgLTk2LDEwICs5NiwxMCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVy
biBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFn
ZUNvcHkoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNH
SW1hZ2VDb3B5KCkpOwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwog
I2VsaWYgVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4u
OWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6
Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdl
YkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4u
NzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIy
MTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAgICBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0
MjgzODEuLjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjgz
LDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiB3ZWJG
cmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9v
bCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdl
UmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENHSW1hZ2VSZWYg
aW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAg
ICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwogCiAgICAg
Q0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMw
MTIwYzM1ZmRmM2FkZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZmMjcyNzQ4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIGlkIDxE
T01FdmVudFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBpZiAodGV4dElu
ZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29u
dGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZSgpLT5wbGF0Zm9ybUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoISpj
Z0ltYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNh
Y2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBk
ODE3Njk5Njc1ZWNmYmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRkZjk1MGNiZmU4
MTYzYjEzNjc1YWNkZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViQ2FjaGUubW0KQEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERlZmF1bHRTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewog
ICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFpczxXZWJDb3JlOjpDYWNo
ZWRJbWFnZT4oY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBX
ZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNo
ZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNhY2hlZEltYWdlID0gZG93
bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFj
YWNoZWRJbWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICAKKyAgICBh
dXRvIG5hdGl2ZUltYWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAg
ICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBiNjBlMzI2ZjEwYmY1Y2UzY2E2ZmEzZjQwYjFhYThlMDk3OWQ0MjM3Li42M2U5
NTJkN2UyYzE0ZWM5MTNjMTc5YTVhMmM2N2RlNzUzN2FkMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBwcml2YXRl
OgogICAgIF90ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gY3JlYXRlTlNBcnJh
eShpbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpLmxlYWtS
ZWYoKTsKICAgICBfY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVNjYWxlRmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdp
dGhIaWdobGlnaHQpCi0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6
YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250
ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNj
YWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CisgICAgICAg
IF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
LmdldCgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUg
b3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKICAgICBpZiAoaW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxl
OnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKIAogICAgIGlmIChpbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5n
ZXQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAg
ICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9y
aWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBv
cmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAgICAgICBfY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
OwogICAgICAgICB9CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="429401"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412890</attachid>
            <date>2020-11-02 00:12:04 -0800</date>
            <delta_ts>2020-11-02 00:17:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201102001203.patch</filename>
            <type>text/plain</type>
            <size>245449</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjM4N2U4Y2I5MjVkMGVjYTI2ZGEzYzQyNzU3ODE3YjAyOWI1ZTA2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsK
IAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBv
aW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBu
YXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZl
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdT
aGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRy
YXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmls
bFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsK
KyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5
ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNl
IGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKK30KKwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA1MDVjMGFmNDdkN2EwYTUwZTljMTkwNjZk
ZDkzZGU1OTYxZDY2OTFhLi5jODg4MTIxNDk1YTJlMmQ5MmYwYzM0Y2VjZjY2NjBhNDZmOWFmNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQgY2xlYXJSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBo
cyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VT
b3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2Fs
ZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwg
VGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xv
ciYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uYmRiMDU5NmQ3ZGNmNzVkZDA1OWI2OTg5NmEyZjE3YjU5YTcwOGQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4
dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28g
d2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjcxLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9y
bUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisg
ICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4Niw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQo
KSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJl
OTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRh
dGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2Ut
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRl
eEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBs
eUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBl
YWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBi
ZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHku
CiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5w
dXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4ZWY0Zjc4NmI3MjQ5
MTQyNDU2ZWZmMWYwYWQ4MjE2Y2M5MDU1MzY3Li40N2UxMDc1ZmMxN2FlZmFlNWMxYTY3ODVjYzUz
NDhlNTllZjk2MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAg
LTI4NSwxNyArMjg1LDIzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
CkBAIC00MjEsNyArNDI3LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CmluZGV4IDFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5Njg2MjA1MTQuLmI5ZmEyNGY5
NTdkZWQ4Nzc4NTZmOThmOTZlYzhiODcyYTAwMjhiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2
ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi42NmUwYjhmNGViNTcyMGViYjYzNzBhMGM1NDliM2Qy
YjZhMjQ4YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29y
ZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAg
IGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICppbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwg
V2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250
Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZk
ZmM0YzhlZjdiODUuLjNmNzVjZTE5ODFiYWNlZjM3Yzk0MTIyMWVkNGM2ZDA1NGY5ZDJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdT
dG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAs
IDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNv
cHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwog
ICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBt
X3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fp
cm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNv
bnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVf
SU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNo
KHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYz
Zjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2
ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9z
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4
NDM0MTU4YjRkMDMzMDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUz
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFj
ZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdl
ID8gY2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0K
IAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdl
IHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7CisgICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJ
bnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0Up
CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAh
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0g
ICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRp
cGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBjZTUyNzgwNjBh
MGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi43NDFjOTZmMjQ3YmIyZjJjYjk2NmFlZWJk
OGU2OGRjM2U4NmEzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAg
Y2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZh
Y2Uoc3VyZmFjZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFu
ZCB1c2VyIHNwYWNlIGl0c2VsZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGNmOGVjMjliNWNlNjRh
NTIwMTdiNzVkMDkwYjVmOTI2ZmQ1NjAxMmEuLjBhMTk5MGFlYWMyOTNlZDEwOTgwMjg5ODUyZTI0
YWU4ZTZmYzZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxMSArMjgwLDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5t
X3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogI2VuZGlmCkBAIC00NDcsMjMgKzQ1MiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAo
dGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFp
bnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQg
aW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3Mg
ZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGls
ZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBo
ID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5n
LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFn
ZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFn
ZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUg
bGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MTIsNyArNTE3LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklY
TUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxw
aGEgbWFzayBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5
N2VjYTgxYmJkYmM0ZTA1NjdlNDNjMDRkLi4wNDAzOTQ2OTEzNWMzNTU1NTI0MmVjNWI5ZjdhMmY4
NjMwOWMyMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2Uu
Z2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5n
ZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ3LDcgKzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7
CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShp
bWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VH
ZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVs
SW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
OwpAQCAtMzYyLDIyICszNjMsMjYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENv
bnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJk
IHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRo
ZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9j
Z0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0K
IAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25l
bnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21w
b25lbnQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0
Qml0c1BlclBpeGVsKGltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0g
ZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBv
bmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBz
byB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBpCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAg
QWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChD
R0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAg
ICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwx
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0
ID09IERhdGFGb3JtYXQ6Ok51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXRE
YXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0
KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0
YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFj
a0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFn
ZUdldEJ5dGVzUGVyUm93KGltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0
ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRk
aW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTQz
LDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMo
Y29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXplLmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICBjb250
ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1YzE3YjMuLjU0Yjg3OGI0
MzQ3NmUxOWJkNmY2MTcxZjhiNDk2Mjc3NjNlMGZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKQEAgLTY3LDI0ICs2NywyNCBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENv
bnRleHQoKQogICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlv
blNjYWxlKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSkKK3N0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpCiB7Ci0gICAgaWYgKGltYWdlICYmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IHN0
YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUud2lkdGgoKSkgfHwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKQot
ICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdo
dCgpKSkpOwotICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUo
KSAhPSBiYWNrZW5kU2l6ZSkKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
KSkpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFn
ZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
CiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KFdURk1vdmUoaW1hZ2UpLCBiYWNrZW5kU2l6
ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0lt
YWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8
fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVjdFNjYWxlZC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9w
dGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2Jh
Y2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUp
OwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBq
cGVnVVRJKCkpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5z
aW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBw
aXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAg
ICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGlt
ZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dC
aXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAg
IH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24g
PT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwpAQCAtMTY1LDEyICsx
NjUsMTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdl
dCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgp
LmhlaWdodCgpKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGlmICghZW5jb2RlSW1hZ2Uo
aW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKKyAgICBpZiAo
IWVuY29kZUltYWdlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHV0aS5nZXQoKSwgcXVh
bGl0eSwgY2ZEYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gV1RGTW92ZShjZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjM1NmViNTI2MzM3
NDA3MDg4M2EyOTNkNjUwYzY4NTRiNDdlZmQ5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTEwNywxNCArMTA3LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250
ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CiAKICAgICBjYXNl
IERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKAog
ICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZSht
X2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAg
ICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3
YTU0OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2Vi
OGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4
OTcxMGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1h
dDo6QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lu
a0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFj
ZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkp
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0
YTkwNDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2
YmVhODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNH
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlv
bnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUw
NmRkZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcAppbmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi5mMmZj
ZTRhYTRiNzcxZGFlM2ZiNDJkNWRiZTNhYTExZmIwZTZhMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzcs
MjAgKzM3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFn
ZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6
c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVy
biBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUlt
YWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgocGxhdGZvcm1JbWFnZS5nZXQoKSksIENHSW1h
Z2VHZXRIZWlnaHQocGxhdGZvcm1JbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwogfQogCi1ib29s
IG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBO
YXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENHSW1hZ2VBbHBoYUluZm8gaW5m
byA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAgIENHSW1hZ2VBbHBoYUlu
Zm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICAg
ICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5m
byA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxh
dGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENv
bG9yKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs2
MCw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgp
KTsKIAogICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjazsKQEAgLTY4LDExICs2OCwxMSBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwogfQogCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENB
Q0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkK
KyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1
YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0
dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0
aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9m
IGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAg
ICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNy
ZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0
aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1h
Z2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9Owot
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUo
aW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDUxM2Y0NTVjYWQ4ZTVlNjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjJmYWI2OWUwMzMy
NmMzN2I0YzNjMWM5ODNkOTQwODlhMjE4YzIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNl
R3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRv
d25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1
cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291
cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgm
IGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNmJlMjc0YzY4ZGVlZmI0YzBkNTM2MWJlNjQ4MTUy
NDAzMmM5ZjQxLi4xZGQ0YTI0YWYyZTg4NzMzOTIzN2U5YTBkYTEzMGRkNmIyNjQxM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjgsNiArNjgsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBl
IDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgRHJhd0ltYWdlQnVm
ZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBE
cmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0N2M3NjJlMWE2MTk3ZDZjOGI4YzQ1ZmE5Y2ZkYzA1
YTAzZGVlNTFiLi4xMjA1NjIyOGE5NzBhNzc5YzgzNjZmOTM5MjFlOTZkMmMzNThkOThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTgsNiArMTE4LDggQEAgc2l6
ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdl
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKQEAgLTg1OSw5ICs4NjEsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSAgICAsIG1faW1h
Z2UoaW1hZ2UpCisgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQpAQCAt
ODcxLDEyICs4NzMsNDAgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGkKIAogRHJhd05hdGl2ZUlt
YWdlOjp+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCi12b2lkIERyYXdOYXRpdmVJbWFn
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3Ny
Y1JlY3QsIG1fb3B0aW9ucyk7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVn
YXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQor
eworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAg
Ly8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1y
ZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6RHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQor
ICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30K
KworRHJhd1BsYXRmb3JtSW1hZ2U6On5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKKwor
dm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAoreworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNp
emUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7Cit9CisKK3N0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGxhdGZv
cm1JbWFnZSYgaXRlbSkKIHsKICAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRl
bSY+KGl0ZW0pOwogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCkBAIC0xNjc3LDYgKzE3
MDcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1h
Z2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUt
aW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZTogdHMg
PDwgImRyYXctcGxhdGZvcm0taW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTE4MDAsNiArMTgzMSw5IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Bs
YXRmb3JtSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwMTVi
ZTVlODY2MDZlY2MyZjZjZTg1N2MxZjcxMTY3Njk0ZmU4ZTMuLjdiN2U5YTBlNzBkZWM3MmY4Mjkz
MzM0YzRiOWQ1NmE0ZDMyZjAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTcwMSwyNyArMTcwMSwzMCBAQCBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJh
d0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogY2xhc3MgRHJhd05hdGl2
ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlv
blJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTE3MzEsNyArMTczNCw3IEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9pbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIGVuY29k
ZXIgPDwgbV9pbWFnZVNpemU7CiAgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKQEAgLTE3NDEsNyArMTc0NCw3NyBAQCB2b2lkIERyYXdO
YXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFn
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQ
dHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFn
ZVNpemU7CisgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CisgICAgaWYgKCFpbWFnZVNpemUpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRl
c3RpbmF0aW9uUmVjdDsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAg
aWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7CisgICAgZGVjb2RlciA+PiBvcHRpb25z
OworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwor
fQorCitjbGFzcyBEcmF3UGxhdGZvcm1JbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1Bs
YXRmb3JtSW1hZ2UoKTsKKworICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7
IH0KKworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFNpemUgbV9pbWFn
ZVNpemU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBt
X3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKKyAgICBlbmNv
ZGVyIDw8IG1faW1hZ2VTaXplOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+
PiBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8UGxhdGZvcm1JbWFnZVB0cj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTc2Niw3ICsx
ODM5LDcgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpp
bWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
KyAgICByZXR1cm4gRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUs
ICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9CiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKQEAgLTMzMzIsNiArMzQwNSw5IEBAIHZvaWQg
SXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJ
bWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxh
dGZvcm1JbWFnZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFn
ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKQEAgLTM1NTMsNiArMzYyOSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJh
d05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0
byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzcyNyw2
ICszODA3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZFNjYWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdJbWFnZUJ1ZmZlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3TmF0aXZlSW1hZ2UpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1BsYXRmb3JtSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d0xpbmUpCkBAIC0zNzk4LDYgKzM4NzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1JlY3QsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkMTQyYzM3
NzljYjk5M2U3MzcyYmI4Yjg4ODdmY2M0Yzc1MmZlOTg5Li40MGZjYWFhYTQ1MzZmYjUwNTVmMzk0
MjQ1ZmQwNmNiOWNkOWZjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0xOTQsOSArMTk0LDE4IEBAIGJvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVu
dChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucykpOworICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9kZWxlZ2F0ZS0+bG9j
a1JlbW90ZU5hdGl2ZUltYWdlKGltYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlY29yZGVyOjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxYzhjODk2Mzc4YzBjYWZiYjIxMTI4OTU5
N2NlZTI4YjRmYTc1ZDIuLmI4ODk1NmE5OWIyYjk5NWNjODMwNzBiYTkzN2I3MTY3NDY4ODQ1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CkBAIC0xMDgs
NyArMTA5LDggQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
ZGM5OTRiNzMxZmE4OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJi
N2Q1N2E5MTY1MTRlNjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSks
IHByZXNlbnRhdGlvblNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIW1faW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIG1faW1hZ2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2
b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgp
ICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhv
bGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKaW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3
ZC4uNTg2OWQ4Yzg2YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5
ZDhiYjliMjJlMTEwZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUz
NmEwYWEwMDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAog
ICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3
ZGJjNDk5YjUxZGFlYi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2
LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2
b2lkIHVwZGF0ZUVuYWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4
OTE0ZGEzYTM5NzAxZmRkZDZhNjYxLi44NGRkNGI3ODAxMjVkMmUyYzUxN2E5NjY4OTM2ZTQ1NzAx
NDg1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUd0ay5jcHAKQEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6
OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgc3Vy
ZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJuIHN1cmZhY2Ug
PyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlLmdldCgpKSA6IDA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggODEz
NmMxZmZmNDViOWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYzI0Nzk1ZjUwOWEzMzZlZjBk
N2IxNzFkMjY2NDQ2Y2FhZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIAotSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJ
Y29uOjpJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdl
KGltYWdlKQogewogfQpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRl
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdl
KGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitSZWZQdHI8SWNvbj4gSWNvbjo6
Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogewogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCB2
b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCkKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwog
CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25R
dWFsaXR5OjpIaWdoKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2NnSW1hZ2UuZ2V0
KCksIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUlt
YWdlKG1fY2dJbWFnZSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggNjkw
OGYxMDc2MzJlODkwMThjYTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4uOWJiNTAyODkwYzY5ODhmMzdl
YmRkYjkyMzUyMTNjNWI0ZmU1MmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNzQsNyArNzQsNyBAQCBSZWY8SW1hZ2U+IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBJ
bWFnZTo6bnVsbEltYWdlKCk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdl
Ojp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYgbmF0aXZl
SW1hZ2VzKQorUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRh
dGlvbihjb25zdCBWZWN0b3I8UmVmUHRyPE5hdGl2ZUltYWdlPj4mIG5hdGl2ZUltYWdlcykKIHsK
ICAgICAvLyBJZiBuYXRpdmVJbWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRh
aW4gdGhpcyBpbWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQogICAgIC8vIEV2ZW4gdGhvdWdo
IHRoZSBjYWxsIHRvIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdpbGwgZmFpbCBh
bmQgd2UnbGwgaGFuZGxlIGl0IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4OSw3IEBAIFJldGFpblB0
cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9y
PE5hdGl2ZUltYWdlUHRyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0dJbWFnZURlc3Rp
bmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLmdldCgpLCAwKTsK
KyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3Rp
bmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBkYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggNjI5OGNmMzYwNzNjN2FlNDRm
NDNjNmI1NjQ0MjJiMzdiODZjZjEwNy4uZmMyY2JiNjhlYjJjNDAxYmZiMTc3MGFmYmFjYzk2ODUy
OTY5MDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMDks
MTEgKzEwOSwxNCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZmZXIpKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUlt
YWdlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBu
YXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0
KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxwaGEobmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4dHVyZTo6
U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNF
KENBSVJPKQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Uu
Z2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURh
dGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKHN1cmZhY2UpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5k
ZXggYTJjOWUwOTNmYzE0YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1NS4uMmU5ZWVjOGZmNDZl
ZjQ5NGZkOWIzMWUwMGI5OWU3ZTQ0OGVkMzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NSwyNSArNTU1LDMx
IEBAIGJvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQorYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7Ci0gICAgc3Ry
dWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25E
YXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQ
YWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKLSAgICAgICAgdmly
dHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OworICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBzdHJ1Y3QgRHJhd1BsYXRmb3JtSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJh
dGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBG
bG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRl
PiB7CisgICAgICAgIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBkZWZhdWx0OwogCiAg
ICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92
ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29u
dGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+
KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRy
YXdQbGF0Zm9ybUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQo
KSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKICAg
ICAgICAgewotICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3TmF0aXZlSW1hZ2U8Plxu
IjsKKyAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd1BsYXRmb3JtSW1hZ2U8PlxuIjsK
ICAgICAgICAgfQogICAgIH07CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBh
dXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0
ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5n
ZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGxhdGZvcm1J
bWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9
CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQpAQCAtNTk0LDcgKzYwMCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUo
KSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMp
KTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3Vy
ZmFjZS0+cGxhdGZvcm1JbWFnZSgpKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC0xMDc5LDcgKzEwODUsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNv
bnN0IEZsb2F0UgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNl
LmdldCgpKSwgZGVzdFJlY3QpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRv
SW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSksIGRlc3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCAzODA5M2Q0MTM1YjRkN2I2
NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhLi5kODg0YTFmMmM3OTVhNzczY2U3ZmFkYmQ3NGQ5MDA1
YzI1MzI3N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRp
dmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlR0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0MjQxODBjOGFiNWQw
YzkuLmE2MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlR0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28K
IHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
ZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1
dG8gZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
IGlmICghZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTksNyArMTU5LDcgQEAg
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7CiAKICNp
ZiBVU0UoQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5n
ZXQoKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQ
ZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggMmFiZjQzODJkMzAwZjRlMWQzMzIxOTMxZWE5OWRhNDQ0ZmExZTM4Zi4uMGRkZmE5NjRh
MWViMGJlYzVjNjNmYmQ5MGYxYTEyNThlNTE5YjQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxHcmFwaGljc0xheWVy
PiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdy
YXBoaWNzCiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50KQogICAg
IDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2VzKQogICAgICwgbV9u
ZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKQEAgLTI5NCwy
NiArMjkzLDI2IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIC8vIE1h
a2UgdGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBjaGFuZ2VkLgotICAg
ICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFs
aXR5IG9uIGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1h
Z2UgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9u
IHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIgaXMgYSB2YWxpZCB3
YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhpcyBhc3N1
bXB0aW9uIGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRy
IG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
Ci0gICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1dG8gbmV3TmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYg
KCFuZXdOYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAobmV3
TmF0aXZlSW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGlm
IChuZXdOYXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5ld05hdGl2
ZUltYWdlUHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5ld05hdGl2ZUlt
YWdlOwogICAgICAgICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAgICAgICAgbV9jb21w
b3NpdGVkSW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwog
ICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAg
ICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFnZVNjYWxlRmFj
dG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBudWxscHRy
OwogICAgIH0KIAotICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKG1fY29tcG9zaXRlZElt
YWdlLmdldCgpLCBDb250ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOworICAgIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKG1fY29tcG9zaXRlZEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpJbWFnZSk7CiAgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRD
aGFuZ2UpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDNiM2E0ODMzMDE1
YzVjNzljZDZlNmM5MzBlMmI1NzdmNDE0ZjQxNTQuLjU4ZjRmMzY1ZDI1NzM0NzcyOTMyN2FmYmNh
ZDE4YzdjMTRjM2VlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCIKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIFRleHR1
cmVNYXBwZXJMYXllciBtX2xheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
TGF5ZXI+IG1fYmFja2Ryb3BMYXllcjsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBv
c2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50IG1fY2hhbmdlTWFzazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDUy
YzVkYjA3NzYwZWY3Y2YxNWYwOWMyODM3OGZjZmQ0ZDgwZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEw
MWFiMDk2Y2FiMzY2MjcwYzQ0ODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNiBAQCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVy
VHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50
KGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwg
bV9jb29yZGluYXRvcigwKQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAg
ICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdFBlbmRpbmdU
aWxlQ3JlYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4
NSwxMiArNTg0LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoYm9vbCBzaG93KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZVB0ciA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgOiBudWxscHRyOwotICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9PSBuYXRpdmVJbWFnZVB0cikKKyAgICBhdXRvIG5hdGl2
ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51
bGxwdHI7CisgICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlID09IG5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZSA9IGltYWdlOwotICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0g
bmF0aXZlSW1hZ2VQdHI7CisgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFn
ZTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAg
bm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwpAQCAtODQ5LDExICs4NDgsMTEgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogICAgIG1fbmljb3NpYS5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQg
PSB0cnVlOwogCiAgICAgLy8gRGV0ZXJtaW5lIGltYWdlIGJhY2tpbmcgcHJlc2VuY2UgYWNjb3Jk
aW5nIHRvIHRoZSBjb21wb3NpdGVkIGltYWdlIHNvdXJjZS4KLSAgICBpZiAobV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIpIHsKKyAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAg
ICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgYXV0byYgaW1hZ2UgPSAq
bV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgICAgIHVpbnRwdHJfdCBpbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KCZpbWFnZSk7Ci0gICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFn
ZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyLmdldCgpKTsKKyAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSk7CiAKICAgICAgICAgLy8gUmVzcGF3biB0aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBp
ZiB0aGUgdW5kZXJseWluZyBpbWFnZSBjaGFuZ2VkLgogICAgICAgICBpZiAobV9uaWNvc2lhLmlt
YWdlQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IGVlOGY1Nzg3OWFkYTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNl
MTNlNDEuLjlmMGUxNDk2YmRjYzVkMmRiNmE5ZTY2YjAyNDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0gbV9uZWVkc0Rpc3BsYXk7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2U7CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAg
ICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRp
bmdUaWxlQ3JlYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4
IDU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkuLjE3ODA3MjkzODg0NjVj
OTZlODA5MDYzYTM4ZWFiYTRiZTE0MzdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcApAQCAtMjA3LDExICsyMDcsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQ
bGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29u
c3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0
ZSA9IHRoaXMtPnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGM1M2Q4YmY4NWMwOTkzODgy
OTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMuLmE1NmEzYjQxOWQ1ZWQ0YzQzZTRmNmYxYmE4YWNhNTYw
MzY0YzBiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0y
ODMsNyArMjgzLDEyIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QKICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGlt
YWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRm
b3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSBncmFw
aGljc0NvbnRleHQoKS5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9w
bGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOTVlYjM3MGI3NWJhZGUwMzlk
NmY5NDg3MmFlYWY0Y2YxZTVlNTNjYy4uNWY5MGZmMWYxYjlmMDJiYjMxN2IxNjNkZjczNjEzYzI2
ZmI1ZGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNzEsNyAr
NzEsMTAgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICAKKyAgICBib29sIGRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDdkMjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3YjY0
ZTgxYzVjOTQuLjY1NmNiMTRlNzI4OGYyM2E4OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Yml0bWFwOwogICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1h
cCk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC05MCw3ICs5
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7
CiB9CiAKLUltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0
ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHIm
JiBiaXRtYXApCitJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0
LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3JtSW1h
Z2VQdHImJiBiaXRtYXApCiAgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwg
YmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxhdGZv
cm1Db250ZXh0KFdURk1vdmUocGxhdGZvcm1Db250ZXh0KSkKICAgICAsIG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmZsdXNoQ29udGV4dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVy
VGFyZ2V0PiBiaXRtYXBUYXJnZXQ7CiAgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQp
OwpAQCAtMTMzLDEwICsxMzMsMTAgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAgIH0K
IAotICAgIHJldHVybiBpbWFnZTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZN
b3ZlKGltYWdlKSk7CiB9CiAKLXN0YXRpYyBOYXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJE
MUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFy
Z2V0KiBiaXRtYXBUYXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91
bmRzKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSkgOiBGbG9hdFNpemUoKTsKIApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIFJl
ZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJp
dG1hcFJlbmRlclRhcmcKIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgICAg
ICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgZWxzZQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogCiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWlu
dGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpKTsKICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5l
ZWRlZChiaXRtYXBUYXJnZXQsIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1
dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBAQCBS
ZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsK
ICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBU
YXJnZXQuZ2V0KCksIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNj
YWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiBy
ZW5kZXJUYXJnZXQpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CiAg
ICAgbG9hZERhdGFUb0JpdG1hcElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmgKaW5kZXggY2VmMzllYTc5MjExZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2MS4u
MWQ1NzRhZWVjZGI5ZDIyODAyMTRmMWMwY2FmNWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250
ZXh0KCkgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3Zl
cnJpZGU7CkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdlUHRy
IG1fYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggNzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTkyMTMz
ZDU1M2NkM2E0Yi4uOTY4NDAyODIzMjgxNDNjMjMzMzY1OTdjOWVjODk0NTQyYWJlZmI5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpj
cmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAgIC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBvd25l
cnNoaXAgb2YgdGhpcy4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7Cisg
ICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShjZ0ltYWdlKSkpOwogfQogCiBi
b29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRT
aXplKiBzaXplKQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewog
ICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1h
Z2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkp
KSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAg
aWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc3JjU2l6ZSkgewogICAgICAgICAgICAgc2l6
ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVP
cCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcAppbmRleCBkNGVhZmM1OTlhMDBmMjM5NTc4OTJlM2NhYTJlODVlYmNl
MzgwNWMwLi4yY2VjOTlkYzcyOWZlNjVlMDg1NGVlZTcyZGZjNGVkN2FmMDk1MjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwCkBAIC05MywxNyArOTMsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAg
ICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5k
ZXgoaSk7Ci0gICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2
ZUltYWdlLT5zaXplKCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1Np
emUud2lkdGgoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJl
bnRGcmFtZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwg
c3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisgICAgICAgIG1f
Y3VycmVudEZyYW1lID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3Np
dGVPcCB9KTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdh
cyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgwNmQzNDc3ZGE2OTY0
ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbWFnZURlY29kZXJE
aXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0
KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2Rl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDc2
ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNhZmQ2OTU0YzU3ZGVi
MzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgo
c2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBm
aW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3Qy
RC5jcHAKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uZWFj
N2NiZTYxN2I5YjdmOTVhYWY2N2NhYjk1OTk2OWM5ZDljYTBmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVj
dDJELmNwcApAQCAtNTAsNjAgKzUwLDM2IEBAIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGlt
YWdpbmdGYWN0b3J5KCkKICAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7CiB9CiAKLUludFNpemUg
bmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUgTmF0
aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsK
LSAgICBVSU5UIHdpZHRoID0gMDsKLSAgICBVSU5UIGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFn
ZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXpl
KCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBwbGF0Zm9ybUltYWdlLT5HZXRQaXhlbFNp
emUoKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QK
IHsKLSAgICBpZiAoIWltYWdlKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdl
LT5HZXRQaXhlbEZvcm1hdCgpOworICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0g
bV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1h
dC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKIH0KIAotQ29sb3IgbmF0aXZl
SW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
Q29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
aWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisg
ICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogICAgIHJldHVy
biBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvKiBwbGF0Zm9y
bUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgLy8gU3Vic2FtcGxp
bmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgp
LgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFn
ZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJz
YW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFn
ZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBpZiAoc3Vi
c2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBt
YXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBz
dWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUo
KTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQsIGltYWdl
LmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBv
cHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci19Ci0K
LXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLQogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAg
c3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIGlmIChtX3BsYXRm
b3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UobV9w
bGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1
ZjI2MzUxZDY2ZDVjMC4uNjgyODFjMGVkODNjMmQzOGQ3YzdmNWY5ZTFmMWIxZDcyMzM3YjQ4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2
MywxMSBAQCBzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFn
ZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhv
dFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRv
cHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3Rp
dmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0
KCkpKTsKICNlbHNlCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBh
dXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNw
b3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdf
ZnJvbV9zdXJmYWNlKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHN1cmZhY2UuZ2V0KCksIGVm
ZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSkpOwogI2VuZGlmIC8vIFVT
RShHVEs0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApp
bmRleCA2YTFhNzNmOWQ3ZmZlMTA4Zjc2ZTliNDNiM2E4ZmI5M2Y5ZTAzYTMyLi5hZWVjZmNmNTIy
NzBjNTVkYmFlYmMxMGNlMTJhZTNiOTFiODNiYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtODYsNyArODYsNyBAQCBEcmFnSW1hZ2VSZWYg
ZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZnJh
Y3Rpb24pCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBJbWFnZU9yaWVudGF0aW9uKQogewotICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzNiNTFlYjg1MzY5Y2FlOGY5NzgxNTEwNDFmZWExYzJk
ZjVhODgzMS4uNzRhNjBjYjgzNzhlMjFiM2U0MzYyZDE4MjdlNzBiNTFmNWVmNTBjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFNlY29uZHMgU2Nh
bGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29u
c3QKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1
c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGlt
ZW5zaW9uLCBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA4OGM5MGI2
ZThhMmQzNGM5MDIyMGRkYTk2ZDRmY2Y3NTc2MzIwODhmLi4yODMyMjJlYzNiYjM4NTc0NzNhY2I5
N2Q3ZTUxMDRmNzJlZDRiYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTE0NCw3
ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBTZWNvbmRzIGZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRJZ25vcmVH
YW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSA9IGZsYWc7IH0KICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggYjgzNWE2OWNiYzQ1YjdiODky
ZTBlN2JmYTE5ZmYwMTk5NWJlY2I1MC4uNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5YzU0YWZiZTJh
MDBmNTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAorUGxhdGZvcm1JbWFnZVB0ciBJbWFn
ZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAogewogICAgIG1fcGl4ZWxzLT5yZWYoKTsKICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5jcHAKaW5kZXggOTgxOTRkMTQzZTBkMmNmZDBiOTYxNDBlYmU3NmFmMDMxZmExODFjMi4u
M2Y0ZTRkY2Y0MmMwZmE5M2VmOWFiNjJkZDIyYTk3YzUxMzg3MDY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMjM5LDExICsyMzksMTEgQEAgdm9pZCBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogCiAgICAgICAgICAgICByZXR1
cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgpKSwgSU9TdXJmYWNlR2V0
SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKICAgICAgICAgfSwKLSAgICAgICAgW10oUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlKSAtPiBJbnRTaXplIHsKKyAgICAgICAgW10oUmVmUHRyPE5hdGl2
ZUltYWdlPiBpbWFnZSkgLT4gSW50U2l6ZSB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgICAgIHJldHVybiBJbnRTaXplKENH
SW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkp
KTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsK
IApAQCAtMjYzLDExICsyNjMsMTEgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpl
bWl0RnJhbWUoKQogCiAgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+
Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBzYW1wbGVU
aW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsK
ICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRp
YVNhbXBsZShpbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9CiAgICAg
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggZmZjMTRiY2E2
NWY2MThlMmNhYmU1ZThlZWIyZGVkNjQzNzQwZGVmNC4uMGI2YjI0NGE0ODQ5M2QyYTVlYzRkZWIy
MzM4MjMzOGFhYWM2NzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5o
CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiAKIGNsYXNz
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFu
dDxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKKyAgICB1
c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxOYXRpdmVJbWFnZT4s
IFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKICAgICBjbGFzcyBDYXB0dXJlcgogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICA6IHB1YmxpYyBMb2dnZXJIZWxwZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAzZjZjYjZlZDVkZmEzOGMyNmIz
NWVkYzc3YzkxOTM5MzVlNThkMjMwLi5iMDU5YTMyNTFkOGI5NjU3YmE5MDE0YzQ0ZjgwNjNhZjgy
N2IxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC05
MSw4ICs5MSwxMiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1w
bGVCdWZmZXIoKQogICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikKICAgICAgICAgbV9p
bWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShwcmVm
ZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9y
bUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFn
ZSgpLT5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKTsKKwogICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKLSAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2Ft
cGxlKGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CiAgICAgaWYgKCFz
YW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMWRiZWQzNjU0NTZlMjI4M2FkNGUwYWRh
YTFiN2M3NWM5Mzc3YzJmMS4uMzRlZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
CkBAIC0xMzksOCArMTM5LDEwIEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3IoZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4
dCwgcmVjdCk7CiAgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlKCkpIHsK
LSAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVO
b3JtYWwpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNy
Y0ltYWdlLmdldCgpKTsKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9IHNyY0ltYWdl
LT5wbGF0Zm9ybUltYWdlKCkpIHsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShk
cmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgcGxhdGZvcm1JbWFnZS5nZXQoKSk7CisgICAgICAg
IH0KICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29udGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDNh
NWUwMGJlNjcxOGIxMTg2Mjk4NjhiYWZiYWM3OTdjZTZmZTA3YjUuLmMwZWQzYzFkYWJlZTRhYjNh
M2Q3ODdhNDY4N2E2NTFlZjNmYTczODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApAQCAtMTYyLDggKzE2Miw5IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlv
bikKICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMS4wLCAwLjAsIDEuMCk7CiAgICAgY2Fp
cm9fZmlsbF9wcmVzZXJ2ZShjcik7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJm
YWNlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmIChzdXJmYWNl
KSB7CisgICAgTmF0aXZlSW1hZ2UgbmF0aXZlSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgaWYgKG5hdGl2ZUltYWdlICYmICFuYXRpdmVJbWFnZS0+aXNOdWxs
KCkpIHsKKyAgICAgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgICAgIC8vIERyYXcgdGhlIGltYWdlLgogICAgICAgICBjYWlyb19zZXRfc291cmNl
X3N1cmZhY2UoY3IsIHN1cmZhY2UuZ2V0KCksIDAuMCwgMC4wKTsKICAgICAgICAgY2Fpcm9fcGFp
bnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjExMWE0YjJjMzU1YzA3
Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFpbnRJbmZv
JiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0LndpZHRo
KCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFkZ2VEaW1l
bnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dSZWN0TWFr
ZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogCi0gICAgQ0lJbWFnZSAq
aW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2Uo
KS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENH
SW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKIAogICAg
IC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0aCBpbiB0
aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAgIFJldGFpblB0cjxDR1Bh
dGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KGFic29s
dXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8gMiwgbnVs
bHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNjNl
ZGYxMmUyMTMzMzBkZjJkYWNiOTY1NDAyNTY1MzE2M2I0MGJjMS4uYjA2MGQ3MjgyOWNiNzFkMzBi
NmJmMjg1YTMzYmI3OGVjYTc5YTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpk
cmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKIH0K
IAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFn
ZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJz
aGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZSBuZWVk
cwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogI2VuZGlm
CiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1h
Z2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAgICBpZiAoIW1fcGFnZSB8
fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5k
ZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQyOC4uMjgyNWY5ZDM4OThk
OGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVs
ZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCiAj
aWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNl
bmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNkNjVmNWU4MzFiMzFhZjM2
NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5l
clpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNW
R0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdl
Rm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBlNjQ0ZjdhY2YzMGVj
MjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUwNTNjNTkyMjU3MzcwZjJi
OGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxs
cHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFn
ZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVy
Wm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5OTExMWE3ODkwYjU3ODVmNGUxMDYyZDY4ODIwNjU0
N2Q1MjUwM2JkLi4xMWJmOGZlMmVmNDA4YmFlOTE2ZDRmZTA2YTdmNDNkNTk5ZGRkYjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNyw3ICsyMTcsNyBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVk
aWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cics
CisgICAgICAgICdXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJywKICAgICAgICAgJ1dlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGRiMDhjNDMxOGFlODU1YzhiYzU3ODE5MmRm
ODYxYTgxNWFiMGIyMzkuLmU1NzEzZTMwMWY2MDI2YmNiNmRiNjIxZjRlZjRiN2UxMGY2NTE5NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAtNTUs
NyArNTUsNyBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVm
IGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogCiAgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFw
aGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdO
YXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKKyAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJl
Y3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzMzc5NTk2
YmU2OWQ5MjRhZTBjYTZkOGY5ZjFmZmIwMWIyMGMzZDZjLi41ZWU5MzM1NWQ3MzZhNWVkYTAxZWNl
NGI0Y2M1NWIyOGNjMDgwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsMTYgKzExMDAsMTYgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBp
bWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZl
SW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3Rh
dGljIHZvaWQgZW5jb2RlUGxhdGZvcm1JbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGF1dG8gaW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IE5hdGl2ZUltYWdlOjpz
aXplKHBsYXRmb3JtSW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEhZ3Jh
cGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpKTsK
KyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UsIGlt
YWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VT
aXplKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgYml0bWFw
LT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKQEAgLTExMTcsNyArMTExNyw3IEBAIHN0YXRpYyB2b2lk
IGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUlt
YWdlUHRyJiBuYXRpdmVJbWFnZSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRm
b3JtSW1hZ2UpCiB7CiAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0
OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwpAQCAtMTEzNiwyNSAr
MTEzNiwyNSBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1h
Z2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdAogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
KCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBwbGF0Zm9ybUltYWdlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9p
ZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFn
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdl
KQogewotICAgIGJvb2wgaGFzSW1hZ2UgPSAhIWltYWdlOworICAgIGJvb2wgaGFzSW1hZ2UgPSAh
IXBsYXRmb3JtSW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKIAogICAgIGlmIChoYXNJ
bWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAgICAg
ICBlbmNvZGVQbGF0Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNv
ZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29kZXIs
IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgaW1hZ2UgPSBudWxscHRy
OworICAgIHBsYXRmb3JtSW1hZ2UgPSBudWxscHRyOwogCiAgICAgYm9vbCBoYXNJbWFnZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKQEAgLTExNjMsMTcgKzExNjMsMTcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2Uo
RGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAgICBpZiAoIWhhc0ltYWdlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7
CisgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFnZSk7
CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UGxhdGZvcm1JbWFnZVB0cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZl
SW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAgIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShl
bmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K2Jvb2wgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGRl
Y29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBkZWNv
ZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBhYmNhMDI0MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0OTZi
MDliOTJiOGUzLi5mOTFjYjkxMmEyOTQyZmRjYjBkNTk2NzJjNDc4YmM0ZjhiYjk2NzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZVB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC00MTksOSArNDE5LDkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdl
SGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHI+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNkNWY2
OTg4YjIxMTU4OGRhN2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2ZTc0
MzMxNzdiOTAzZGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAKQEAgLTE4NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJl
bGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lkKgog
CiBSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAgICBp
ZiAoIXBsYXRmb3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYgKGF1
dG8gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1ODg2N2ViMmEwZmM0
ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLmU2MzAwOTQ4YWE4OGQ3MWI1Mzc3ZTRhYzEwN2M5MDY4NTk5
OTA3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0lj
b25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiAg
ICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hv
bGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRlZElj
b25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRhID0g
dGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2xv
YWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9u
b3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVk
SWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4sIE1v
bm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxvd0RhdGFi
YXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFzZVdyaXRl
ID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgSWNv
bkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxv
d0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwg
c3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1v
bm90b25pY1RpbWU6Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9h
ZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFJlZlB0cjxOYXRpdmVJbWFnZT4s
IE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CiAgICAgICAg
ICAgICBpZiAoIWljb25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5z
ZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkgPCBF
bmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkgewpAQCAtNjIyLDcgKzYyMiw3IEBAIHZv
aWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAg
ICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2Nr
KTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVS
TCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIs
IHsgfSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChp
Y29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBNb25vdG9uaWNUaW1l
PihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0YVNpemUpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwg
aWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5k
ZXggOTYxMmY5OWMyY2ZiN2M1MTM2NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uNWM3NjkwMTdmOWU0
ZGUxODc2Y2Q0YWY1ZTE3Y2NkMWNjMWFkNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdl
VVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkws
IEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4m
Jik7Ci0gICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRh
YmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
JiYpPiYmKTsKKyAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxv
d0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6Ok5h
dGl2ZUltYWdlPiYmKT4mJik7CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbV9wYWdlVVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9wYWdl
VVJMVG9JY29uVVJMTWFwTG9jazsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAgICBI
YXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4sIE1v
bm90b25pY1RpbWU+PiBtX2xvYWRlZEljb25zOwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xvY2s7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ljb25J
REZvckljb25VUkxTdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBhZGZm
YTYyZTQ3N2I3ODM5MzYzYzI1ZTk4MDI5Li5iZjAzZTQzZjBmZDkxZTczZGE4MDlkYzMyZDE0NDUz
OWExNGY0ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgUmV0
YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZl
SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBib29sIHNob3Vs
ZFVzZURyYWdJbWFnZVRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJj
ZVN0YXRlJiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkZDg5YzBmMGFmYTgyYjEzMGQ1MjQy
ZWQxYzk5ZDZlMmJiZjU1ODg5Li45NDRiNWE3YjFjY2RhM2JhYjBhZWU3ZWI2N2Y5NmQ3OGVhZDkx
ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc1MDMsMTMgKzc1MDMsMTMgQEAgc3RhdGljIE5TQXJy
YXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNzaW9u
KGlkIDxVSURyb3AKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0aXZlSW1hZ2UoKTsKLSAgICBp
ZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlKQorICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90
SW1hZ2UgfHwgdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5nZXQo
KSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF0pOworICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFn
ID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25h
cHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgX3Vuc2Vs
ZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRX
aXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAg
W191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKIApAQCAtNzczMiwxMSAr
NzczMiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJbWFnZShXZWJD
b3JlOjpJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghY2dJ
bWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwog
fQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggY3JlYXRlVGFyZ2V0ZWRE
cmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuCkBAIC03OTkxLDEzICs3OTkx
LDEzIEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVy
RWxlbWVudHNUb0luc2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgIH0KIAogICAgICAgICBhdXRv
IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3RXaXRob3V0U2VsZWN0aW9uLT5uYXRp
dmVJbWFnZSgpOwotICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlKSB7CisgICAg
ICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UgfHwgdW5zZWxlY3RlZFNuYXBzaG90SW1h
Z2UtPmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZh
aWxlZCB0byBhbmltYXRlIGltYWdlIHBsYWNlaG9sZGVyczogY291bGQgbm90IGRlY29kZSB1bnNl
bGVjdGVkIGNvbnRlbnQgaW1hZ2UuIik7CiAgICAgICAgICAgICBzdGF0ZS5jbGVhckFsbERlbGF5
ZWRJdGVtUHJldmlld1Byb3ZpZGVycygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9w
dE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
IG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgICAgIGF1dG8gdW5zZWxl
Y3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVu
dGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgICAgIGF1dG8gc25hcHNob3RWaWV3
ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRD
b250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgICAgICBbc25hcHNob3RWaWV3IHNl
dEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgYWRkU3VidmlldzpzbmFwc2hvdFZp
ZXcuZ2V0KCldOwpAQCAtMTAwNDEsNyArMTAwNDEsMTIgQEAgc3RhdGljIFVJTWVudSAqbWVudUZy
b21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhVSVZpZXdDb250cm9sbGVyICpwcmV2aWV3
VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVu
dEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3Iu
Y29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgCisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3Iu
Y29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0
aXZlSW1hZ2UtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBy
ZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVz
ZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRy
b2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAKaW5kZXggZTc2YzA2MzhjN2RhMmEwNGYxZTA4OWJjNGQ0OTBmMjI0Yjg3
ZDIxNi4uYWNlZjAwNzkzM2UyZjJjZDBlNjdiMjQyZWYwMTA1YTJiMTQzYjRiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtOTYsMTAg
Kzk2LDEwIEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewog
I2lmIFVTRShDRykKLSAgICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworICAg
IHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7
CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxpZiBVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRl
eCAwNWMxMDljZDIwMjZkMTVmODBlYjgzMmFkOWYxYjdiYTMzYmI5NTU3Li45ZTI0YWI5OWViYzY3
NWNlMjAxYTU5Mzk3MjhjNjE5ZGJhNTk1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gKm1fY29udGV4dDsgfQogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2
ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
b3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVz
b2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdS
QURhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBjYTAyNTJhNDZlMmMwNzFmZmQ1MzRiODMzZGJiNDU1NTg2N2VkNTgzLi43OWEyMTE0YmEyNDk3
MDJjYzU1NDdmZmExM2IzM2MzOTYwODY0OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC04MTEsNyArODExLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCmluZGV4IDVmODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjBkNzU1
MmY0OTNmMDc0MjQxMmE2YmUyOTczOTYyMTZkYzk1ZjU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsK
ICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOwotICAgIFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAog
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggODFjYjMxYjg1ZmYyNjg1MTAwYjk0MmY4ZWNkNjUxODdjZDQyODM4MS4uOTI5NzYw
ZTJkZjZiZTNjYjI3ZDBlNWVmNmZlYzIzM2ZmNzk4MTllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2ODMsNyArMTY4Myw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdh
c0NhbmNlbGxlZCkKICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBib29sIGlzQWxtb3N0U29s
aWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQogewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBi
aXRtYXAtPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1h
cC0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIEFTU0VSVChDR0lt
YWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CiAKICAgICBDR0JpdG1hcEluZm8g
aW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KaW5kZXggNWI4Y2I2YzM4YzdhNWIxNjY3NGJmMTRhYzAxMjBjMzVmZGYzYWRm
Ni4uN2FhMDA0YTYxNjllYjQwMjA0ZGIyMjRkNmVkYzIyNmYyNzI3NDhjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCkBAIC01MzYsNyArNTM2LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0
PiBraXQoRXZlbnRUYXJnZXQqIHRhcmdldCkKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAg
ICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkK
LSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkuYXV0b3JlbGVhc2Uo
KTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmICghKmNnSW1hZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ4MTc2OTk2NzVlY2Zi
YjljMjM2NzkzNWMyMmM1N2M3OGE0YTM0ZjEuLmZkMDk2ZGRmOTUwY2JmZTgxNjNiMTM2NzVhY2Rk
ZTMxN2I5ZjMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQpA
QCAtMTcxLDEwICsxNzEsMTYgQEAgY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIg
OiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNhY2hlZEltYWdlPihjYWNo
ZWRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFdlYkNvcmU6OkNhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2Fj
aGVkUmVzb3VyY2UpOworCisgICAgYXV0byYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3Jl
OjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdlLmhh
c0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJbWFn
ZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI2
MGUzMjZmMTBiZjVjZTNjYTZmYTNmNDBiMWFhOGUwOTc5ZDQyMzcuLjYzZTk1MmQ3ZTJjMTRlYzkx
M2MxNzlhNWEyYzY3ZGU3NTM3YWQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTg0NSwxNCArODQ1LDE0IEBAIHByaXZhdGU6CiAgICAgX3RleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBjcmVhdGVOU0FycmF5KGluZGljYXRvckRh
dGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykubGVha1JlZigpOwogICAgIF9j
b250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVG
YWN0b3I7CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCkK
LSAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhI
aWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJbWFn
ZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJ
bWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2
ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNv
bnRlbnRJbWFnZSkKLSAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgp
LT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmll
bnRhdGlvblVwXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgp
LT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEuY29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRpdmVJ
bWFnZSgpOwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0
V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJ
SW1hZ2VPcmllbnRhdGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2Vs
ZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRvckRhdGEuY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgICAgIH0K
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="429402"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412891</attachid>
            <date>2020-11-02 00:16:33 -0800</date>
            <delta_ts>2020-11-02 00:25:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201102001631.patch</filename>
            <type>text/plain</type>
            <size>245450</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjM4N2U4Y2I5MjVkMGVjYTI2ZGEzYzQyNzU3ODE3YjAyOWI1ZTA2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsK
IAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBv
aW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBu
YXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZl
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdT
aGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRy
YXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmls
bFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsK
KyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5
ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNl
IGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKK30KKwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA1MDVjMGFmNDdkN2EwYTUwZTljMTkwNjZk
ZDkzZGU1OTYxZDY2OTFhLi5jODg4MTIxNDk1YTJlMmQ5MmYwYzM0Y2VjZjY2NjBhNDZmOWFmNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQgY2xlYXJSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBo
cyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VT
b3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2Fs
ZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwg
VGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xv
ciYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uYmRiMDU5NmQ3ZGNmNzVkZDA1OWI2OTg5NmEyZjE3YjU5YTcwOGQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4
dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28g
d2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjcxLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9y
bUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisg
ICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4Niw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQo
KSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJl
OTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRh
dGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2Ut
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRl
eEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBs
eUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBl
YWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBi
ZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHku
CiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5w
dXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4ZWY0Zjc4NmI3MjQ5
MTQyNDU2ZWZmMWYwYWQ4MjE2Y2M5MDU1MzY3Li40N2UxMDc1ZmMxN2FlZmFlNWMxYTY3ODVjYzUz
NDhlNTllZjk2MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAg
LTI4NSwxNyArMjg1LDIzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
CkBAIC00MjEsNyArNDI3LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CmluZGV4IDFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5Njg2MjA1MTQuLmI5ZmEyNGY5
NTdkZWQ4Nzc4NTZmOThmOTZlYzhiODcyYTAwMjhiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2
ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi42NmUwYjhmNGViNTcyMGViYjYzNzBhMGM1NDliM2Qy
YjZhMjQ4YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29y
ZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAg
IGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICppbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwg
V2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250
Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZk
ZmM0YzhlZjdiODUuLjNmNzVjZTE5ODFiYWNlZjM3Yzk0MTIyMWVkNGM2ZDA1NGY5ZDJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdT
dG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAs
IDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNv
cHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwog
ICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBt
X3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fp
cm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNv
bnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVf
SU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNo
KHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYz
Zjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2
ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9z
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4
NDM0MTU4YjRkMDMzMDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUz
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFj
ZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdl
ID8gY2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0K
IAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdl
IHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7CisgICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJ
bnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0Up
CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAh
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0g
ICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRp
cGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBjZTUyNzgwNjBh
MGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi43NDFjOTZmMjQ3YmIyZjJjYjk2NmFlZWJk
OGU2OGRjM2U4NmEzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAg
Y2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZh
Y2Uoc3VyZmFjZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFu
ZCB1c2VyIHNwYWNlIGl0c2VsZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGNmOGVjMjliNWNlNjRh
NTIwMTdiNzVkMDkwYjVmOTI2ZmQ1NjAxMmEuLjBhMTk5MGFlYWMyOTNlZDEwOTgwMjg5ODUyZTI0
YWU4ZTZmYzZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxMSArMjgwLDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5t
X3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogI2VuZGlmCkBAIC00NDcsMjMgKzQ1MiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAo
dGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFp
bnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQg
aW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3Mg
ZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGls
ZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBo
ID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5n
LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFn
ZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFn
ZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUg
bGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MTIsNyArNTE3LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklY
TUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxw
aGEgbWFzayBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5
N2VjYTgxYmJkYmM0ZTA1NjdlNDNjMDRkLi4wNDAzOTQ2OTEzNWMzNTU1NTI0MmVjNWI5ZjdhMmY4
NjMwOWMyMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2Uu
Z2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5n
ZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ3LDcgKzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7
CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShp
bWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VH
ZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVs
SW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
OwpAQCAtMzYyLDIyICszNjMsMjYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENv
bnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJk
IHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRo
ZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9j
Z0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0K
IAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25l
bnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21w
b25lbnQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0
Qml0c1BlclBpeGVsKGltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0g
ZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBv
bmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBz
byB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBpCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAg
QWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChD
R0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAg
ICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwx
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0
ID09IERhdGFGb3JtYXQ6Ok51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXRE
YXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0
KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0
YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFj
a0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFn
ZUdldEJ5dGVzUGVyUm93KGltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0
ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRk
aW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTQz
LDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMo
Y29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXplLmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICBjb250
ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1YzE3YjMuLjU0Yjg3OGI0
MzQ3NmUxOWJkNmY2MTcxZjhiNDk2Mjc3NjNlMGZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKQEAgLTY3LDI0ICs2NywyNCBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENv
bnRleHQoKQogICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlv
blNjYWxlKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSkKK3N0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpCiB7Ci0gICAgaWYgKGltYWdlICYmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IHN0
YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUud2lkdGgoKSkgfHwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKQot
ICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdo
dCgpKSkpOwotICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUo
KSAhPSBiYWNrZW5kU2l6ZSkKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
KSkpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFn
ZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
CiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KFdURk1vdmUoaW1hZ2UpLCBiYWNrZW5kU2l6
ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0lt
YWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8
fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVjdFNjYWxlZC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9w
dGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2Jh
Y2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUp
OwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBq
cGVnVVRJKCkpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5z
aW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBw
aXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAg
ICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGlt
ZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dC
aXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAg
IH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24g
PT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwpAQCAtMTY1LDEyICsx
NjUsMTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdl
dCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgp
LmhlaWdodCgpKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGlmICghZW5jb2RlSW1hZ2Uo
aW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKKyAgICBpZiAo
IWVuY29kZUltYWdlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHV0aS5nZXQoKSwgcXVh
bGl0eSwgY2ZEYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gV1RGTW92ZShjZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjM1NmViNTI2MzM3
NDA3MDg4M2EyOTNkNjUwYzY4NTRiNDdlZmQ5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTEwNywxNCArMTA3LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250
ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CiAKICAgICBjYXNl
IERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKAog
ICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZSht
X2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAg
ICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3
YTU0OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2Vi
OGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4
OTcxMGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1h
dDo6QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lu
a0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFj
ZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkp
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0
YTkwNDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2
YmVhODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNH
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlv
bnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUw
NmRkZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcAppbmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi5mMmZj
ZTRhYTRiNzcxZGFlM2ZiNDJkNWRiZTNhYTExZmIwZTZhMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzcs
MjAgKzM3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFn
ZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6
c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVy
biBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUlt
YWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgocGxhdGZvcm1JbWFnZS5nZXQoKSksIENHSW1h
Z2VHZXRIZWlnaHQocGxhdGZvcm1JbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwogfQogCi1ib29s
IG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBO
YXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENHSW1hZ2VBbHBoYUluZm8gaW5m
byA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAgIENHSW1hZ2VBbHBoYUlu
Zm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICAg
ICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5m
byA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxh
dGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENv
bG9yKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs2
MCw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgp
KTsKIAogICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjazsKQEAgLTY4LDExICs2OCwxMSBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwogfQogCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENB
Q0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkK
KyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1
YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0
dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0
aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9m
IGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAg
ICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNy
ZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0
aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1h
Z2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9Owot
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUo
aW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDUxM2Y0NTVjYWQ4ZTVlNjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjJmYWI2OWUwMzMy
NmMzN2I0YzNjMWM5ODNkOTQwODlhMjE4YzIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNl
R3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRv
d25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1
cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291
cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgm
IGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNmJlMjc0YzY4ZGVlZmI0YzBkNTM2MWJlNjQ4MTUy
NDAzMmM5ZjQxLi4xZGQ0YTI0YWYyZTg4NzMzOTIzN2U5YTBkYTEzMGRkNmIyNjQxM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjgsNiArNjgsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBl
IDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgRHJhd0ltYWdlQnVm
ZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBE
cmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0N2M3NjJlMWE2MTk3ZDZjOGI4YzQ1ZmE5Y2ZkYzA1
YTAzZGVlNTFiLi4xMjA1NjIyOGE5NzBhNzc5YzgzNjZmOTM5MjFlOTZkMmMzNThkOThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTgsNiArMTE4LDggQEAgc2l6
ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdl
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKQEAgLTg1OSw5ICs4NjEsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSAgICAsIG1faW1h
Z2UoaW1hZ2UpCisgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQpAQCAt
ODcxLDEyICs4NzMsNDAgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGkKIAogRHJhd05hdGl2ZUlt
YWdlOjp+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCi12b2lkIERyYXdOYXRpdmVJbWFn
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3Ny
Y1JlY3QsIG1fb3B0aW9ucyk7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVn
YXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQor
eworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAg
Ly8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1y
ZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6RHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQor
ICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30K
KworRHJhd1BsYXRmb3JtSW1hZ2U6On5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKKwor
dm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAoreworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNp
emUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7Cit9CisKK3N0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGxhdGZv
cm1JbWFnZSYgaXRlbSkKIHsKICAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRl
bSY+KGl0ZW0pOwogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCkBAIC0xNjc3LDYgKzE3
MDcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1h
Z2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUt
aW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZTogdHMg
PDwgImRyYXctcGxhdGZvcm0taW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTE4MDAsNiArMTgzMSw5IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Bs
YXRmb3JtSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwMTVi
ZTVlODY2MDZlY2MyZjZjZTg1N2MxZjcxMTY3Njk0ZmU4ZTMuLjdiN2U5YTBlNzBkZWM3MmY4Mjkz
MzM0YzRiOWQ1NmE0ZDMyZjAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTcwMSwyNyArMTcwMSwzMCBAQCBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJh
d0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogY2xhc3MgRHJhd05hdGl2
ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlv
blJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTE3MzEsNyArMTczNCw3IEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9pbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIGVuY29k
ZXIgPDwgbV9pbWFnZVNpemU7CiAgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKQEAgLTE3NDEsNyArMTc0NCw3NyBAQCB2b2lkIERyYXdO
YXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFn
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQ
dHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFn
ZVNpemU7CisgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CisgICAgaWYgKCFpbWFnZVNpemUpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRl
c3RpbmF0aW9uUmVjdDsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAg
aWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7CisgICAgZGVjb2RlciA+PiBvcHRpb25z
OworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwor
fQorCitjbGFzcyBEcmF3UGxhdGZvcm1JbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1Bs
YXRmb3JtSW1hZ2UoKTsKKworICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7
IH0KKworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFNpemUgbV9pbWFn
ZVNpemU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBt
X3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKKyAgICBlbmNv
ZGVyIDw8IG1faW1hZ2VTaXplOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+
PiBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8UGxhdGZvcm1JbWFnZVB0cj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTc2Niw3ICsx
ODM5LDcgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpp
bWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
KyAgICByZXR1cm4gRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUs
ICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9CiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKQEAgLTMzMzIsNiArMzQwNSw5IEBAIHZvaWQg
SXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJ
bWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxh
dGZvcm1JbWFnZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFn
ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKQEAgLTM1NTMsNiArMzYyOSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJh
d05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0
byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzcyNyw2
ICszODA3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZFNjYWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdJbWFnZUJ1ZmZlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3TmF0aXZlSW1hZ2UpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1BsYXRmb3JtSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d0xpbmUpCkBAIC0zNzk4LDYgKzM4NzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1JlY3QsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkMTQyYzM3
NzljYjk5M2U3MzcyYmI4Yjg4ODdmY2M0Yzc1MmZlOTg5Li40MGZjYWFhYTQ1MzZmYjUwNTVmMzk0
MjQ1ZmQwNmNiOWNkOWZjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0xOTQsOSArMTk0LDE4IEBAIGJvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVu
dChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucykpOworICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9kZWxlZ2F0ZS0+bG9j
a1JlbW90ZU5hdGl2ZUltYWdlKGltYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlY29yZGVyOjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxYzhjODk2Mzc4YzBjYWZiYjIxMTI4OTU5
N2NlZTI4YjRmYTc1ZDIuLmI4ODk1NmE5OWIyYjk5NWNjODMwNzBiYTkzN2I3MTY3NDY4ODQ1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CkBAIC0xMDgs
NyArMTA5LDggQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
ZGM5OTRiNzMxZmE4OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJi
N2Q1N2E5MTY1MTRlNjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSks
IHByZXNlbnRhdGlvblNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIW1faW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIG1faW1hZ2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2
b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgp
ICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhv
bGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKaW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3
ZC4uNTg2OWQ4Yzg2YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5
ZDhiYjliMjJlMTEwZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUz
NmEwYWEwMDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAog
ICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3
ZGJjNDk5YjUxZGFlYi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2
LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2
b2lkIHVwZGF0ZUVuYWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4
OTE0ZGEzYTM5NzAxZmRkZDZhNjYxLi43MzgwZWJmNDc2NjAxY2QwZDhkZmMzNmJmNDg4YTE4MDI0
N2MwOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUd0ay5jcHAKQEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6
OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1
cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNl
ID8gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgx
MzZjMWZmZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYw
ZDdiMTcxZDI2NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
SWNvbjo6SWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFn
ZShpbWFnZSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFn
ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsK
IAogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdl
dCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1J
bWFnZShtX2NnSW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5
MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLjliYjUwMjg5MGM2OTg4ZjM3
ZWJkZGI5MjM1MjEzYzViNGZlNTJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4g
SW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFn
ZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2
ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7
CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0
YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3Vn
aCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwg
YW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7
CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDYyOThjZjM2MDczYzdhZTQ0
ZjQzYzZiNTY0NDIyYjM3Yjg2Y2YxMDcuLmZjMmNiYjY4ZWIyYzQwMWJmYjE3NzBhZmJhY2M5Njg1
Mjk2OTA4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5
LDExICsxMDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJ
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0g
bmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVT
RShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IGEyYzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUuLjJlOWVlYzhmZjQ2
ZWY0OTRmZDliMzFlMDBiOTllN2U0NDhlZDMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NTUsMjUgKzU1NSwz
MSBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewotICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7Ci0gICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit7CisgICAgc3RydWN0IERyYXdQbGF0Zm9ybUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVy
YXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwg
RmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0
ZT4geworICAgICAgICB2aXJ0dWFsIH5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAog
ICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBv
dmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNv
bnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwy
PigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0
KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd05hdGl2ZUltYWdlPD5c
biI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdQbGF0Zm9ybUltYWdlPD5cbiI7
CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2Uu
Z2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BsYXRmb3Jt
SW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTU5NCw3ICs2MDAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1
cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3OSw3ICsxMDg1LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBGbG9hdFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFj
ZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBU
b0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgwOTNkNDEzNWI0ZDdi
NjUxMWExNjA4N2FmZjEzZjYwM2VkMTNiYS4uZDg4NGExZjJjNzk1YTc3M2NlN2ZhZGJkNzRkOTAw
NWMyNTMyNzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVk
MGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBh
dXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAj
aWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Uu
Z2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVz
UGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUzOGYuLjBkZGZhOTY0
YTFlYjBiZWM1YzYzZmJkOTBmMWExMjU4ZTUxOWI0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXll
cj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBH
cmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQs
MjYgKzI5MywyNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBN
YWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVh
bGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGlt
YWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlv
biB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQg
d2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNz
dW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5l
d05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBp
ZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRp
dmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJ
bWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZh
Y3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJ
bWFnZS5nZXQoKSwgQ29udGVudHNMYXllclB1cnBvc2U6OkltYWdlKTsKKyAgICBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihtX2NvbXBvc2l0ZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBDb250ZW50c0xheWVyUHVycG9zZTo6SW1hZ2UpOwogICAgIG5vdGlmeUNoYW5nZShDb250ZW50
Q2hhbmdlKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAx
NWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li41OGY0ZjM2NWQyNTczNDc3MjkzMjdhZmJj
YWQxOGM3YzE0YzNlZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJO
YXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgiCkBAIC0xNTUsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
ckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
PiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1
MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3Zjkx
MDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXll
clR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVu
dChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAs
IG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAg
ICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5n
VGlsZUNyZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01
ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1Jl
cGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIDogbnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBu
dWxscHRyOworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9j
b21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9
IG5hdGl2ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1h
Z2U7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAg
IG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCkKICAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2Vk
ID0gdHJ1ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29y
ZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAg
ICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0g
Km1fY29tcG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1h
Z2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0ci5nZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBvYmplY3Qg
aWYgdGhlIHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5p
bWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVj
ZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAg
UmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9z
aXRlZE5hdGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAg
ICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5k
aW5nVGlsZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRl
eCA1N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4xNzgwNzI5Mzg4NDY1
Yzk2ZTgwOTA2M2EzOGVhYmE0YmUxNDM3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKQEAgLTIwNywxMSArMjA3LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3Jl
UGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNv
bnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3Rh
dGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRm
b3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBjNTNkOGJmODVjMDk5Mzg4
MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzLi5hNTZhM2I0MTlkNWVkNGM0M2U0ZjZmMWJhOGFjYTU2
MDM2NGMwYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAt
MjgzLDcgKzI4MywxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5wbGF0
Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29u
c3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3Jh
cGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1ZWIzNzBiNzViYWRlMDM5
ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2MuLjVmOTBmZjFmMWI5ZjAyYmIzMTdiMTYzZGY3MzYxM2My
NmZiNWRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcxLDcg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1
bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIyZTY5N2I2
NGU4MWM1Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZiaXRt
YXApOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsNyAr
OTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIp
OwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRy
JiYgYml0bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4
dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUlt
YWdlUHRyJiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRm
b3JtQ29udGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwogfQogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRl
clRhcmdldD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0
KTsKQEAgLTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAKICAgICB9
CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RG
TW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQy
RDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRh
cmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJv
dW5kcykKIHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNp
emUoaW1hZ2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBS
ZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFC
aXRtYXBSZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBp
bWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25T
Y2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olll
cykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICAg
ICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVp
bnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29s
dXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAg
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFw
VGFyZ2V0LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25T
Y2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogewog
ICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3ZGMyNjEu
LjFkNTc0YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92
ZXJyaWRlOwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2JpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0ZjkzYjlkNGU5MjEz
M2Q1NTNjZDNhNGIuLjk2ODQwMjgyMzI4MTQzYzIzMzM2NTk3YzllYzg5NDU0MmFiZWZiOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6
Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKICAgICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFrZXMgb3du
ZXJzaGlwIG9mIHRoaXMuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShjZ0ltYWdlKSkpOwor
ICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY2dJbWFnZSkpKTsKIH0KIAog
Ym9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50
U2l6ZSogc2l6ZSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsK
ICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0lt
YWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgp
KSkgeworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAg
IGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAgICAgICAgICAgIHNp
emVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRl
T3AgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODkyZTNjYWEyZTg1ZWJj
ZTM4MDVjMC4uMmNlYzk5ZGM3MjlmZTY1ZTA4NTRlZWU3MmRmYzRlZDdhZjA5NTIzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcApAQCAtOTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAg
ICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOwotICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS0+c2l6ZSgpICE9IHNyY1NpemUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNT
aXplLndpZHRoKCkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJy
ZW50RnJhbWU7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBk
cmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCks
IHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwotICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworICAgICAgICBt
X2N1cnJlbnRGcmFtZSA9IGk7CisgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9z
aXRlT3AgfSk7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3
YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwCmluZGV4IDIxYzE5ZWM2M2I1NDY5MGZjYzI5Y2Q4MDZkMzQ3N2RhNjk2
NGRjMzUuLjc3YjFhNGExODg4MWMwYjVhMjIzOTcwY2YwMTQ3NmUxZTkxZTYyNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
RGlyZWN0MkQ6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdl
dCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29k
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA3
NmQ3YWNhOTNlMzkyNDI3YjI2NTM1NGNhZjJlMzJlZWFjY2YxN2UwLi5jMGRjYWZkNjk1NGM1N2Rl
YjM5MjA0ZTlmYmIwNmFkMGIxYzkxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4
KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0
MkQuY3BwCmluZGV4IDkwZjc4YzIzOGYxOGY5OWJjNTA5YzFlMzA5MTgzZmNhZjhhNDhjOWYuLmVh
YzdjYmU2MTdiOWI3Zjk1YWFmNjdjYWI5NTk5NjljOWQ5Y2EwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJl
Y3QyRC5jcHAKQEAgLTUwLDYwICs1MCwzNiBAQCBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBp
bWFnaW5nRmFjdG9yeSgpCiAgICAgcmV0dXJuIGltYWdpbmdGYWN0b3J5OwogfQogCi1JbnRTaXpl
IG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5h
dGl2ZUltYWdlOjpzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7
Ci0gICAgVUlOVCB3aWR0aCA9IDA7Ci0gICAgVUlOVCBoZWlnaHQgPSAwOwotICAgIGlmICghaW1h
Z2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6
ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlID8gcGxhdGZvcm1JbWFnZS0+R2V0UGl4ZWxT
aXplKCkgOiBJbnRTaXplKCk7CiB9CiAKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBpbWFn
ZS0+R2V0UGl4ZWxGb3JtYXQoKTsKKyAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9
IG1fcGxhdGZvcm1JbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsKICAgICByZXR1cm4gcGl4ZWxGb3Jt
YXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05PUkU7CiB9CiAKLUNvbG9yIG5hdGl2
ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAg
IGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQor
ICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQogICAg
ICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KICAgICByZXR1
cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgYXV0byogcGxhdGZv
cm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIC8vIFN1YnNhbXBs
aW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUo
KS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1h
Z2UpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vi
c2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1h
Z2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYgKHN1
YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKLSAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0g
bWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwg
c3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAgYXV0byYgc3RhdGUgPSBjb250ZXh0LnN0YXRl
KCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0LCBpbWFn
ZS5nZXQoKSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
b3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwotfQot
Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0KICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyAgICBpZiAobV9wbGF0
Zm9ybUltYWdlKQorICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKG1f
cGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAjZW5kaWYKIH0KIAotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCmluZGV4IDg3Zjg0Y2E4NGM1NGY0MjQyMmZiNDk3Yzc5
NWYyNjM1MWQ2NmQ1YzAuLjY4MjgxYzBlZDgzYzJkMzhkN2M3ZjVmOWUxZjFiMWQ3MjMzN2I0ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCkBAIC02MywxMCAr
NjMsMTEgQEAgc3RhdGljIEdSZWZQdHI8R2RrQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJzb3IoSW1h
Z2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3AKICAgICBJbnRQb2ludCBlZmZlY3RpdmVI
b3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFk
b3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX3RleHR1cmUodGV4dHVyZS5nZXQoKSwgZWZmZWN0
aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpLCBmYWxsYmFja0N1cnNvcigpLmdl
dCgpKSk7CiAjZWxzZQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RT
cG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3
X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBzdXJmYWNlLmdldCgpLCBl
ZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsKICNlbmRpZiAvLyBV
U0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAK
aW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNmOWUwM2EzMi4uYWVlY2ZjZjUy
MjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgRHJhZ0ltYWdlUmVm
IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGZy
YWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUxMDQxZmVhMWMy
ZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUwYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBTZWNvbmRzIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTY2FsYWJsZUlt
YWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNh
dXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRp
bWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggODhjOTBi
NmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIzODU3NDczYWNi
OTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChz
aXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBj
b25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tp
bmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjljYmM0NWI3Yjg5
MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUy
YTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+cmVmKCk7CiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAzMWZhMTgxYzIu
LjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBAIHZvaWQg
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0
dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3VyZmFjZUdl
dEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJlZlB0cjxOYXRp
dmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4gSW50U2l6ZShD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgfQogICAgICk7
CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24t
PmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAg
ICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxl
VGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7
CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVk
aWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfQogICAg
ICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGZmYzE0YmNh
NjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNkMmE1ZWM0ZGVi
MjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogCiBjbGFz
cyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFT
b3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlh
bnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CisgICAg
dXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZhMzhjMjZi
MzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0NGY4MDYzYWY4
MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAt
OTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2Ft
cGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAgICAgICAgIG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUocHJl
ZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZv
cm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1h
Z2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAg
YXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNh
bXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHNhbXBs
ZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9ybUltYWdl
LmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwogICAgIGlmICgh
c2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIyODNhZDRlMGFk
YWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjVi
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNw
cApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRl
eHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFnZSgpKSB7
Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2Rl
Tm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBz
cmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBzcmNJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
ZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAppbmRleCAz
YTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li5jMGVkM2MxZGFiZWU0YWIz
YTNkNzg3YTQ2ODdhNjUxZWYzZmE3MzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIsOSBAQCBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRp
b24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAxLjApOwogICAgIGNh
aXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3Vy
ZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoc3VyZmFj
ZSkgeworICAgIE5hdGl2ZUltYWdlIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZlSW1hZ2UtPmlzTnVs
bCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fpcm9fc2V0X3NvdXJj
ZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAgICAgIGNhaXJvX3Bh
aW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4xMTFhNGIyYzM1NWMw
N2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5m
byYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVjdC53aWR0
aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJhZGdlRGlt
ZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAotICAgIENJSW1hZ2Ug
KmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdl
KCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhD
R0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAg
ICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4g
dGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBSZXRhaW5QdHI8Q0dQ
YXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNv
bHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51
bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDYz
ZWRmMTJlMjEzMzMwZGYyZGFjYjk2NTQwMjU2NTMxNjNiNDBiYzEuLmIwNjBkNzI4MjljYjcxZDMw
YjZiZjI4NWEzM2JiNzhlY2E3OWE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6
ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiB9
CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1h
Z2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2VzIG93bmVy
c2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2UgbmVl
ZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKICNlbmRp
ZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0
Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmlu
ZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjguLjI4MjVmOWQzODk4
ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1
bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxs
cHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRpZgog
I2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAj
ZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1ZjVlODMxYjMxYWYz
NjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApA
QCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2UtPmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWlu
ZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3ND
b250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZTY0NGY3YWNmMzBl
YzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUzYzU5MjI1NzM3MGYy
YjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1h
Z2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5l
clpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2ODgyMDY1
NDdkNTI1MDNiZC4uMTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5OWRkZGIzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTcsNyArMjE3LDcg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIn
LAorICAgICAgICAnV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAgICAgICdXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1NzgxOTJk
Zjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBmNjUxOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJl
ZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCBy
ZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzM3OTU5
NmJlNjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVkNzM2YTVlZGEwMWVj
ZTRiNGNjNTViMjhjYzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYg
aW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2
ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0
YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBOYXRpdmVJbWFnZTo6
c2l6ZShwbGF0Zm9ybUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8PCAhIWdy
YXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUltYWdlLCBp
bWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdl
U2l6ZSkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1h
cC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJ
bWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0
Zm9ybUltYWdlKQogewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4
dDsKICAgICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKQEAgLTExMzYsMjUg
KzExMzYsMjUgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUlt
YWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1h
Z2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFn
ZSkKIHsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29sIGhhc0ltYWdlID0g
ISFwbGF0Zm9ybUltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAKICAgICBpZiAoaGFz
SW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICAg
ICAgZW5jb2RlUGxhdGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVj
b2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVy
LCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGltYWdlID0gbnVsbHB0
cjsKKyAgICBwbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgaGFzSW1hZ2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3ICsxMTYzLDE3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdl
KERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2Up
OworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2Up
OwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENv
ZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2
ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2Uo
ZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Citib29sIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBk
ZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVj
b2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCiB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNiNDk2
YjA5YjkyYjhlMy4uZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4YmI5NjcxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFn
ZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgzZDVm
Njk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3
NDMzMTc3YjkwM2RlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFy
ZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwCkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpy
ZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoK
IAogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0gICAg
aWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVy
biBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlmIChh
dXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4NjdlYjJhMGZj
NGVjODU3ZjM0NzVhNGU4MjVhMzVjLi5lNjMwMDk0OGFhODhkNzFiNTM3N2U0YWMxMDdjOTA2ODU5
OTkwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJ
Y29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29ucwog
ICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2Miw3IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tI
b2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRJ
Y29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0YSA9
IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9s
b2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1v
bm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBtX2xvYWRl
ZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+LCBN
b25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxsb3dEYXRh
YmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJhc2VXcml0
ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxs
b3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkws
IHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBN
b25vdG9uaWNUaW1lOjpub3coKSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xv
YWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAg
ICAgICAgaWYgKCFpY29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+
c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwg
RW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpIHsKQEAgLTYyMiw3ICs2MjIsNyBAQCB2
b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9j
ayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25V
UkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRy
LCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQo
aWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3RvbmljVGlt
ZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEs
IGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmlu
ZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLjVjNzY5MDE3Zjll
NGRlMTg3NmNkNGFmNWUxN2NjZDFjYzFhZDZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0UGFn
ZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJM
LCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9vbCk+
JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxs
b3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpO
YXRpdmVJbWFnZT4mJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2NrIG1fcGFn
ZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CisgICAg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+LCBN
b25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNMb2Nr
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pY29u
SURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEwYWRm
ZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2RhODA5ZGMzMmQxNDQ1
MzlhMTRmNDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGljIFJl
dGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2
ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7
CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91
bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3Vy
Y2VTdGF0ZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBhZmE4MmIxMzBkNTI0
MmVkMWM5OWQ2ZTJiYmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2ViNjdmOTZkNzhlYWQ5
MWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBAIHN0YXRpYyBOU0Fy
cmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lv
bihpZCA8VUlEcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBz
aG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0gICAg
aWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hv
dEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0
KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJh
ZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNu
YXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNl
bGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0
V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAg
IFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VX
aXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3MzIsMTEg
Kzc3MzIsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNn
SW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAg
IGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsK
IH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0ZVRhcmdldGVk
RHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtNzk5MSwxMyArNzk5
MSwxMyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRl
ckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAKICAgICAgICAgYXV0
byB1bnNlbGVjdGVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0
aXZlSW1hZ2UoKTsKLSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkgeworICAg
ICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlLT5pc051bGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJG
YWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5vdCBkZWNvZGUgdW5z
ZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUuY2xlYXJBbGxEZWxh
eWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRv
cHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJ
bWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAgICBhdXRvIHVuc2Vs
ZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmll
bnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRvIHNuYXBzaG90Vmll
dyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVk
Q29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3NuYXBzaG90VmlldyBz
ZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdD
b29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25hcHNob3RW
aWV3LmdldCgpXTsKQEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBVSU1lbnUgKm1lbnVG
cm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJvbGxlciAqcHJldmll
d1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9y
LmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIAor
ICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9y
LmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5h
dGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAg
cmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJl
c2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250
cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4
N2QyMTYuLmFjZWYwMDc5MzNlMmYyY2QwZTY3YjI0MmVmMDEwNWEyYjE0M2I0YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDEw
ICs5NiwxMCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsK
ICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkp
OwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNFKENB
SVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5k
ZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4uOWUyNGFiOTllYmM2
NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNvcHlOYXRp
dmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdT
dG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4g
Y29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JH
UkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5k
ZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4uNzlhMjExNGJhMjQ5
NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIyMTNlMzQzLi4wZDc1
NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7
CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIGNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAK
ICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0MjgzODEuLjkyOTc2
MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjgzLDcgKzE2ODMsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiB3ZWJGcmFtZSwgYm9vbCB3
YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9vbCBpc0FsbW9zdFNv
bGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0g
Yml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRt
YXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBBU1NFUlQoQ0dJ
bWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwogCiAgICAgQ0dCaXRtYXBJbmZv
IGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMwMTIwYzM1ZmRmM2Fk
ZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZmMjcyNzQ4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBpZiAodGV4dEluZGljYXRvcikgewog
ICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlKCkp
Ci0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9y
bUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoISpjZ0ltYWdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkODE3Njk5Njc1ZWNm
YmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRkZjk1MGNiZmU4MTYzYjEzNjc1YWNk
ZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
YkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0K
QEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
IDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogICAgIFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFpczxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oY2Fj
aGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBXZWJDb3JlOjpDYWNo
ZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4oKmNh
Y2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5o
YXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1h
Z2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBi
NjBlMzI2ZjEwYmY1Y2UzY2E2ZmEzZjQwYjFhYThlMDk3OWQ0MjM3Li42M2U5NTJkN2UyYzE0ZWM5
MTNjMTc5YTVhMmM2N2RlNzUzN2FkMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBwcml2YXRlOgogICAgIF90ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gY3JlYXRlTlNBcnJheShpbmRpY2F0b3JE
YXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpLmxlYWtSZWYoKTsKICAgICBf
Y29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNjYWxl
RmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQp
Ci0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0
aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CisgICAgICAgIF9jb250ZW50SW1h
Z2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENH
SW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRp
dmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQo
KS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5nZXQo
KS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVu
dGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKIAogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNv
bnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9
IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZl
SW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBfY29udGVu
dEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5p
dFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJ
SW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2Vs
ZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6bmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNl
bGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgICAgICB9
CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="429403"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412893</attachid>
            <date>2020-11-02 00:27:40 -0800</date>
            <delta_ts>2020-11-02 02:00:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201102002739.patch</filename>
            <type>text/plain</type>
            <size>245168</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjM4N2U4Y2I5MjVkMGVjYTI2ZGEzYzQyNzU3ODE3YjAyOWI1ZTA2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsK
IAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBv
aW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBu
YXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZl
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdT
aGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRy
YXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmls
bFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsK
KyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5
ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNl
IGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKK30KKwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA1MDVjMGFmNDdkN2EwYTUwZTljMTkwNjZk
ZDkzZGU1OTYxZDY2OTFhLi5jODg4MTIxNDk1YTJlMmQ5MmYwYzM0Y2VjZjY2NjBhNDZmOWFmNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQgY2xlYXJSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBo
cyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VT
b3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2Fs
ZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwg
VGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xv
ciYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uYmRiMDU5NmQ3ZGNmNzVkZDA1OWI2OTg5NmEyZjE3YjU5YTcwOGQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4
dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28g
d2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjcxLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9y
bUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisg
ICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4Niw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQo
KSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJl
OTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRh
dGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2Ut
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRl
eEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBs
eUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBl
YWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBi
ZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHku
CiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5w
dXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4ZWY0Zjc4NmI3MjQ5
MTQyNDU2ZWZmMWYwYWQ4MjE2Y2M5MDU1MzY3Li40N2UxMDc1ZmMxN2FlZmFlNWMxYTY3ODVjYzUz
NDhlNTllZjk2MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAg
LTI4NSwxNyArMjg1LDIzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
CkBAIC00MjEsNyArNDI3LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CmluZGV4IDFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5Njg2MjA1MTQuLmI5ZmEyNGY5
NTdkZWQ4Nzc4NTZmOThmOTZlYzhiODcyYTAwMjhiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2
ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi42NmUwYjhmNGViNTcyMGViYjYzNzBhMGM1NDliM2Qy
YjZhMjQ4YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29y
ZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAg
IGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICppbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwg
V2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250
Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZk
ZmM0YzhlZjdiODUuLjNmNzVjZTE5ODFiYWNlZjM3Yzk0MTIyMWVkNGM2ZDA1NGY5ZDJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdT
dG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAs
IDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNv
cHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwog
ICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBt
X3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fp
cm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNv
bnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVf
SU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNo
KHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYz
Zjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2
ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9z
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4
NDM0MTU4YjRkMDMzMDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUz
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFj
ZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdl
ID8gY2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0K
IAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdl
IHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7CisgICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJ
bnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0Up
CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAh
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0g
ICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRp
cGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBjZTUyNzgwNjBh
MGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi43NDFjOTZmMjQ3YmIyZjJjYjk2NmFlZWJk
OGU2OGRjM2U4NmEzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAg
Y2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZh
Y2Uoc3VyZmFjZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFu
ZCB1c2VyIHNwYWNlIGl0c2VsZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGNmOGVjMjliNWNlNjRh
NTIwMTdiNzVkMDkwYjVmOTI2ZmQ1NjAxMmEuLjBhMTk5MGFlYWMyOTNlZDEwOTgwMjg5ODUyZTI0
YWU4ZTZmYzZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxMSArMjgwLDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5t
X3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogI2VuZGlmCkBAIC00NDcsMjMgKzQ1MiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAo
dGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFp
bnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQg
aW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3Mg
ZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGls
ZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBo
ID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5n
LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFn
ZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFn
ZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUg
bGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MTIsNyArNTE3LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklY
TUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxw
aGEgbWFzayBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5
N2VjYTgxYmJkYmM0ZTA1NjdlNDNjMDRkLi4wNDAzOTQ2OTEzNWMzNTU1NTI0MmVjNWI5ZjdhMmY4
NjMwOWMyMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2Uu
Z2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5n
ZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ3LDcgKzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7
CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShp
bWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VH
ZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVs
SW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
OwpAQCAtMzYyLDIyICszNjMsMjYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENv
bnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJk
IHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRo
ZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9j
Z0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0K
IAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25l
bnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21w
b25lbnQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0
Qml0c1BlclBpeGVsKGltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0g
ZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBv
bmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBz
byB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBpCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAg
QWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChD
R0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAg
ICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwx
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0
ID09IERhdGFGb3JtYXQ6Ok51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXRE
YXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0
KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0
YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFj
a0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFn
ZUdldEJ5dGVzUGVyUm93KGltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0
ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRk
aW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTQz
LDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMo
Y29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXplLmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICBjb250
ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1YzE3YjMuLjU0Yjg3OGI0
MzQ3NmUxOWJkNmY2MTcxZjhiNDk2Mjc3NjNlMGZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKQEAgLTY3LDI0ICs2NywyNCBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENv
bnRleHQoKQogICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlv
blNjYWxlKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSkKK3N0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpCiB7Ci0gICAgaWYgKGltYWdlICYmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IHN0
YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUud2lkdGgoKSkgfHwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKQot
ICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdo
dCgpKSkpOwotICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUo
KSAhPSBiYWNrZW5kU2l6ZSkKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
KSkpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFn
ZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
CiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KFdURk1vdmUoaW1hZ2UpLCBiYWNrZW5kU2l6
ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0lt
YWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8
fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVjdFNjYWxlZC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9w
dGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2Jh
Y2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUp
OwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBq
cGVnVVRJKCkpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5z
aW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBw
aXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAg
ICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGlt
ZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dC
aXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAg
IH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24g
PT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwpAQCAtMTY1LDEyICsx
NjUsMTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdl
dCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgp
LmhlaWdodCgpKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGlmICghZW5jb2RlSW1hZ2Uo
aW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKKyAgICBpZiAo
IWVuY29kZUltYWdlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHV0aS5nZXQoKSwgcXVh
bGl0eSwgY2ZEYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gV1RGTW92ZShjZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjM1NmViNTI2MzM3
NDA3MDg4M2EyOTNkNjUwYzY4NTRiNDdlZmQ5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTEwNywxNCArMTA3LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250
ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CiAKICAgICBjYXNl
IERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKAog
ICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZSht
X2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAg
ICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3
YTU0OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2Vi
OGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4
OTcxMGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1h
dDo6QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lu
a0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFj
ZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkp
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0
YTkwNDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2
YmVhODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNH
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlv
bnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUw
NmRkZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcAppbmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi5mMmZj
ZTRhYTRiNzcxZGFlM2ZiNDJkNWRiZTNhYTExZmIwZTZhMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzcs
MjAgKzM3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFn
ZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6
c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVy
biBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUlt
YWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgocGxhdGZvcm1JbWFnZS5nZXQoKSksIENHSW1h
Z2VHZXRIZWlnaHQocGxhdGZvcm1JbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwogfQogCi1ib29s
IG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBO
YXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENHSW1hZ2VBbHBoYUluZm8gaW5m
byA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAgIENHSW1hZ2VBbHBoYUlu
Zm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICAg
ICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5m
byA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxh
dGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENv
bG9yKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs2
MCw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgp
KTsKIAogICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjazsKQEAgLTY4LDExICs2OCwxMSBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwogfQogCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENB
Q0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkK
KyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1
YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0
dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0
aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9m
IGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAg
ICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNy
ZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0
aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1h
Z2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9Owot
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUo
aW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDUxM2Y0NTVjYWQ4ZTVlNjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjJmYWI2OWUwMzMy
NmMzN2I0YzNjMWM5ODNkOTQwODlhMjE4YzIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNl
R3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRv
d25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1
cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291
cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgm
IGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNmJlMjc0YzY4ZGVlZmI0YzBkNTM2MWJlNjQ4MTUy
NDAzMmM5ZjQxLi4xZGQ0YTI0YWYyZTg4NzMzOTIzN2U5YTBkYTEzMGRkNmIyNjQxM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjgsNiArNjgsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBl
IDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgRHJhd0ltYWdlQnVm
ZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBE
cmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0N2M3NjJlMWE2MTk3ZDZjOGI4YzQ1ZmE5Y2ZkYzA1
YTAzZGVlNTFiLi4xMjA1NjIyOGE5NzBhNzc5YzgzNjZmOTM5MjFlOTZkMmMzNThkOThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTgsNiArMTE4LDggQEAgc2l6
ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdl
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKQEAgLTg1OSw5ICs4NjEsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSAgICAsIG1faW1h
Z2UoaW1hZ2UpCisgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQpAQCAt
ODcxLDEyICs4NzMsNDAgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGkKIAogRHJhd05hdGl2ZUlt
YWdlOjp+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCi12b2lkIERyYXdOYXRpdmVJbWFn
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3Ny
Y1JlY3QsIG1fb3B0aW9ucyk7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVn
YXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQor
eworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAg
Ly8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1y
ZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6RHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQor
ICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30K
KworRHJhd1BsYXRmb3JtSW1hZ2U6On5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKKwor
dm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAoreworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNp
emUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7Cit9CisKK3N0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGxhdGZv
cm1JbWFnZSYgaXRlbSkKIHsKICAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRl
bSY+KGl0ZW0pOwogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCkBAIC0xNjc3LDYgKzE3
MDcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1h
Z2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUt
aW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZTogdHMg
PDwgImRyYXctcGxhdGZvcm0taW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTE4MDAsNiArMTgzMSw5IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Bs
YXRmb3JtSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwMTVi
ZTVlODY2MDZlY2MyZjZjZTg1N2MxZjcxMTY3Njk0ZmU4ZTMuLjdiN2U5YTBlNzBkZWM3MmY4Mjkz
MzM0YzRiOWQ1NmE0ZDMyZjAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTcwMSwyNyArMTcwMSwzMCBAQCBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJh
d0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogY2xhc3MgRHJhd05hdGl2
ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlv
blJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTE3MzEsNyArMTczNCw3IEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9pbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIGVuY29k
ZXIgPDwgbV9pbWFnZVNpemU7CiAgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKQEAgLTE3NDEsNyArMTc0NCw3NyBAQCB2b2lkIERyYXdO
YXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFn
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQ
dHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFn
ZVNpemU7CisgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CisgICAgaWYgKCFpbWFnZVNpemUpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRl
c3RpbmF0aW9uUmVjdDsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAg
aWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7CisgICAgZGVjb2RlciA+PiBvcHRpb25z
OworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwor
fQorCitjbGFzcyBEcmF3UGxhdGZvcm1JbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1Bs
YXRmb3JtSW1hZ2UoKTsKKworICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7
IH0KKworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFNpemUgbV9pbWFn
ZVNpemU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBt
X3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKKyAgICBlbmNv
ZGVyIDw8IG1faW1hZ2VTaXplOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+
PiBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8UGxhdGZvcm1JbWFnZVB0cj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTc2Niw3ICsx
ODM5LDcgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpp
bWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
KyAgICByZXR1cm4gRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUs
ICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9CiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKQEAgLTMzMzIsNiArMzQwNSw5IEBAIHZvaWQg
SXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJ
bWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxh
dGZvcm1JbWFnZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFn
ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKQEAgLTM1NTMsNiArMzYyOSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJh
d05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0
byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzcyNyw2
ICszODA3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZFNjYWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdJbWFnZUJ1ZmZlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3TmF0aXZlSW1hZ2UpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1BsYXRmb3JtSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d0xpbmUpCkBAIC0zNzk4LDYgKzM4NzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1JlY3QsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkMTQyYzM3
NzljYjk5M2U3MzcyYmI4Yjg4ODdmY2M0Yzc1MmZlOTg5Li40MGZjYWFhYTQ1MzZmYjUwNTVmMzk0
MjQ1ZmQwNmNiOWNkOWZjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0xOTQsOSArMTk0LDE4IEBAIGJvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVu
dChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucykpOworICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9kZWxlZ2F0ZS0+bG9j
a1JlbW90ZU5hdGl2ZUltYWdlKGltYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlY29yZGVyOjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxYzhjODk2Mzc4YzBjYWZiYjIxMTI4OTU5
N2NlZTI4YjRmYTc1ZDIuLmI4ODk1NmE5OWIyYjk5NWNjODMwNzBiYTkzN2I3MTY3NDY4ODQ1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CkBAIC0xMDgs
NyArMTA5LDggQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
ZGM5OTRiNzMxZmE4OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJi
N2Q1N2E5MTY1MTRlNjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSks
IHByZXNlbnRhdGlvblNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIW1faW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIG1faW1hZ2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2
b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgp
ICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhv
bGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKaW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3
ZC4uNTg2OWQ4Yzg2YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5
ZDhiYjliMjJlMTEwZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUz
NmEwYWEwMDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAog
ICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3
ZGJjNDk5YjUxZGFlYi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2
LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2
b2lkIHVwZGF0ZUVuYWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4
OTE0ZGEzYTM5NzAxZmRkZDZhNjYxLi43MzgwZWJmNDc2NjAxY2QwZDhkZmMzNmJmNDg4YTE4MDI0
N2MwOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUd0ay5jcHAKQEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6
OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1
cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNl
ID8gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgx
MzZjMWZmZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYw
ZDdiMTcxZDI2NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
SWNvbjo6SWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFn
ZShpbWFnZSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFn
ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsK
IAogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdl
dCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1J
bWFnZShtX2NnSW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5
MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLjliYjUwMjg5MGM2OTg4ZjM3
ZWJkZGI5MjM1MjEzYzViNGZlNTJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4g
SW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFn
ZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2
ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7
CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0
YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3Vn
aCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwg
YW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7
CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDYyOThjZjM2MDczYzdhZTQ0
ZjQzYzZiNTY0NDIyYjM3Yjg2Y2YxMDcuLmZjMmNiYjY4ZWIyYzQwMWJmYjE3NzBhZmJhY2M5Njg1
Mjk2OTA4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5
LDExICsxMDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJ
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0g
bmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVT
RShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IGEyYzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUuLjJlOWVlYzhmZjQ2
ZWY0OTRmZDliMzFlMDBiOTllN2U0NDhlZDMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NTUsMjUgKzU1NSwz
MSBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewotICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7Ci0gICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit7CisgICAgc3RydWN0IERyYXdQbGF0Zm9ybUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVy
YXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwg
RmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0
ZT4geworICAgICAgICB2aXJ0dWFsIH5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAog
ICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBv
dmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNv
bnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwy
PigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0
KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd05hdGl2ZUltYWdlPD5c
biI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdQbGF0Zm9ybUltYWdlPD5cbiI7
CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2Uu
Z2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BsYXRmb3Jt
SW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTU5NCw3ICs2MDAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1
cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3OSw3ICsxMDg1LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBGbG9hdFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFj
ZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBU
b0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgwOTNkNDEzNWI0ZDdi
NjUxMWExNjA4N2FmZjEzZjYwM2VkMTNiYS4uZDg4NGExZjJjNzk1YTc3M2NlN2ZhZGJkNzRkOTAw
NWMyNTMyNzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVk
MGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBh
dXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAj
aWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Uu
Z2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVz
UGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUzOGYuLjQwNjMzYTAx
OWRjZGQzMDdlMjEwOGQ3NTk2ZjhkZTYwYWM5MzBhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXll
cj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBH
cmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQs
MjIgKzI5MywyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBN
YWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVh
bGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGlt
YWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlv
biB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQg
d2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNz
dW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5l
d05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBp
ZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRp
dmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJ
bWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZh
Y3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
M2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3
NzI5MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdl
UHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0
YzkxYjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTM4LDcgKzEz
OCw2IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVj
dEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFs
c2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQogICAgICwgbV9yZXF1
ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVk
KQogewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGlt
YWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUltYWdlUHRyKQorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9
IG5hdGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFja2luZyBwcmVz
ZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgotICAgIGlmICht
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAgICBhdXRv
JiBpbWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0cl90IGltYWdlSUQg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAgICAgdWludHB0cl90
IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAvLyBSZXNwYXduIHRoZSBJbWFnZUJhY2tp
bmcgb2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAgICAgICAgIGlmICht
X25pY29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTky
ZWY5NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBtX25lZWRzRGlzcGxh
eTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRl
ZFRpbWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4gbV9y
ZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uMTc4
MDcyOTM4ODQ2NWM5NmU4MDkwNjNhMzhlYWJhNGJlMTQzN2VhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTEgKzIwNywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9y
bUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRp
dmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFn
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUlt
YWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhi
Zjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4My4uYTU2YTNiNDE5ZDVlZDRjNDNlNGY2
ZjFiYThhY2E1NjAzNjRjMGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5jcHAKQEAgLTI4Myw3ICsyODMsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250
ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2Uo
aW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQbGF0Zm9y
bUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcw
Yjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi41ZjkwZmYxZjFiOWYwMmJiMzE3YjE2
M2RmNzM2MTNjMjZmYjVkYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5o
CkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1h
Z2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2Fj
ZWYyMmU2OTdiNjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0
YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJp
dG1hcCgmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsK
QEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdC
LCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3Jt
Q29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRp
dmVJbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0
Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwg
UGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAg
ICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2go
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFC
aXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJp
dG1hcFRhcmdldCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eQogCiAgICAgfQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBU
YXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGlj
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBA
QCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlv
cik7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRm
b3JtSW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRh
cmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVy
U2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6
ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSAr
MTg3LDExIEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKGJpdG1hcFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCBy
ZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCkKIHsKICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2
YzQ1N2RjMjYxLi4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFn
ZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uKSBvdmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5
M2I5ZDRlOTIxMzNkNTUzY2QzYTRiLi45Njg0MDI4MjMyODE0M2MyMzMzNjU5N2M5ZWM4OTQ1NDJh
YmVmYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZlB0cjxCaXRtYXBJbWFnZT4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAgICAgLy8gVGhlIEJpdG1hcEltYWdl
IHRha2VzIG93bmVyc2hpcCBvZiB0aGlzLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0Lmdl
dCgpKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUoY2dJ
bWFnZSkpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNnSW1hZ2Up
KSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAs
IGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQo
KSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1Np
emUud2lkdGgoKSkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
OworICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzcmNTaXplKSB7CiAgICAg
ICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7
IGNvbXBvc2l0ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUz
Y2FhMmU4NWViY2UzODA1YzAuLjJjZWM5OWRjNzI5ZmU2NWUwODU0ZWVlNzJkZmM0ZWQ3YWYwOTUy
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDE3ICs5MywxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBhdXRvIHN1cmZhY2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKTsKLSAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICBhdXRvIG5h
dGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmICghbmF0aXZlSW1h
Z2UgfHwgbmF0aXZlSW1hZ2UtPnNpemUoKSAhPSBzcmNTaXplKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNl
LmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNp
emVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewotICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSA9IG1fY3VycmVudEZyYW1lOwotICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAg
ICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6
ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKLSAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsK
KyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOworICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3Qs
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkp
LCB7IGNvbXBvc2l0ZU9wIH0pOworICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3Jy
ZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCAyMWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2
ZDM0NzdkYTY5NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIElt
YWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiBy
ZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIGlmICghbV9u
YXRpdmVEZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKaW5kZXggNzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRjYWYyZTMyZWVhY2NmMTdlMC4uYzBkY2Fm
ZDY5NTRjNTdkZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBs
aW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcAppbmRleCA5MGY3OGMyMzhmMThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4
YTQ4YzlmLi5lYWM3Y2JlNjE3YjliN2Y5NWFhZjY3Y2FiOTU5OTY5YzlkOWNhMGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2
ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC01MCw2MCArNTAsMzYgQEAgc3RhdGljIElXSUNJbWFnaW5n
RmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQogICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKIH0K
IAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
SW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9y
bUltYWdlKQogewotICAgIFVJTlQgd2lkdGggPSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAg
ICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5H
ZXRQaXhlbFNpemUoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1JbWFnZSA/IHBsYXRmb3JtSW1hZ2Ut
PkdldFBpeGVsU2l6ZSgpIDogSW50U2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxw
aGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxw
aGEoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9y
bWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CisgICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4
ZWxGb3JtYXQgPSBtX3BsYXRmb3JtSW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CiAgICAgcmV0dXJu
IHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhBX01PREVfSUdOT1JFOwogfQogCi1D
b2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29u
c3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6
ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgx
LCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBub3RJbXBsZW1lbnRlZCgpOwot
CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUm
IHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGF1
dG8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0KLSAgICAv
LyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIg
dGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1h
Z2VTaXplKGltYWdlKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9m
IHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJz
YW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0Owot
ICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFkanVzdGVk
U3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0
UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGF1dG8mIHN0YXRlID0gY29u
dGV4dC5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29u
dGV4dCwgaW1hZ2UuZ2V0KCksIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotCiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdl
KQotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAg
aWYgKG1fcGxhdGZvcm1JbWFnZSkKKyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xl
YXJJbWFnZShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAppbmRleCA4N2Y4NGNhODRjNTRmNDI0
MjJmYjQ5N2M3OTVmMjYzNTFkNjZkNWMwLi42ODI4MWMwZWQ4M2MyZDM4ZDdjN2Y1ZjllMWYxYjFk
NzIzMzdiNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29y
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcApA
QCAtNjMsMTAgKzYzLDExIEBAIHN0YXRpYyBHUmVmUHRyPEdka0N1cnNvcj4gY3JlYXRlQ3VzdG9t
Q3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwCiAgICAgSW50UG9pbnQg
ZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAg
IHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV90ZXh0dXJlKHRleHR1cmUuZ2V0
KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSwgZmFsbGJhY2tD
dXJzb3IoKS5nZXQoKSkpOwogI2Vsc2UKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJm
YWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJm
YWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0
ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFkb3B0R1JlZihnZGtf
Y3Vyc29yX25ld19mcm9tX3N1cmZhY2UoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgc3VyZmFj
ZS5nZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKSk7CiAj
ZW5kaWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwCmluZGV4IDZhMWE3M2Y5ZDdmZmUxMDhmNzZlOWI0M2IzYThmYjkzZjllMDNhMzIu
LmFlZWNmY2Y1MjI3MGM1NWRiYWViYzEwY2UxMmFlM2I5MWI4M2JhZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC04Niw3ICs4Niw3IEBAIERy
YWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdl
LCBmbG9hdCBmcmFjdGlvbikKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJuIGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogfQogCiBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjljYWU4Zjk3ODE1
MTA0MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3MGI1MWY1ZWY1
MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAg
U2Vjb25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1h
Z2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAg
ICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1oZWlnaHQgaW1h
Z2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBlbXB0
eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmlu
ZGV4IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4MzIyMmVjM2Ji
Mzg1NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMo
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBiODM1YTY5
Y2JjNDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQzMTY4YTY1MjFi
NjljNTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9y
ZUNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAgbV9waXhlbHMt
PnJlZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0MGViZTc2YWYw
MzFmYTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcwNjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzksMTEgKzIzOSwx
MSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAg
ICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkpLCBJ
T1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAotICAgICAgICBb
XShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICBbXShS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAgICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAgICAgcmV0dXJu
IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7CiAgICAgICAg
IH0KICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1lLCBz
aXplKCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAgICAgICAgW3Ro
aXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRp
YVNhbXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24t
PmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxl
KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAg
ICAgIH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAppbmRl
eCBmZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZiMjQ0YTQ4NDkz
ZDJhNWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJD
VjsKIAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0g
V1RGOjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElPU3VyZmFjZVJl
Zj4+OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPE5h
dGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNzIENhcHR1cmVy
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExvZ2dlckhlbHBl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDNmNmNiNmVk
NWRmYTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLmIwNTlhMzI1MWQ4Yjk2NTdiYTkwMTRj
NDRmODA2M2FmODI3YjFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0KQEAgLTkxLDggKzkxLDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6
OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKQog
ICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6
Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZUJ1ZmZl
ci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgYXV0byBzYW1wbGVUaW1lID0gTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRz
KCkpOwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdl
dCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOworICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocGxh
dGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsK
ICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAxZGJlZDM2NTQ1NmUy
MjgzYWQ0ZTBhZGFhMWI3Yzc1YzkzNzdjMmYxLi4zNGVkOWVmOGNmNGY4NjZjYTAzZmRjYTkzMDRh
OTYwOTZiYzY1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKQEAgLTEzOSw4ICsxMzksMTAgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAgIENHQ29udGV4
dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0
KGRyYXdDb250ZXh0LCByZWN0KTsKICAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZl
SW1hZ2UoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtD
R0JsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4
dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdl
ID0gc3JjSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0
QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBwbGF0Zm9ybUltYWdlLmdldCgp
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5j
cHAKaW5kZXggM2E1ZTAwYmU2NzE4YjExODYyOTg2OGJhZmJhYzc5N2NlNmZlMDdiNS4uMDQxNzY2
YjcyYzUyMDMyOGI3NGNlNTljNjk4OGE0YzZiNDQyNWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0xNjIsOCArMTYyLDkg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFn
ZU9yaWVudGF0aW9uKQogICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLjAsIDAuMCwgMS4w
KTsKICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAg
aWYgKHN1cmZhY2UpIHsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZlSW1hZ2UtPmlz
TnVsbCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAgICAgIGNhaXJv
X3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpp
bmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4xMTFhNGIyYzM1
NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVjdC53
aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJhZGdl
RGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENHUmVj
dE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAotICAgIENJSW1h
Z2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUlt
YWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdp
dGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAK
ICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGgg
aW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBSZXRhaW5QdHI8
Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChh
YnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIs
IG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4
IDYzZWRmMTJlMjEzMzMwZGYyZGFjYjk2NTQwMjU2NTMxNjNiNDBiYzEuLmIwNjBkNzI4MjljYjcx
ZDMwYjZiZjI4NWEzM2JiNzhlY2E3OWE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFn
ZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUg
aW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2VzIG93
bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2Ug
bmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1hZ2VQdHIgU1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCop
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKICNl
bmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFy
Z2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAgaWYgKCFtX3Bh
Z2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
CmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjguLjI4MjVmOWQz
ODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2No
ZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRp
ZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7
CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVybiBtX3BhZ2Uu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1ZjVlODMxYjMx
YWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2Ut
PmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250
YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJ
bWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZTY0NGY3YWNm
MzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUzYzU5MjI1NzM3
MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZH
SW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRh
aW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2ODgy
MDY1NDdkNTI1MDNiZC4uMTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5OWRkZGIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTcsNyArMjE3
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHInLAorICAgICAgICAnV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAgICAgICdXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1Nzgx
OTJkZjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBmNjUx
OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFn
ZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0
LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzM3
OTU5NmJlNjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVkNzM2YTVlZGEw
MWVjZTRiNGNjNTViMjhjYzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRs
ZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5h
dGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K3N0YXRpYyB2b2lkIGVuY29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShwbGF0Zm9ybUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29u
dGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8PCAh
IWdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXpl
KSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUltYWdl
LCBpbWFnZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGlt
YWdlU2l6ZSkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJp
dG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0aWMg
dm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRp
dmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBw
bGF0Zm9ybUltYWdlKQogewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29u
dGV4dDsKICAgICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKQEAgLTExMzYs
MjUgKzExMzYsMjUgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2
ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbFBsYXRmb3Jt
SW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSkKIHsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29sIGhhc0ltYWdl
ID0gISFwbGF0Zm9ybUltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAKICAgICBpZiAo
aGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAg
ICAgICAgZW5jb2RlUGxhdGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAot
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2Uo
RGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNv
ZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGltYWdlID0gbnVs
bHB0cjsKKyAgICBwbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgaGFzSW1hZ2U7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3ICsxMTYzLDE3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUlt
YWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1h
Z2UpOworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1h
Z2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVu
dENvZGVyPFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1h
Z2UoZW5jb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRp
dmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCitib29sIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVy
biBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4g
ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNi
NDk2YjA5YjkyYjhlMy4uZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4YmI5NjcxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJ
bWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgz
ZDVmNjk4OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEw
NmU3NDMzMTc3YjkwM2RlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFw
OjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9p
ZCoKIAogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0g
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlm
IChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4NjdlYjJh
MGZjNGVjODU3ZjM0NzVhNGU4MjVhMzVjLi5lNjMwMDk0OGFhODhkNzFiNTM3N2U0YWMxMDdjOTA2
ODU5OTkwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hl
Y2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
cwogICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9sb2Fk
ZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0
YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIs
IE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBtX2xv
YWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1hZ2U+
LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxsb3dE
YXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJhc2VX
cml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwg
QWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25V
UkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRy
LCBNb25vdG9uaWNUaW1lOjpub3coKSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmF0aXZlSW1h
Z2U+LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAg
ICAgICAgICAgaWYgKCFpY29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRv
IGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFn
ZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUp
IDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpIHsKQEAgLTYyMiw3ICs2MjIsNyBA
QCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25z
TG9jayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGlj
b25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxs
cHRyLCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5z
ZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5hdGl2ZUltYWdlPiwgTW9ub3Rvbmlj
VGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAg
ICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRh
dGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFi
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5o
CmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLjVjNzY5MDE3
ZjllNGRlMTg3NmNkNGFmNWUxN2NjZDFjYzFhZDZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0
UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9v
bCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93
RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwg
QWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZT4mJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJM
LCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2NrIG1f
cGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
LCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNM
b2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9p
Y29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEw
YWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2RhODA5ZGMzMmQx
NDQ1MzlhMTRmNDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5h
dGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgp
XSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBz
aG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdT
b3VyY2VTdGF0ZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBhZmE4MmIxMzBk
NTI0MmVkMWM5OWQ2ZTJiYmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2ViNjdmOTZkNzhl
YWQ5MWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBAIHN0YXRpYyBO
U0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vz
c2lvbihpZCA8VUlEcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZFNu
YXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0g
ICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2VsZWN0ZWRTbmFw
c2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2Uu
Z2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0
RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3Rl
ZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91
bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBp
bml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwog
ICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3MzIs
MTEgKzc3MzIsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAo
IWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCld
KTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0ZVRhcmdl
dGVkRHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtNzk5MSwxMyAr
Nzk5MSwxMyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhv
bGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAKICAgICAgICAg
YXV0byB1bnNlbGVjdGVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+
bmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkgewor
ICAgICAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hv
dEltYWdlLT5pc051bGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3As
ICJGYWlsZWQgdG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5vdCBkZWNvZGUg
dW5zZWxlY3RlZCBjb250ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUuY2xlYXJBbGxE
ZWxheWVkSXRlbVByZXZpZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAgICBhdXRvIHVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBv
cmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRvIHNuYXBzaG90
VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVj
dGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3NuYXBzaG90Vmll
dyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25hcHNo
b3RWaWV3LmdldCgpXTsKQEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBVSU1lbnUgKm1l
bnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJvbGxlciAqcHJl
dmlld1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNh
dG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAg
IAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNh
dG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8
IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisg
ICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilf
cHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1D
b250cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIy
NGI4N2QyMTYuLmFjZWYwMDc5MzNlMmYyY2QwZTY3YjI0MmVmMDEwNWEyYjE0M2I0YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2
LDEwICs5NiwxMCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
IHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsK
KyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5
KCkpOwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNF
KENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
aW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4uOWUyNGFiOTll
YmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNvcHlO
YXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tp
bmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
PiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFj
a2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0
b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
aW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4NjdlZDU4My4uNzlhMjExNGJh
MjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4YTEzNWIyMTNlMzQzLi4w
ZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmlu
YWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBib29sIGNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1MTg3Y2Q0MjgzODEuLjky
OTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjgzLDcgKzE2ODMs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1lKiB3ZWJGcmFtZSwgYm9v
bCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9vbCBpc0FsbW9z
dFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdlUmVmIGltYWdl
ID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBi
aXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBBU1NFUlQo
Q0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwogCiAgICAgQ0dCaXRtYXBJ
bmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMwMTIwYzM1ZmRm
M2FkZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZmMjcyNzQ4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIGlkIDxET01FdmVudFRh
cmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBpZiAodGV4dEluZGljYXRvcikg
ewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVudEltYWdl
KCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxl
YXNlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0
Zm9ybUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoISpjZ0ltYWdlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkODE3Njk5Njc1
ZWNmYmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRkZjk1MGNiZmU4MTYzYjEzNjc1
YWNkZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUu
bW0KQEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogICAgIFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdlYkNvcmU6Ok1lbW9yeUNhY2hl
OjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFpczxXZWJDb3JlOjpDYWNoZWRJbWFnZT4o
Y2FjaGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBXZWJDb3JlOjpD
YWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFnZT4o
KmNhY2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFn
ZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVk
SW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICAKKyAgICBhdXRvIG5hdGl2
ZUltYWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCBiNjBlMzI2ZjEwYmY1Y2UzY2E2ZmEzZjQwYjFhYThlMDk3OWQ0MjM3Li42M2U5NTJkN2UyYzE0
ZWM5MTNjMTc5YTVhMmM2N2RlNzUzN2FkMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBwcml2YXRlOgogICAgIF90
ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gY3JlYXRlTlNBcnJheShpbmRpY2F0
b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMpLmxlYWtSZWYoKTsKICAg
ICBfY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVNj
YWxlRmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGln
aHQpCi0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUlt
YWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VX
aXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVu
dGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CisgICAgICAgIF9jb250ZW50
SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5u
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKICAgICBpZiAoaW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5n
ZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdl
T3JpZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZS5n
ZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9y
aWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKIAogICAgIGlmIChpbmRpY2F0b3JEYXRh
LmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0
aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBfY29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgICAg
ICB9CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="429407"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412894</attachid>
            <date>2020-11-02 01:44:11 -0800</date>
            <delta_ts>2020-11-06 20:03:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201102014409.patch</filename>
            <type>text/plain</type>
            <size>245965</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uYTI1OWE0MmZhMjdmZTdmNzI4Zjc3NDhiZmFiNzBl
OTAxYmIwZDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NCBAQAorMjAyMC0xMS0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5k
aWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRl
QW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0lu
dG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRp
dmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNB
bHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3Bw
ZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFn
ZTo6RHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdQbGF0Zm9ybUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OmRlc3RpbmF0aW9uUmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BsYXRm
b3JtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxl
Qml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgor
CiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVh
ZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjEx
OGY4NzBhZjE5MzRhNzlmMDAuLjBhZmFhOTA3MDlkODcwZjI0NjQ5ZjBhNzM0MmIxMThkY2M1Yjc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
Y2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoSVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERl
bGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNl
Ojpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNl
dEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAo
dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5
SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTEx
LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVt
YWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0
OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhlMjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJl
OTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBp
bWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtE
T01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1p
c2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTEw
LTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10g
UmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcgU1BJIGZvciBlYWNoIHByZWZlcmVuY2Ug
dGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MDZlMDRlOWY1NTAxMDUw
ZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMxY2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1
OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyMDQsNyArMTIwNCw2IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhmOGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1
YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5
MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5
YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxh
dGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMzI1
M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FC
MjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8q
IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIy
MzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTIz
OTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEz
MjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5
ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0
aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0
OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVE
MTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4
ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8s
CiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4
ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2Mzcz
LDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcgKzMzMzg2LDYgQEAKIAkJCQlBODE4NzIy
MzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1
MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjEw
LDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2
OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4
MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBB
RjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2
NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBmNWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIz
LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29u
c3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRl
b0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVy
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUwZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4y
YzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJlMDEzMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8v
IFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgog
ICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmE4MGI4NDYw
MGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4uNzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJm
OTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MzUsOCArMTYz
NSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsK
IAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
RmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQoKSksIGRzdFJl
Y3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQog
ICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQppbmRleCAxN2JhNTFm
ZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIzMDNmZWFkMzhlMTI1
NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0
b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAK
ICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplLnNj
YWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0NvbnRlbnRDcm9zc2Zh
ZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgZWxz
ZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlv
bj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0
YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24o
Q0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7
CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVu
dEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRl
bnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihfX2Jy
aWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3
NzYyZTU1MzI3ODNmZGExNy4uODQzZjFmZTE4ZmM4ZmIzNjdlMjI2YTc5MTQ0MzQxNWRlZGY3YjVk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29k
aW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNv
ZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxT
aXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGlu
Z0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVS
TCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1w
bGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUlt
YWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVz
cGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2lu
dCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24g
fSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
ICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0
KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9
PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQog
Ci1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQorVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3Rv
cjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNGU3MzQ4YzIwMDAyN2UwMDE1NmI3YzVhMWZkYTM0MzY4YWM3YzEyMy4uNDMxODFm
Zjk5ZDI1OTQxOTg4MTZkZDk1NjZkNzk0OTE3YjQ0Y2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZlB0cjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNv
ZGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2Ut
PmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0
cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVm
ZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcg
KzIwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNsZWFyVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA4Njk3Mzk1ZmE0YzhkMDg1MWM3Yjc3OTA0
MDZlNjFjOTE4ZmNlYTUwLi45ZTI3MDlkZDNiMjA4NTlmYTg5YzcyOTIzYzFhOTIzNGMzMDc4ZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdD
b250ZXh0KCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkg
ewogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMWMwMDg5
ZGVkMGVlNzUxM2MxOGY5NGQzMmZhMzc1ZGVlNjhmZjkyZS4uZWU3Njk4MWRjZWIwZjliN2E3OWE2
ZTMwMTE2ZmE1YjUzMDYzMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsMTcgKzczMSwxNSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICht
X2ltcGwgJiYgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgcGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDBkMWNhOTJkNjA0NWViMzdhNzhkM2UxODk3YzI2ZjQyYjlj
NzZmM2EuLjYxNDMzMDBjODhiMmQ3ZWJjZDllZGI1YzZjZjNlZmE4YmY5ZDM3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jiwg
Y29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYp
OwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4IGJiOWIwYzlm
YjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZjNmFkOTRkYzZh
N2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
QEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9k
ZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzNTM2ZDJmM2I3M2NkNDg4ZTk4ZWMyZTlm
ZGUyNDhmODIzOGMzOWNlLi40NGQ1MWM5YTY4MTdjMTVmODYyYTE5OGQ1MTIyOTZiZWY5NzcyOTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRh
NzlhZGQ5ODg0MTM2ZDdkLi41YzI4NjgxZDQ0MWM5MGIxZWM0ZTFkMTkwYmZkMGFhZjBmMWRjY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZv
ciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJk
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNmYWIuLjQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsxNTMsMTAgQEAg
cHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNw
YWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBY2Nl
c3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBhMTc1ZGRhNTRh
NjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNmNjM3NDIyZjNi
OTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihuZXcgSW1hZ2VC
YWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFm
ZjAzODE5OTViNWRlNWJkM2E1NTU4YmUxLi4yNmRkYzliNjdlZGU1N2U5NTM4OGNmZTljZTBjY2E2
NTM5OWIwMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBp
bWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2Fl
NzUxNzZhMjk5NDIzMmJkYWRmMmE0Ny4uOTA3ODhlZTM1ZmY3ZjFiNmM2ZDg3NWU0NWJjY2M1OTRm
OGY4MDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAg
IC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFu
ZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSA9
IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJkNjdlODAxN2JkNzBm
MjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2ZWRlNTlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlCiAg
ICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBjYjU4NzI1
NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNmNThlNDI3ODU2N2Qx
ODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTc3LDEzICs3Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0
dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwg
c2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZp
cnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAw
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4g
c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4
ODVkNzA5YmQ5ODE3Li5lNGFhNTI0NDM1NzVkNDVkYTY0YWJiNTlhZWI2OTEyYmRkYTViN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2VQdHIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2
MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNp
Z25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMg
PSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1f
bmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAg
bV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGlu
Z09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1f
c2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJl
dHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAg
ICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1
NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZh
YzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXpl
KCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1w
bGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAg
IERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJ
bWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAy
OGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVk
ZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1h
Z2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQog
ewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsK
ICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwog
CiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsK
LSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7
Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRp
dmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgp
OworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
OwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVj
b2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVN
ZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4K
IAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7
CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUu
bV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOworICAgICAgICBm
cmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRl
Y29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdl
U291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0
Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkz
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
TW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNv
ZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMw
MSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQo
ZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1h
Z2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERl
Y29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291
cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAv
LyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0
Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdl
cywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNh
Y2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGlu
ZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAg
IHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICAvLyBH
ZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAg
ICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAgICAgICAgICAg
aWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVj
dGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBm
cmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9u
cyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAgICAgICBMT0co
SW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJl
ZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVS
TC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywg
cHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVz
dC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFz
eW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJh
dGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VV
UkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZy
YW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0
ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90
ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Rl
Y3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1v
dmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5k
ZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdP
cHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShw
bGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdp
bGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJj
ZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7
CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1l
QXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYg
KGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGlt
YWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXIt
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwog
ICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4K
LSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250
ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFi
bGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2Up
KTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4o
aW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVN
ZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRh
QXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VG
cmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0
YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVt
cChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYw
MWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGlt
YWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMg
KzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRl
OgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlv
bjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQ
dHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAg
ICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYs
IHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2Rp
bmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFn
ZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJi
MGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3
MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAz
OGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6
UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjFkZDE5ZjE3NDRmYjViNmM1Y2U4ZTE3NDZhN2Jj
M2FjMjg0ODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVh
dGUoUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXRpdmVJbWFnZShwbGF0Zm9ybUltYWdlKSk7Cit9CisKK1JlZjxOYXRpdmVJbWFn
ZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3Jt
SW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2UpCit7
Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZv
cm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQor
eworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZl
ciAmJiBtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIG1fb2JzZXJ2ZXItPm5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThlNWIu
LmNiMTZjMGRhM2FlMGM5NDUyYjVkNDU0YzBiY2Y5MTQzMzdmYWQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3LDUx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgorI2luY2x1ZGUg
IlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIiAgICAKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgSW50
U2l6ZTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRp
dmVJbWFnZT4geworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
PSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
fTsKIAotfQorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWY8TmF0aXZlSW1hZ2U+IGNyZWF0
ZShQbGF0Zm9ybUltYWdlUHRyJik7CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRp
dmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIEludFNpemUgc2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB+TmF0aXZlSW1hZ2UoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1J
bWFnZSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0K
KworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUobV9wbGF0Zm9ybUltYWdl
KTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2Vy
dmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMo
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYpOwor
ICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIg
fTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFw
LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNU
MkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBV
U0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5NDRlOWUzOThm
Y2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNU
MkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlm
IFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYzOTMxNzhm
NGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4ZmIyZDZh
YWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJ
bWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcwYTM1MzU3
M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQxOTQ5M2U5
NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFiZDA3NTNh
MTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRiMTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTU2
Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAoZnJhbWVT
aXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9s
ZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4uMjZiM2Q3
OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2
b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5h
bDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsK
IAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpAQCAtMzQz
LDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRl
PiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFn
ZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1cmVDb3Bp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgxNmVkZGU3
OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQwNDlkNTA0MTZkNjUy
NDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyArMTEyNyw3
IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBkYXRlTGFz
dEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXll
ck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlKTsK
KyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsK
IH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyArMTEzOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5
ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91
c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdElt
YWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAgIHVwZGF0
ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVw
ZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1f
bGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogCiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4ICsyMzE0
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7
IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFnZUdlbmVyYXRvciBp
biB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFuIGF2YWlsYWJsZQog
ICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBt
X2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdiZjdhNzY3MzMwYTY3
MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQzZjgwOTEwZjZiYTI5
ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIxNSw3ICsyMTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogICAg
IFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJldGFpblB0cjxBVlN0
cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9ybWVyOwogICAgIFJl
ZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVzc2lvblNlc3Npb247
CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjEx
YWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0NDA4ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdElt
YWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKICAgICAgICAgbV9y
Z2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAgbV9sYXN0SW1hZ2Ug
PSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3Jn
YkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYyNiw4IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRm
b3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIg
KnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQz
NTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQo
KTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1l
ZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li45YTUzNmRi
OTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2
aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpA
QCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5j
cmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpA
QCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5n
ZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2Ut
PnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJh
bnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJh
bnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3Qp
OwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdl
UmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmlu
Z1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUu
LmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdF
QkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAj
ZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2Yjgw
ODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVv
RnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudElt
YWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAg
ICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBz
ZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzAwNjliZGNmYmQ2MWZmNzY1OGVhY2QxMDYwODJhZTBjNmZkMjBkMi4uM2M4ZjdjMDJhMzk5ZDFh
ZmQ4N2Q2ZWY3NmNlZTFiMDNmMWVjYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1
OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAg
ICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVp
bmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNp
emUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0
ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRy
OwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlm
NmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZm
YWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERp
c3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFz
cyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNT
b2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAog
ICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2Zi
NzNmNWJmNDM5YmEuLjM4N2U4Y2I5MjVkMGVjYTI2ZGEzYzQyNzU3ODE3YjAyOWI1ZTA2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsK
IAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBv
aW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBu
YXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZl
SW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdT
aGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRy
YXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93
U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmls
bFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFn
ZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsK
KyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5
ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNl
IGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKK30KKwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA1MDVjMGFmNDdkN2EwYTUwZTljMTkwNjZk
ZDkzZGU1OTYxZDY2OTFhLi5jODg4MTIxNDk1YTJlMmQ5MmYwYzM0Y2VjZjY2NjBhNDZmOWFmNjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQgY2xlYXJSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBo
cyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VT
b3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2Fs
ZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwg
VGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xv
ciYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uYmRiMDU5NmQ3ZGNmNzVkZDA1OWI2OTg5NmEyZjE3YjU5YTcwOGQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4
dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28g
d2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjcxLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9y
bUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisg
ICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4Niw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQo
KSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJl
OTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRh
dGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2Ut
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRl
eEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBs
eUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBl
YWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBi
ZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHku
CiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5w
dXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4ZWY0Zjc4NmI3MjQ5
MTQyNDU2ZWZmMWYwYWQ4MjE2Y2M5MDU1MzY3Li40N2UxMDc1ZmMxN2FlZmFlNWMxYTY3ODVjYzUz
NDhlNTllZjk2MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAg
LTI4NSwxNyArMjg1LDIzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
CkBAIC00MjEsNyArNDI3LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CmluZGV4IDFjODI3MTMwYzJhNWZlMjhmNzUzNWUxOTQ1YTMzZGM5Njg2MjA1MTQuLmI5ZmEyNGY5
NTdkZWQ4Nzc4NTZmOThmOTZlYzhiODcyYTAwMjhiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2
ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi42NmUwYjhmNGViNTcyMGViYjYzNzBhMGM1NDliM2Qy
YjZhMjQ4YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29y
ZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAg
IGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksICppbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwg
V2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250
Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZk
ZmM0YzhlZjdiODUuLjNmNzVjZTE5ODFiYWNlZjM3Yzk0MTIyMWVkNGM2ZDA1NGY5ZDJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdT
dG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAs
IDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNv
cHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwog
ICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBt
X3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fp
cm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNv
bnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJv
X3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVf
SU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENB
SVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFj
a2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNo
KHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYz
Zjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2
ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9z
dXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4
NDM0MTU4YjRkMDMzMDFhYjA0Li4xMTVlMGJkMGM5NjhkMTExNmQ5OTkxNTY3Y2RjYmM0OTI5MWUz
OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFj
ZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdl
ID8gY2Fpcm9TdXJmYWNlU2l6ZShwbGF0Zm9ybUltYWdlLmdldCgpKSA6IEludFNpemUoKTsKIH0K
IAotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
K2Jvb2wgTmF0aXZlSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdl
IHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7CisgICAgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJ
bnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0Up
CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAh
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0g
ICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgdW5zaWduZWQqIHBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiB1bnByZW11bHRp
cGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0
aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9pZCBOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBjZTUyNzgwNjBh
MGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi43NDFjOTZmMjQ3YmIyZjJjYjk2NmFlZWJk
OGU2OGRjM2U4NmEzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAg
Y2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZh
Y2Uoc3VyZmFjZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFu
ZCB1c2VyIHNwYWNlIGl0c2VsZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGNmOGVjMjliNWNlNjRh
NTIwMTdiNzVkMDkwYjVmOTI2ZmQ1NjAxMmEuLjBhMTk5MGFlYWMyOTNlZDEwOTgwMjg5ODUyZTI0
YWU4ZTZmYzZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxMSArMjgwLDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5t
X3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogI2VuZGlmCkBAIC00NDcsMjMgKzQ1MiwyMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAo
dGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFp
bnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQg
aW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3Mg
ZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGls
ZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBo
ID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5n
LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFn
ZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFn
ZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUg
bGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MTIsNyArNTE3LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklY
TUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxw
aGEgbWFzayBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5
N2VjYTgxYmJkYmM0ZTA1NjdlNDNjMDRkLi4wNDAzOTQ2OTEzNWMzNTU1NTI0MmVjNWI5ZjdhMmY4
NjMwOWMyMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2Uu
Z2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5n
ZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ3LDcgKzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7
CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShp
bWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VH
ZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVs
SW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
OwpAQCAtMzYyLDIyICszNjMsMjYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENv
bnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRo
LCBtX2ltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJk
IHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRo
ZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9j
Z0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0K
IAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25l
bnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21w
b25lbnQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0
Qml0c1BlclBpeGVsKGltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0g
ZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBv
bmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBz
byB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBpCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAg
QWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChD
R0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAg
ICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwx
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0
ID09IERhdGFGb3JtYXQ6Ok51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXRE
YXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0
KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0
YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFj
a0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFn
ZUdldEJ5dGVzUGVyUm93KGltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0
ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRk
aW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTQz
LDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMo
Y29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXplLmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICBjb250
ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1YzE3YjMuLjU0Yjg3OGI0
MzQ3NmUxOWJkNmY2MTcxZjhiNDk2Mjc3NjNlMGZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKQEAgLTY3LDI0ICs2NywyNCBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1cENv
bnRleHQoKQogICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlv
blNjYWxlKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5k
U2l6ZSkKK3N0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpCiB7Ci0gICAgaWYgKGltYWdlICYmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IHN0
YXRpY19jYXN0PHNpemVfdD4oYmFja2VuZFNpemUud2lkdGgoKSkgfHwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkpKQot
ICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdo
dCgpKSkpOwotICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUo
KSAhPSBiYWNrZW5kU2l6ZSkKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
KSkpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFn
ZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
CiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KFdURk1vdmUoaW1hZ2UpLCBiYWNrZW5kU2l6
ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0lt
YWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8
fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTE0
LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVjdFNjYWxlZC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9w
dGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2Jh
Y2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUp
OwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBq
cGVnVVRJKCkpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkK
ICAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5z
aW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBw
aXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAg
ICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGlt
ZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dC
aXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAg
IH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24g
PT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwpAQCAtMTY1LDEyICsx
NjUsMTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7Ci0g
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdl
dCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0
KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgp
LmhlaWdodCgpKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
LmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGlmICghZW5jb2RlSW1hZ2Uo
aW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKKyAgICBpZiAo
IWVuY29kZUltYWdlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHV0aS5nZXQoKSwgcXVh
bGl0eSwgY2ZEYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1
cm4gV1RGTW92ZShjZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjM1NmViNTI2MzM3
NDA3MDg4M2EyOTNkNjUwYzY4NTRiNDdlZmQ5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTEwNywxNCArMTA3LDE0IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250
ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSk7CiAKICAgICBjYXNl
IERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKAog
ICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZSht
X2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAg
ICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3
YTU0OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2Vi
OGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4
OTcxMGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1h
dDo6QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lu
a0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFj
ZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkp
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0
YTkwNDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2
YmVhODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNH
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlv
bnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUw
NmRkZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcAppbmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi5mMmZj
ZTRhYTRiNzcxZGFlM2ZiNDJkNWRiZTNhYTExZmIwZTZhMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzcs
MjAgKzM3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFn
ZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6
c2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVy
biBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUlt
YWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgocGxhdGZvcm1JbWFnZS5nZXQoKSksIENHSW1h
Z2VHZXRIZWlnaHQocGxhdGZvcm1JbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwogfQogCi1ib29s
IG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBO
YXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENHSW1hZ2VBbHBoYUluZm8gaW5m
byA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAgIENHSW1hZ2VBbHBoYUlu
Zm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICAg
ICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5m
byA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIW1fcGxh
dGZvcm1JbWFnZSB8fCBzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENv
bG9yKCk7CiAKICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs2
MCw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgMSwgMSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgp
KTsKIAogICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjazsKQEAgLTY4LDExICs2OCwxMSBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwogfQogCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENB
Q0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZSkK
KyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1
YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0
dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0
aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9m
IGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAg
ICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNy
ZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRy
YW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5U
cmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYg
RkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBp
cyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3Vs
dCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0
aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1h
Z2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxs
YmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9Owot
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2lu
ZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUo
aW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmlu
ZGV4IDUxM2Y0NTVjYWQ4ZTVlNjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjJmYWI2OWUwMzMy
NmMzN2I0YzNjMWM5ODNkOTQwODlhMjE4YzIzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNl
R3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRv
d25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1
cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291
cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgm
IGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCBkNmJlMjc0YzY4ZGVlZmI0YzBkNTM2MWJlNjQ4MTUy
NDAzMmM5ZjQxLi4xZGQ0YTI0YWYyZTg4NzMzOTIzN2U5YTBkYTEzMGRkNmIyNjQxM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNjgsNiArNjgsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBl
IDogdWludDhfdCB7CiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgRHJhd0ltYWdlQnVm
ZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKKyAgICBEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBE
cmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0N2M3NjJlMWE2MTk3ZDZjOGI4YzQ1ZmE5Y2ZkYzA1
YTAzZGVlNTFiLi4xMjA1NjIyOGE5NzBhNzc5YzgzNjZmOTM5MjFlOTZkMmMzNThkOThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0xMTgsNiArMTE4LDggQEAgc2l6
ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdO
YXRpdmVJbWFnZT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdl
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQbGF0Zm9ybUltYWdlPihpdGVt
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UmVjdDoKQEAgLTg1OSw5ICs4NjEsOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKLSAgICAsIG1faW1h
Z2UoaW1hZ2UpCisgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQpAQCAt
ODcxLDEyICs4NzMsNDAgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGkKIAogRHJhd05hdGl2ZUlt
YWdlOjp+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCi12b2lkIERyYXdOYXRpdmVJbWFn
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3Ny
Y1JlY3QsIG1fb3B0aW9ucyk7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVn
YXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQor
eworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAg
Ly8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbW90ZS1y
ZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6RHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQor
ICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKK3sKK30K
KworRHJhd1BsYXRmb3JtSW1hZ2U6On5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKKwor
dm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAoreworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNp
emUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7Cit9CisKK3N0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGxhdGZv
cm1JbWFnZSYgaXRlbSkKIHsKICAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRl
bSY+KGl0ZW0pOwogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCkBAIC0xNjc3LDYgKzE3
MDcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1h
Z2U6IHRzIDw8ICJkcmF3LXRpbGVkLXNjYWxlZC1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUt
aW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZTogdHMg
PDwgImRyYXctcGxhdGZvcm0taW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTE4MDAsNiArMTgzMSw5IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1Bs
YXRmb3JtSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwMTVi
ZTVlODY2MDZlY2MyZjZjZTg1N2MxZjcxMTY3Njk0ZmU4ZTMuLjdiN2U5YTBlNzBkZWM3MmY4Mjkz
MzM0YzRiOWQ1NmE0ZDMyZjAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTcwMSwyNyArMTcwMSwzMCBAQCBPcHRpb25hbDxSZWY8RHJhd0ltYWdlQnVmZmVyPj4gRHJh
d0ltYWdlQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogY2xhc3MgRHJhd05hdGl2
ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisg
ICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3TmF0aXZlSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICBGbG9hdFNpemUgaW1hZ2VTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlv
blJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTE3MzEsNyArMTczNCw3IEBAIHBy
aXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9pbWFnZTsK
KyAgICBlbmNvZGVyIDw8IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIGVuY29k
ZXIgPDwgbV9pbWFnZVNpemU7CiAgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKQEAgLTE3NDEsNyArMTc0NCw3NyBAQCB2b2lkIERyYXdO
YXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFn
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQ
dHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFn
ZVNpemU7CisgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CisgICAgaWYgKCFpbWFnZVNpemUpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRl
c3RpbmF0aW9uUmVjdDsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAg
aWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7CisgICAgZGVjb2RlciA+PiBvcHRpb25z
OworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IHJldHVybiBEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSgqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMpOwor
fQorCitjbGFzcyBEcmF3UGxhdGZvcm1JbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxEcmF3UGxhdGZvcm1JbWFnZT4gY3JlYXRlKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQbGF0Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd1Bs
YXRmb3JtSW1hZ2UoKTsKKworICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8UmVmPERyYXdQbGF0Zm9ybUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7
IH0KKworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFNpemUgbV9pbWFn
ZVNpemU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OworICAgIEZsb2F0UmVjdCBt
X3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRHJhd1BsYXRmb3JtSW1hZ2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKKyAgICBlbmNv
ZGVyIDw8IG1faW1hZ2VTaXplOworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Cisg
ICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+
PiBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8UGxhdGZvcm1JbWFnZVB0cj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTc2Niw3ICsx
ODM5LDcgQEAgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpp
bWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsK
KyAgICByZXR1cm4gRHJhd1BsYXRmb3JtSW1hZ2U6OmNyZWF0ZSgqaW1hZ2UsICppbWFnZVNpemUs
ICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CiB9CiAKIGNsYXNzIERyYXdQ
YXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKQEAgLTMzMzIsNiArMzQwNSw5IEBAIHZvaWQg
SXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdOYXRpdmVJ
bWFnZT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxh
dGZvcm1JbWFnZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGxhdGZvcm1JbWFn
ZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKQEAgLTM1NTMsNiArMzYyOSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0
ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJh
d05hdGl2ZUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2U6CisgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3UGxhdGZvcm1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0
byBpdGVtID0gRHJhd1BhdHRlcm46OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzcyNyw2
ICszODA3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdU
aWxlZFNjYWxlZEltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdJbWFnZUJ1ZmZlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3TmF0aXZlSW1hZ2UpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1BsYXRmb3JtSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd1BhdHRlcm4pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1JlY3QpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d0xpbmUpCkBAIC0zNzk4LDYgKzM4NzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1JlY3QsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkMTQyYzM3
NzljYjk5M2U3MzcyYmI4Yjg4ODdmY2M0Yzc1MmZlOTg5Li40MGZjYWFhYTQ1MzZmYjUwNTVmMzk0
MjQ1ZmQwNmNiOWNkOWZjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC0xOTQsOSArMTk0LDE4IEBAIGJvb2wgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVu
dChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucykpOworICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9kZWxlZ2F0ZS0+bG9j
a1JlbW90ZU5hdGl2ZUltYWdlKGltYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucykpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlY29yZGVyOjpkcmF3
UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxYzhjODk2Mzc4YzBjYWZiYjIxMTI4OTU5
N2NlZTI4YjRmYTc1ZDIuLmI4ODk1NmE5OWIyYjk5NWNjODMwNzBiYTkzN2I3MTY3NDY4ODQ1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1v
dGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CkBAIC0xMDgs
NyArMTA5LDggQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXgg
ZGM5OTRiNzMxZmE4OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJi
N2Q1N2E5MTY1MTRlNjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSks
IHByZXNlbnRhdGlvblNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgp
IGNvbnN0CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIW1faW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIG1faW1hZ2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2
b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgp
ICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhv
bGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKaW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3
ZC4uNTg2OWQ4Yzg2YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5
ZDhiYjliMjJlMTEwZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUz
NmEwYWEwMDVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAog
ICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3
ZGJjNDk5YjUxZGFlYi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2
LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
LCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVt
LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2
b2lkIHVwZGF0ZUVuYWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4
OTE0ZGEzYTM5NzAxZmRkZDZhNjYxLi43MzgwZWJmNDc2NjAxY2QwZDhkZmMzNmJmNDg4YTE4MDI0
N2MwOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUd0ay5jcHAKQEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6
OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1
cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNl
ID8gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgx
MzZjMWZmZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYw
ZDdiMTcxZDI2NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
SWNvbjo6SWNvbihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFn
ZShpbWFnZSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFn
ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsK
IAogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdl
dCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1J
bWFnZShtX2NnSW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5
MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLjliYjUwMjg5MGM2OTg4ZjM3
ZWJkZGI5MjM1MjEzYzViNGZlNTJiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4g
SW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFn
ZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2
ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPFJlZlB0cjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7
CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0
YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3Vn
aCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwg
YW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7
CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDYyOThjZjM2MDczYzdhZTQ0
ZjQzYzZiNTY0NDIyYjM3Yjg2Y2YxMDcuLmZjMmNiYjY4ZWIyYzQwMWJmYjE3NzBhZmJhY2M5Njg1
Mjk2OTA4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5
LDExICsxMDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJ
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0g
bmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNl
dChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVT
RShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IGEyYzllMDkzZmMxNGJhNWMxZTgyOWM0YjI0ZTE2NTQwMDM3YTQ0NTUuLjJlOWVlYzhmZjQ2
ZWY0OTRmZDliMzFlMDBiOTllN2U0NDhlZDMzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NTUsMjUgKzU1NSwz
MSBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewotICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7Ci0gICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit7CisgICAgc3RydWN0IERyYXdQbGF0Zm9ybUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVy
YXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwg
RmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0
ZT4geworICAgICAgICB2aXJ0dWFsIH5EcmF3UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAog
ICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBv
dmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNv
bnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwy
PigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0
KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd05hdGl2ZUltYWdlPD5c
biI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIkRyYXdQbGF0Zm9ybUltYWdlPD5cbiI7
CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2Uu
Z2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BsYXRmb3Jt
SW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTU5NCw3ICs2MDAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1
cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3OSw3ICsxMDg1LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBGbG9hdFIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFj
ZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBU
b0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgwOTNkNDEzNWI0ZDdi
NjUxMWExNjA4N2FmZjEzZjYwM2VkMTNiYS4uZDg4NGExZjJjNzk1YTc3M2NlN2ZhZGJkNzRkOTAw
NWMyNTMyNzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVk
MGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBh
dXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAj
aWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Uu
Z2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVz
UGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUzOGYuLjQwNjMzYTAx
OWRjZGQzMDdlMjEwOGQ3NTk2ZjhkZTYwYWM5MzBhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXll
cj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBH
cmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQs
MjIgKzI5MywyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBN
YWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVh
bGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGlt
YWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlv
biB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQg
d2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNz
dW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5l
d05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBp
ZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRp
dmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJ
bWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZh
Y3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
M2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3
NzI5MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdl
UHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0
YzkxYjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTM4LDcgKzEz
OCw2IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVj
dEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFs
c2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMsICZDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQogICAgICwgbV9yZXF1
ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVk
KQogewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGlt
YWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUltYWdlUHRyKQorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9
IG5hdGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xp
ZW50Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2UgYmFja2luZyBwcmVz
ZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNlLgotICAgIGlmICht
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwogICAgICAgICBhdXRv
JiBpbWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0cl90IGltYWdlSUQg
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAgICAgdWludHB0cl90
IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAvLyBSZXNwYXduIHRoZSBJbWFnZUJhY2tp
bmcgb2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAgICAgICAgIGlmICht
X25pY29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTky
ZWY5NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBtX25lZWRzRGlzcGxh
eTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRl
ZFRpbWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4gbV9y
ZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uMTc4
MDcyOTM4ODQ2NWM5NmU4MDkwNjNhMzhlYWJhNGJlMTQzN2VhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsMTEgKzIwNywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9y
bUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRp
dmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFn
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUlt
YWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhi
Zjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4My4uYTU2YTNiNDE5ZDVlZDRjNDNlNGY2
ZjFiYThhY2E1NjAzNjRjMGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5jcHAKQEAgLTI4Myw3ICsyODMsMTIgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250
ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2Uo
aW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQbGF0Zm9y
bUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7CiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcw
Yjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi41ZjkwZmYxZjFiOWYwMmJiMzE3YjE2
M2RmNzM2MTNjMjZmYjVkYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5o
CkBAIC03MSw3ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1h
Z2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2Fj
ZWYyMmU2OTdiNjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0
YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJp
dG1hcCgmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsK
QEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdC
LCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3Jt
Q29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRp
dmVJbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJ
bnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0
Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwg
UGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAg
ICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2go
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFC
aXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJp
dG1hcFRhcmdldCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eQogCiAgICAgfQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBU
YXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGlj
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBA
QCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9y
ZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlv
cik7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRm
b3JtSW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRh
cmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVy
U2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6
ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSAr
MTg3LDExIEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKGJpdG1hcFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCBy
ZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCkKIHsKICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2
YzQ1N2RjMjYxLi4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFn
ZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNv
bHV0aW9uKSBvdmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5
M2I5ZDRlOTIxMzNkNTUzY2QzYTRiLi42ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhk
NDE2ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZlB0cjxCaXRtYXBJbWFnZT4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAgICAgLy8gVGhlIEJpdG1hcEltYWdl
IHRha2VzIG93bmVyc2hpcCBvZiB0aGlzLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0Lmdl
dCgpKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUoY2dJ
bWFnZSkpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNnSW1hZ2Up
KTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwg
Y29uc3QgSW50U2l6ZSogc2l6ZSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFn
ZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgp
KSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6
ZS53aWR0aCgpKSkgeworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAgICAg
ICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsg
Y29tcG9zaXRlT3AgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODkyZTNj
YWEyZTg1ZWJjZTM4MDVjMC4uMmNlYzk5ZGM3MjlmZTY1ZTA4NTRlZWU3MmRmYzRlZDdhZjA5NTIz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcApAQCAtOTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1l
SW1hZ2VBdEluZGV4KGkpOwotICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFn
ZSB8fCBuYXRpdmVJbWFnZS0+c2l6ZSgpICE9IHNyY1NpemUpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2Uu
Z2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcmNTaXplLndpZHRoKCkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1l
ID0gbV9jdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAg
ICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXpl
LndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwotICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwor
ICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CisgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSks
IHsgY29tcG9zaXRlT3AgfSk7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1l
OworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJl
Y3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDIxYzE5ZWM2M2I1NDY5MGZjYzI5Y2Q4MDZk
MzQ3N2RhNjk2NGRjMzUuLjc3YjFhNGExODg4MWMwYjVhMjIzOTcwY2YwMTQ3NmUxZTkxZTYyNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJl
bmRlclRhcmdldCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25h
dGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
aAppbmRleCA3NmQ3YWNhOTNlMzkyNDI3YjI2NTM1NGNhZjJlMzJlZWFjY2YxN2UwLi5jMGRjYWZk
Njk1NGM1N2RlYjM5MjA0ZTlmYmIwNmFkMGIxYzkxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
aApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxp
bmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGly
ZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUlt
YWdlRGlyZWN0MkQuY3BwCmluZGV4IDkwZjc4YzIzOGYxOGY5OWJjNTA5YzFlMzA5MTgzZmNhZjhh
NDhjOWYuLmVhYzdjYmU2MTdiOWI3Zjk1YWFmNjdjYWI5NTk5NjljOWQ5Y2EwZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTUwLDYwICs1MCwzNiBAQCBzdGF0aWMgSVdJQ0ltYWdpbmdG
YWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCiAgICAgcmV0dXJuIGltYWdpbmdGYWN0b3J5OwogfQog
Ci1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJ
bnRTaXplIE5hdGl2ZUltYWdlOjpzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3Jt
SW1hZ2UpCiB7Ci0gICAgVUlOVCB3aWR0aCA9IDA7Ci0gICAgVUlOVCBoZWlnaHQgPSAwOwotICAg
IGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gaW1hZ2UtPkdl
dFBpeGVsU2l6ZSgpOworICAgIHJldHVybiBwbGF0Zm9ybUltYWdlID8gcGxhdGZvcm1JbWFnZS0+
R2V0UGl4ZWxTaXplKCkgOiBJbnRTaXplKCk7CiB9CiAKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBo
YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29sIE5hdGl2ZUltYWdlOjpoYXNBbHBo
YSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBpZiAoIW1fcGxhdGZvcm1JbWFnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3Jt
YXQgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsKKyAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhl
bEZvcm1hdCA9IG1fcGxhdGZvcm1JbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsKICAgICByZXR1cm4g
cGl4ZWxGb3JtYXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05PUkU7CiB9CiAKLUNv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0NvbG9yIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25z
dAogewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgIGlmICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEs
IDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0K
ICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYg
c3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgYXV0
byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIC8v
IFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0
aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFn
ZVNpemUoaW1hZ2UpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2Yg
dGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNh
bXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0g
ICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKLSAgICAgICAgYWRqdXN0ZWRT
cmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRS
ZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAgYXV0byYgc3RhdGUgPSBjb250
ZXh0LnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0LCBpbWFnZS5nZXQoKSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0KICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2Up
Ci0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyAgICBp
ZiAobV9wbGF0Zm9ybUltYWdlKQorICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVh
ckltYWdlKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAjZW5kaWYKIH0KIAotCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCmluZGV4IDg3Zjg0Y2E4NGM1NGY0MjQy
MmZiNDk3Yzc5NWYyNjM1MWQ2NmQ1YzAuLjY4MjgxYzBlZDgzYzJkMzhkN2M3ZjVmOWUxZjFiMWQ3
MjMzN2I0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCkBA
IC02MywxMCArNjMsMTEgQEAgc3RhdGljIEdSZWZQdHI8R2RrQ3Vyc29yPiBjcmVhdGVDdXN0b21D
dXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3AKICAgICBJbnRQb2ludCBl
ZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAg
cmV0dXJuIGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX3RleHR1cmUodGV4dHVyZS5nZXQo
KSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpLCBmYWxsYmFja0N1
cnNvcigpLmdldCgpKSk7CiAjZWxzZQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZh
Y2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZh
Y2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRl
cm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19j
dXJzb3JfbmV3X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBzdXJmYWNl
LmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsKICNl
bmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAKaW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNmOWUwM2EzMi4u
YWVlY2ZjZjUyMjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgRHJh
Z0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2Us
IGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUx
MDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUw
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBT
ZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBT
Y2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFn
ZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAg
IExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFn
ZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5
IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIz
ODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
c2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclBy
b2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjlj
YmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2
OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+
cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAz
MWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDEx
IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAg
ICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElP
U3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtd
KFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJl
ZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4g
SW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAg
fQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNp
emUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhp
cywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlh
U2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+
Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUo
aW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAg
ICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4
IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNk
MmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0
aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBX
VEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVm
Pj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0
aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1
ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0
NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6
dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAg
ICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpj
cmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVy
LT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMo
KSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0
KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1w
bGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0
Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwog
ICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIy
ODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5
NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0
U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3Qo
ZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJ
bWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NH
QmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0
LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2Ug
PSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRC
bGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkp
OworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9X
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNw
cAppbmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li4wNDE3NjZi
NzJjNTIwMzI4Yjc0Y2U1OWM2OTg4YTRjNmI0NDI1YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIsOSBA
QCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdl
T3JpZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAxLjAp
OwogICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBp
ZiAoc3VyZmFjZSkgeworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgaWYgKG5hdGl2ZUltYWdlICYmICFuYXRpdmVJbWFnZS0+aXNO
dWxsKCkpIHsKKyAgICAgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCk7CiAgICAgICAgIC8vIERyYXcgdGhlIGltYWdlLgogICAgICAgICBjYWlyb19zZXRfc291
cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UuZ2V0KCksIDAuMCwgMC4wKTsKICAgICAgICAgY2Fpcm9f
cGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmlu
ZGV4IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjExMWE0YjJjMzU1
YzA3Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFpbnRJ
bmZvJiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0Lndp
ZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFkZ2VE
aW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dSZWN0
TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogCi0gICAgQ0lJbWFn
ZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1h
Z2UoKS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0
aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKIAog
ICAgIC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0aCBp
biB0aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAgIFJldGFpblB0cjxD
R1BhdGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KGFi
c29sdXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8gMiwg
bnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
NjNlZGYxMmUyMTMzMzBkZjJkYWNiOTY1NDAyNTY1MzE2M2I0MGJjMS4uYjA2MGQ3MjgyOWNiNzFk
MzBiNmJmMjg1YTMzYmI3OGVjYTc5YTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdl
OjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQK
IH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBp
bWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3du
ZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZSBu
ZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikK
K1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogI2Vu
ZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJn
ZXRDb250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAgICBpZiAoIW1fcGFn
ZSB8fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgK
aW5kZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQyOC4uMjgyNWY5ZDM4
OThkOGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51
bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlm
CiAjaWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsK
ICNlbmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNkNjVmNWU4MzFiMzFh
ZjM2NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRh
aW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBlNjQ0ZjdhY2Yz
MGVjMjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUwNTNjNTkyMjU3Mzcw
ZjJiOGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wg
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJ
bWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5OTExMWE3ODkwYjU3ODVmNGUxMDYyZDY4ODIw
NjU0N2Q1MjUwM2JkLi4xMWJmOGZlMmVmNDA4YmFlOTE2ZDRmZTA2YTdmNDNkNTk5ZGRkYjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNyw3ICsyMTcs
NyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAg
ICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
cicsCisgICAgICAgICdXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJywKICAgICAgICAgJ1dlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGRiMDhjNDMxOGFlODU1YzhiYzU3ODE5
MmRmODYxYTgxNWFiMGIyMzkuLmU1NzEzZTMwMWY2MDI2YmNiNmRiNjIxZjRlZjRiN2UxMGY2NTE5
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdl
UmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogCiAgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBn
cmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3Qs
IHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAzMzc5
NTk2YmU2OWQ5MjRhZTBjYTZkOGY5ZjFmZmIwMWIyMGMzZDZjLi41ZWU5MzM1NWQ3MzZhNWVkYTAx
ZWNlNGI0Y2M1NWIyOGNjMDgwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsMTYgKzExMDAsMTYgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxl
JiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlTmF0
aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
c3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1JbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGF1dG8gaW1hZ2VTaXplID0g
bmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IE5hdGl2ZUltYWdl
OjpzaXplKHBsYXRmb3JtSW1hZ2UpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBlbmNvZGVyIDw8ICEh
Z3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUpLCBGbG9hdFJlY3QoeyB9LCBpbWFnZVNpemUp
KTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtSW1hZ2Us
IGltYWdlU2l6ZSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1h
Z2VTaXplKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgYml0
bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKQEAgLTExMTcsNyArMTExNyw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2
ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBs
YXRmb3JtSW1hZ2UpCiB7CiAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250
ZXh0OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwpAQCAtMTEzNiwy
NSArMTEzNiwyNSBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZl
SW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdAogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBwbGF0Zm9ybUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
dm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1J
bWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUlt
YWdlKQogewotICAgIGJvb2wgaGFzSW1hZ2UgPSAhIWltYWdlOworICAgIGJvb2wgaGFzSW1hZ2Ug
PSAhIXBsYXRmb3JtSW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKIAogICAgIGlmICho
YXNJbWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAg
ICAgICBlbmNvZGVQbGF0Zm9ybUltYWdlKGVuY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShE
ZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdlKERlY29kZXImIGRlY29k
ZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgaW1hZ2UgPSBudWxs
cHRyOworICAgIHBsYXRmb3JtSW1hZ2UgPSBudWxscHRyOwogCiAgICAgYm9vbCBoYXNJbWFnZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKQEAgLTExNjMsMTcgKzExNjMsMTcg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1h
Z2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAgICBpZiAoIWhhc0ltYWdlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFn
ZSk7CisgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFn
ZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIEFyZ3VtZW50
Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGVuY29kZU9wdGlvbmFsTmF0
aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOworICAgIGVuY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFn
ZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJu
IGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBk
ZWNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoZGVjb2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBhYmNhMDI0MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0
OTZiMDliOTJiOGUzLi5mOTFjYjkxMmEyOTQyZmRjYjBkNTk2NzJjNDc4YmM0ZjhiYjk2NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9u
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZVB0ci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC00MTksOSArNDE5LDkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Oklt
YWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHI+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNk
NWY2OTg4YjIxMTU4OGRhN2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2
ZTc0MzMxNzdiOTAzZGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKQEAgLTE4NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6
OnJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lk
KgogCiBSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAg
ICBpZiAoIXBsYXRmb3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYg
KGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1ODg2N2ViMmEw
ZmM0ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLjMxYzM4ZjM2MTNiMzZiNTFkZWMwZmVkYTFiN2JjMTc3
NzlkZjBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVj
a0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
CiAgICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1JbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hv
bGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRlZElj
b25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRhID0g
dGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2xv
YWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9u
b3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVk
SWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90
b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxvd0RhdGFiYXNl
V3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFzZVdyaXRlID09
IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDE0ICs1ODcsMTQgQEAgdm9pZCBJY29u
RGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93
RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBz
dGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9u
b3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2Fk
ZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9u
b3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKICAgICAgICAgICAg
IGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERh
dGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkpLCB0cnVlKSA8IEVuY29k
ZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Zmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdDsKQEAg
LTYyMiwxMyArNjIyLDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9s
ZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
b2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1v
bm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdl
UHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29u
RGF0YVNpemUpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1
czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmlu
ZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLmUyMjUyYTAwMDBk
MmJiZTViNmY2OWNkMjI3MWQwMGExMjVjNTc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0UGFn
ZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJM
LCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9vbCk+
JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxs
b3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3Jt
SW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxv
d0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcgKzcxLDcgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2NrIG1fcGFnZVVS
TFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CisgICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9u
aWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNMb2NrOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pY29uSURGb3JJ
Y29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEwYWRmZmE2MmU0
NzdiNzgzOTM2M2MyNWU5ODAyOS4uYmYwM2U0M2YwZmQ5MWU3M2RhODA5ZGMzMmQxNDQ1MzlhMTRm
NDgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGljIFJldGFpblB0
cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdl
LT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRO
UyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VE
cmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0
ZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZGQ4OWMwZjBhZmE4MmIxMzBkNTI0MmVkMWM5
OWQ2ZTJiYmY1NTg4OS4uOTQ0YjVhN2IxY2NkYTNiYWIwYWVlN2ViNjdmOTZkNzhlYWQ5MWU4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC03NTAzLDEzICs3NTAzLDEzIEBAIHN0YXRpYyBOU0FycmF5PE5T
SXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8
VUlEcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdW5zZWxlY3RlZFNuYXBzaG90SW1h
Z2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCF1
bnNlbGVjdGVkU25hcHNob3RJbWFnZSkKKyAgICBpZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdl
IHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdl
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2Nh
bGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0
aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFk
b3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVk
Q29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aElt
YWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5z
ZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3MzIsMTEgKzc3MzIs
MTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6
SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2Up
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICgh
bmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAog
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0ZVRhcmdldGVkRHJhZ1By
ZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtNzk5MSwxMyArNzk5MSwxMyBA
QCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1l
bnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICB9CiAKICAgICAgICAgYXV0byB1bnNl
bGVjdGVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90V2l0aG91dFNlbGVjdGlvbi0+bmF0aXZlSW1h
Z2UoKTsKLSAgICAgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSkgeworICAgICAgICBp
ZiAoIXVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlIHx8IHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5p
c051bGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQg
dG8gYW5pbWF0ZSBpbWFnZSBwbGFjZWhvbGRlcnM6IGNvdWxkIG5vdCBkZWNvZGUgdW5zZWxlY3Rl
ZCBjb250ZW50IGltYWdlLiIpOwogICAgICAgICAgICAgc3RhdGUuY2xlYXJBbGxEZWxheWVkSXRl
bVByZXZpZXdQcm92aWRlcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5n
ZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmll
bnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAgICBhdXRvIHVuc2VsZWN0ZWRD
b250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBz
Y2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRvIHNuYXBzaG90VmlldyA9IGFk
b3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVu
dEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3NuYXBzaG90VmlldyBzZXRGcmFt
ZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZpZXc6c25hcHNob3RWaWV3Lmdl
dCgpXTsKQEAgLTEwMDQxLDcgKzEwMDQxLDEyIEBAIHN0YXRpYyBVSU1lbnUgKm1lbnVGcm9tTGVn
YWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpCiB7
CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIAorICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRl
bnRJbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUlt
YWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0dXJu
IFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0
aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVy
ICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4N2QyMTYu
LmMzYmVlZjVkMTQwYjcyNDM4ZGM3NTA1NjAzYWU5YTRjZGUyYTExYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDE0ICs5Niwx
NCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBV
U0UoQ0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwogI2Vs
aWYgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNFKENBSVJPKQot
ICAgIHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpKTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApp
bmRleCAwNWMxMDljZDIwMjZkMTVmODBlYjgzMmFkOWYxYjdiYTMzYmI5NTU3Li45ZTI0YWI5OWVi
YzY3NWNlMjAxYTU5Mzk3MjhjNjE5ZGJhNTk1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gKm1fY29udGV4dDsgfQogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
PiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRv
QkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBjYTAyNTJhNDZlMmMwNzFmZmQ1MzRiODMzZGJiNDU1NTg2N2VkNTgzLi43OWEyMTE0YmEy
NDk3MDJjYzU1NDdmZmExM2IzM2MzOTYwODY0OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC04MTEsNyArODExLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IDVmODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjBk
NzU1MmY0OTNmMDc0MjQxMmE2YmUyOTczOTYyMTZkYzk1ZjU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5h
bDsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBH
Q0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOwotICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsK
IAogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggODFjYjMxYjg1ZmYyNjg1MTAwYjk0MmY4ZWNkNjUxODdjZDQyODM4MS4uOTI5
NzYwZTJkZjZiZTNjYjI3ZDBlNWVmNmZlYzIzM2ZmNzk4MTllMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2ODMsNyArMTY4Myw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29s
IHdhc0NhbmNlbGxlZCkKICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBib29sIGlzQWxtb3N0
U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQogewotICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBiaXRtYXAtPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJp
dG1hcC0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIEFTU0VSVChD
R0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CiAKICAgICBDR0JpdG1hcElu
Zm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0KaW5kZXggNWI4Y2I2YzM4YzdhNWIxNjY3NGJmMTRhYzAxMjBjMzVmZGYz
YWRmNi4uN2FhMDA0YTYxNjllYjQwMjA0ZGIyMjRkNmVkYzIyNmYyNzI3NDhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01MzYsNyArNTM2LDcgQEAgaWQgPERPTUV2ZW50VGFy
Z2V0PiBraXQoRXZlbnRUYXJnZXQqIHRhcmdldCkKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7
CiAgICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2Uo
KSkKLSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkuYXV0b3JlbGVh
c2UoKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBsYXRm
b3JtSW1hZ2UoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmICghKmNnSW1hZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ4MTc2OTk2NzVl
Y2ZiYjljMjM2NzkzNWMyMmM1N2M3OGE0YTM0ZjEuLmZkMDk2ZGRmOTUwY2JmZTgxNjNiMTM2NzVh
Y2RkZTMxN2I5ZjMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQpAQCAtMTcxLDEwICsxNzEsMTYgQEAgY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNhY2hlZEltYWdlPihj
YWNoZWRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFdlYkNvcmU6OkNh
Y2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigq
Y2FjaGVkUmVzb3VyY2UpOworCisgICAgYXV0byYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJD
b3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdl
Lmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJ
bWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIAorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0
aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IGI2MGUzMjZmMTBiZjVjZTNjYTZmYTNmNDBiMWFhOGUwOTc5ZDQyMzcuLjYzZTk1MmQ3ZTJjMTRl
YzkxM2MxNzlhNWEyYzY3ZGU3NTM3YWQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg0NSwxNCArODQ1LDE0IEBAIHByaXZhdGU6CiAgICAgX3Rl
eHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBjcmVhdGVOU0FycmF5KGluZGljYXRv
ckRhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykubGVha1JlZigpOwogICAg
IF9jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlU2Nh
bGVGYWN0b3I7CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdo
dCkKLSAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdp
dGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJ
bWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRo
Q0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5h
dGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwogICAgIGlmIChpbmRpY2F0b3JEYXRh
LmNvbnRlbnRJbWFnZSkKLSAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdl
dCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvblVwXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdl
dCgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRp
dmVJbWFnZSgpOwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBp
bml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRvckRhdGEuY29udGVu
dEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgICAg
IH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413507</attachid>
            <date>2020-11-06 20:03:35 -0800</date>
            <delta_ts>2020-11-06 20:51:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106200334.patch</filename>
            <type>text/plain</type>
            <size>252003</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uMGZmMmRiYzM0NTA3Y2I0YTQ0OGU2YzE5OTMzNWJl
NDI5YjExYTVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MCBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRl
eHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0
Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
bGF0Zm9ybUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6cHJlVHJhbnNmb3JtZWRO
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0
aXZlSW1hZ2VPZlNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1h
Z2VBdEluZGV4QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5
bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUF0
SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oLgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
cGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cGxhdGZvcm1J
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRh
dGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZy
YW1lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1h
bmFnZXJPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjpz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFu
YWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fp
cm86OmRyYXdTaGFkb3dMYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1NoYWRvd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsU2hhZG93QnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
OjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0FscGhhKToKKyAgICAgICAgKFdl
YkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyUGxhdGZvcm1J
bWFnZVN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJ
bWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzbmFwc2hvdE5TSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5k
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
bGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZv
cm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdlRGlyZWN0MkQuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUlt
YWdlRGlyZWN0MkQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2luZ0ZhY3RvcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1JbWFnZUhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5n
bGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdl
U3ViaW1hZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUN1c3RvbUN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0RyYWdJbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQmFja2luZ1N0b3JlOjppbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVT
YW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVBy
ZXZpZXdCYWRnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5oOgorCiAyMDIwLTExLTA2ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
TWFjL2FjY2Vzc2tleS5odG1sIGluIGlzb2xhdGVkIHRyZWUgbW9kZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGVh
NGMzN2RlYjQ1MjkwOGQ1MTlhYjUwOGJjMDBkYWFkN2ZkMjY0Ni4uOTBiMjMyZjcyMDMyOWU1N2Jk
NjJiOTFhNjAwOTliZWRkZjJkMGRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAyMC0x
MS0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5
IGEgbmV3IGNsYXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNy
ZWF0ZUZyb21DR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6ZW5jb2RlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29k
ZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRp
b25hbE5hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxO
YXRpdmVJbWFnZVB0cj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUlt
YWdlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25E
YXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFi
YXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp1aUltYWdlRm9ySW1hZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9kZWxpdmVyRGVsYXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTpdKToKKyAg
ICAgICAgKHVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRs
ZURyb3BCeUluc2VydGluZ0ltYWdlUGxhY2Vob2xkZXJzOnNlc3Npb246XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9s
bGVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKToKKwog
MjAyMC0xMS0wNiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJBdXRobl0gW2lPU10gV2ViQXV0aG4gcHJvY2VzcyBkb2Vzbid0IHN0YXJ0IG9uIGlPUyBk
ZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWQ3NDQ4ODAxZmQ0ZTVkYjEx
NjgxZGMyNmVlNmQwMTMyNzAxMDE5MS4uNjczYTFkYTZiYzgyZDU0MDA1NzkwZWU3ZTQyZGI5YzU4
NjMzZmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIwLTExLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1h
Z2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9N
Tm9kZSBnZXRQcmV2aWV3U25hcHNob3RJbWFnZTphbmRSZWN0czpdKToKKyAgICAgICAgKiBNaXNj
L1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJDYWNoZSBpbWFnZUZvclVSTDpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlVJVGV4dEluZGljYXRvckRh
dGEgaW5pdFdpdGhJbWFnZTp0ZXh0SW5kaWNhdG9yRGF0YTpzY2FsZTpdKToKKwogMjAyMC0xMS0w
NCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFBy
b2Nlc3NdIE1vdmUgdGhlIGludGVybmFsIEdQVSByZW5kZXJpbmcgZmxhZ3MgZnJvbSBXZWJQYWdl
IHRvIFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGE0M2MyMDU4MTY1ZTg0NTkzZjg5
NGM2YWNiZTY4NDJlMmJjYTVmMzcuLmQ3ZDQ1MTE3ZmVlMjBkYjIzOTM1YzdjNmJiZDk4NGJlZjJh
Y2Q3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIxNiwxMyArMTIxNiwxMyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAotICAgIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1z
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1EaXNwbGF5LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1MYXllci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCAw
MTUyZTU3ZDc3ZDZiMjJhZDNjZGQzMGRjNDJlNjE4MGYxNzRhOGE4Li5jMzg1NDA4MDYxOWNkY2Q1
MDE3YWU0YmE4NTllYzI4MDZjNWZhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIGVsc2UgKCkKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50
UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCi0g
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCA4ZDkyNDkxYTA4NTMwZWNhMmU5NmY0ZGMxZTYyZDMyNWIx
NmU0NzVjLi5lZDZhY2IzMWNiYTVkNzI5MWE1ZDA4Zjg1YTQ3MTM2MDcwMDQwN2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjk1LDEwICsyOTUsMTAgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW50U2l6ZUNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGY3NDNkZGE1Yjc5MGRlZWY1ZmE1NGViYTVlNTE4YzMwZGFjZjdlODYuLjAxMDQxOWZkNGZkNTRi
OTYxMzFkNWQyZjZkNTFjMWJiMWJjZDA5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTQxLDYgKzE5
NDEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvTUlNRVR5cGVDYWNoZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAorcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFV0aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhZDMzYTk1NTE5
MmQ5MDc2ZWIzZDhjMTYyY2ZlMzg2MjJkZmIxOGMuLjY3MmRjZTM2YzcxYjFkNWQ5OTcxM2U5MWI5
MzI0MDNjOTNmMWE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzM3LDEwICszMzcs
MTAgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0
Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCi1wbGF0Zm9ybS9ncmFw
aGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1h
Z2VDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGM2ZTQyNTNmODQ2ZGVkZTdmOTBi
YjU4Y2Q2NWQ2MjlkN2JlYzc2NS4uOWEzNjc4OGY5ODI1OGVjYzlhYzNkYmQ5MmQzMjE4ZWIzMTcx
OWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjE1OCw3ICsyMTU4LDcgQEAKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFE
QzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkQ1NkUx
MjUzQUUwNDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAv
KiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNkQ1NkUzMjUz
QUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUlt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIy
M0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1
MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyog
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03NDI4LDcgKzc0MjgsNyBAQAogCQkzNzZEQ0NFMDEzQjRGOTY2
MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3MkIwOTUx
NjUzNTg1NjAwMEE0OUNBIC8qIFBvcHVwT3BlbmluZ09ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvcHVwT3BlbmluZ09ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJl
cXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3N0EzQThG
MTVFRkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VDRy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5
OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MjkxNzgxOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRp
YWxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTUxLDYgKzk5NTEsNyBAQAogCQk3
MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI2NkYwMTMyMjQxQkNFMjAwODMzOTc1IC8qIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDE0MjI0MUJGQjIwMDgzMzk3NSAvKiBTVkdQ
cmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAxNTIyNDFDMDk4MDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTYxLDcgKzk5NjIsNyBAQAogCQk3MjY2RjAyODIyNDMx
MjAzMDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2MTYxLDExICsyNjE2MiwxMSBAQAogCQkJCUIyNzUzNTM0MEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRTaXplQ0cuY3BwICovLAogCQkJCTFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCAqLywKIAkJCQkxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNl
UG9vbC5oICovLAotCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNH
LmNwcCAqLywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNwcCAqLywK
IAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlC
Mjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJ
QjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkz
NzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkx
RkM0MEZCODE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8s
CiAJCQkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
aCAqLywKIAkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRy
aXhDRy5jcHAgKi8sCkBAIC0yNjQwNSw4ICsyNjQwNiw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFB
QTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAx
NDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFC
MzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1
MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZG
NjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0
MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8q
IFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNh
bFN0YXRlLmNwcCAqLywKQEAgLTI2NDE1LDYgKzI2NDE2LDcgQEAKIAkJCQkyRDUwMDJGQTFCNTZE
Nzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQw
MEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkg
LyogUGF0dGVybi5oICovLAorCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9y
bUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyog
UGxhdGZvcm1MYXllci5oICovLApAQCAtMzM0MzIsNyArMzM0MzQsNiBAQAogCQkJCUE4MTg3MjIz
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5h
dGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUy
OTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzM2NTcs
NiArMzM2NTgsNyBAQAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2
ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2
REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5
NTFENTRGNUZCMDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJC
YWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNG
ODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAxNWRhYjFmNDY0YTFlNzMyMWY0NjU4
M2JiOTZhOGRkMGFlYTFmMTI2Li5iZTliMTk1NDY0NTFkMjNkYTMzYjU5MmZlOGI0N2VmM2RiNmFj
MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMxNSw3
ICszMTUsNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUo
KSBjb25zdAogICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVt
ZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSFRN
TFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFw
bGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCmluZGV4IGVmZmYzZjY2ZTgxM2I3Nzg2OTgwY2FiY2EzNTEwYjEyMGRiNjA0
MDIuLjNkMTk0YjA3OTBiNzcwOTM1MGU0Zjg0NmFkOTVjOWI0YmE5Y2YzYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBVc2VkIGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAg
ICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2li
bGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2NjMx
NmZiMGNkNTNhNmYwNzk1MzI5MjBjZjA0MmMyZTYxMzA1NTAwLi4xODBiOWI5MWMwMDM0ODY1MjE3
M2MzNDc3MzZkMWQxZmFmMjkyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTYzNSw4
ICsxNjM1LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBjaGVja09yaWdpbigmdmlk
ZW8pOwogCiAjaWYgVVNFKENHKQotICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVv
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewotICAgICAgICBjLT5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0
KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHZpZGVvLm5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgeworICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwg
ZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVj
dCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDE3
YmE1MWZlMGU2Y2U3MWQ4YzljNThhMGIwNzM4MmY2NmNlZmJlMDguLjYxZjgyM2ZlYjMwM2ZlYWQz
OGUxMjU0ZGZiZTEwOWM2MGUzYWQwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
VGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBib29sIGlu
ZGljYXRvcldhbnRzTWFudWFsQW5pbWF0aW9uKGNvbnN0IFRleHRJbmRpY2F0b3ImIGluZGljYXRv
cikKIAogICAgIEZsb2F0U2l6ZSBjb250ZW50c0ltYWdlTG9naWNhbFNpemUgPSBfdGV4dEluZGlj
YXRvci0+Y29udGVudEltYWdlKCktPnNpemUoKTsKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNp
emUuc2NhbGUoMSAvIF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGNvbnRlbnRzSW1hZ2U7CiAgICAgaWYgKGluZGljYXRvcldhbnRzQ29udGVudENy
b3NzZmFkZSgqX3RleHRJbmRpY2F0b3IpKQogICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICBlbHNlCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDQUtleWZyYW1lQW5p
bWF0aW9uPiBjcmVhdGVCb3VuY2VBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXQKIHN0YXRp
YyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1h
dGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiwgVGV4dEluZGljYXRvciYgdGV4dEluZGljYXRv
cikKIHsKICAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gY3Jvc3NmYWRlQW5pbWF0aW9u
ID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJjb250ZW50cyJdOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5j
b250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdl
KCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFRvVmFsdWU6
KF9fYnJpZGdlIGlkKWNvbnRlbnRzSW1hZ2UuZ2V0KCldOwogICAgIFtjcm9zc2ZhZGVBbmltYXRp
b24gc2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107CiAgICAgW2Nyb3NzZmFkZUFuaW1h
dGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBiM2I1Y2Y4OTQ3NjYwNGM0M2Q5
ZjQ4NTc3NjJlNTUzMjc4M2ZkYTE3Li5hMTJhZjQ1OTA3OWYwNTNjODZjZTk4Mjk3YmQzNGNiZjlk
OWNhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKIHsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5h
dGl2ZUltYWdlUHRyJiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fc291cmNlKEltYWdl
U291cmNlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpKQogewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OnNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3Nhcnko
RGVjb2RpbmdTdGF0dXMgZGVjb2RpCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IGRlY29kaW5nU3RhdHVzOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJ
bWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZO
ZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBpZiAoIWZyYW1lSGFz
RnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpKSB7CiAg
ICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1YnNh
bXBsaW5nTGV2ZWwgd2FzICVkLCByZXNhbXBsaW5nXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291
cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihmcmFtZVN1
YnNhbXBsaW5nTGV2ZWxBdEluZGV4KGluZGV4KSkpOwpAQCAtMTQyLDE3ICsxNDIsMTcgQEAgTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChz
aXplX3QgaW5kZXgsIFN1YnNhbXAKICAgICByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdElu
ZGV4Q2FjaGVJZk5lZWRlZChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRh
cmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZy
YW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCB0YXJnZXRDb250ZXh0KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1
cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKG1fY3VycmVudEZyYW1lLCBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9v
bCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBhdXRvIGltYWdlID0gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7CiAKQEAgLTE3MSwxOCArMTcxLDE4IEBA
IE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9p
bnQoKSwgY29ycmVjdGVkU2l6ZUZsb2F0KTsKICAgICBGbG9hdFJlY3Qgc291cmNlUmVjdChGbG9h
dFBvaW50KCksIHNvdXJjZVNpemUpOwogCi0gICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBzb3VyY2VTaXplLCBkZXN0UmVjdCwgc291cmNlUmVjdCwgeyBvcmllbnRh
dGlvbiB9KTsKKyAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBz
b3VyY2VTaXplLCBkZXN0UmVjdCwgc291cmNlUmVjdCwgeyBvcmllbnRhdGlvbiB9KTsKICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAogI2lmIFVTRShDRykKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZU9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdl
dENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9m
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENv
bnRleHQpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
dGFyZ2V0Q29udGV4dCk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBuYXRpdmVJbWFnZVNpemUoaW1h
Z2UpID09IHNpemUpCisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNpemUp
CiAgICAgICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCkBAIC0xOTAsMTQgKzE5MCwxNCBA
QCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpYwogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7
CiB9CiAKLVZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gQml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUlt
YWdlcygpCitWZWN0b3I8UmVmPE5hdGl2ZUltYWdlPj4gQml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2
ZUltYWdlcygpCiB7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBpbWFnZXM7CisgICAgVmVj
dG9yPFJlZjxOYXRpdmVJbWFnZT4+IGltYWdlczsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNv
dW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaSkpCi0g
ICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGltYWdlKTsKKyAgICAgICAgICAgIGltYWdlcy5hcHBl
bmQobWFrZVJlZigqaW1hZ2UpKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1hZ2VzOwpAQCAtMjEx
LDEwICsyMTEsMTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50
U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmIChvcHRpb25z
Lm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZElt
YWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgbV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCA9IG1fYWxsb3dTdWJzYW1wbGluZyA/IHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2Fs
ZUZhY3Rvcihjb250ZXh0LCBzY2FsZUZhY3RvckZvckRyYXdpbmcpIDogU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdDsKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6
ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYs
ICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQo
KSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGltYWdlOwogICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKQEAgLTMyMiw5
ICszMjIsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVu
dGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNp
emUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6
ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggM2I2ODkwNjc4MzU2OWIwMWNhYmExMmZkNjAxYWQ1NjE5ODRiMTdiNS4uOWM1OWU3
YWVkYzAyZTZiYTg3NTY4YTI1ZmVhY2Q2MmNlOGE5YTZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC01Myw3ICs1MywxMSBAQCBjbGFz
cyBUaW1lcjsKIAogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYm
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgc3Rh
dGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpLCBvYnNlcnZlcikpOworICAgIH0KKyAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsK
ICAgICB9CkBAIC0xMzUsMjMgKzEzOSwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAjaWYgVVNFKENHKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZT
aXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgVmVjdG9y
PFJlZjxOYXRpdmVJbWFnZT4+IGZyYW1lc05hdGl2ZUltYWdlcygpOwogI2VuZGlmCiAKICAgICB2
b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CiAgICAgdm9pZCBkZWNvZGUo
RnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiwgSW1hZ2VP
YnNlcnZlciogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXgo
aW5kZXgpOyB9Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2UtPmZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJ
bWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsK
IAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95
QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVy
IGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMTk4LDcgKzIw
Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1h
Z2VQdHI+Jik7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNv
bnN0IFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGNsZWFy
VGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAyMjNkOWRjMTgzZDAzZTNmNGNjMzUxZjRkYTZmNmY4
OTNmMGFiNWVmLi44NTQwMjE1ZjYyMzdjYzBhM2Q2MjVlMzJmYTk2N2RmOWE2MmVjMmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFn
ZUJ1ZmZlci5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
bV9iYWNrZW5kID8gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKSA6IDA7CiAgICAgfQog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
ciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
YXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGNv
bnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0
KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAg
ICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMzBiODg0OTE5YjJj
NjA0NWY3OTk2YzE5YTE1YmFmNjM5YmM1MjY5ZS4uMDI1OGQ2NDFkNzY0Yjk5YWIxY2Q4Y2RmOTQy
OThkMGRkZjg3YjE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03
NDEsNyArNzQxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShpbWFnZS5w
bGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwog
fQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwYjM1YWM2NGZhOGI5ZmZlMGM5
NDQ4NWU5NzNmMjRjMmFhMGYzNDkwLi5jNWQwNTdjZGFkNGI2NWU4NDdlOWU2ZmZkMDlmNjdlZmQ1
N2Y2MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzc5LDcgKzM3OSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFn
ZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NTAsOCArNjUxLDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKLSAgICB2b2lkIHBsYXRmb3JtRHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwotCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5l
Qm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBw
cmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0
cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aAppbmRleCBiYjliMGM5ZmIxZTYzOWQ5OWY5ODM3ZmUwNmRmMGFjNzAyOTZjOTcyLi5mNGI1MmFj
NWEzN2U2YzZhZDk0ZGM2YTdiY2E2NzY1YmU2MDhkN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvci5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKENBSVJP
KQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VTdXJmYWNlOwogI2VsaWYgVVNF
KENHKQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7Ci0gICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9j
Z0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9kZWNvZGVkSW1hZ2U7CiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7CiAgICAgVW5pcXVlQXJyYXk8dWludDhfdD4g
bV9mb3JtYWxpemVkUkdCQThEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggNmUyMjJjMDJm
MmQ5YWUzNjQwNjFiNzNkOWMzN2I3N2IyOWIwM2I0Ni4uOWQ0NDBkMDUzYjA3ODBkOGQ0MjViNjZl
Yjk1MTBkNjFkYzhlY2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6
OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBiNTk2MGFkNWZmN2M0
ZGE1NmRmNGY1YTRhNzlhZGQ5ODg0MTM2ZDdkLi5iYjM5YzZjODhlMTQwYjQ3ZjQyMjAxMDczNmYx
ZTU2Yzc5ZTQzZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtSW1hZ2UuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxp
ZiBQTEFURk9STShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrIGZvciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1J
TFkpLWd1YXJkLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRl
SWNvbkZvckltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEljb24oY29u
c3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7CisgICAgSWNvbihjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRG
T1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCmluZGV4IDRiOWJlZWQ4NjU3ZWViOWZhYjRkNDVjY2FkZDEwOGFmYjBkMjNm
YWIuLjQzNmIzN2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5o
IgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
I2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMTUzLDEwICsx
NTMsMTAgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3Vu
ZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1
cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJh
bnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAg
ICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCBh
MTc1ZGRhNTRhNjM0ZTlmNzgzODU5OGQwZWRhYjBjODYyODI0OWFhLi45MThiY2IzYWViNDJlNDNm
NjM3NDIyZjNiOTZiZjFmODE3MTVhYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPihu
ZXcgSW1hZ2VCYWNraW5nU3RvcmUob3RoZXIpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBpbWFnZSgpIGNvbnN0OworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdDsKIAog
ICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCAzZDNmODAw
N2NiN2VlOTJjNmEwMGU4ZmUwODY1ZDA1ODExNGQzYmMzLi44ZjYyZGM2YTM0ODNjODQzZDA1YmVm
NjczNGRjNTRhMTNiNGIwZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IENvbG9yU3AKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZl
ci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggOTIwNGFkMTBhODEwNjgwNmRlOTI2ZjJlZWZm
YzE2MzRjNzcwMGU2ZS4uNTM4NDZjNTljYjVlYzQwMDdkNTQ0MGE0MTU2MTdmOGYxODc4MGY4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBA
IC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0
ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1
dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0
ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJl
Y3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KQEAgLTkxLDcgKzkxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAw
OwogCi0gICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRy
PEltYWdlQnVmZmVyPik7CisgICAgc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9O
YXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiwgUHJl
c2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObyk7CiAgICAgc3RhdGljIHZv
aWQgZHJhd0NvbnN1bWluZyhSZWZQdHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9h
dFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
QEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZl
SW1hZ2UoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0
aXZlSW1hZ2UoKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uo
UHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDE3M2E5YmYwOTQ5ZWMzZDJk
NjdlODAxN2JkNzBmMjUxZjY5ODNhMS4uZjFmMzY3YzA2YTJhMGM5ZDk5MTNjOWM5MjM2YzE5NzM2
ZWRlNTlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEludFNpemUgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlCiAgICAgcmV0dXJuIGJhY2tlbmRTaXplOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJl
dHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApp
bmRleCBjYjU4NzI1NjdmMDg4M2I1YmQwMmUwZWVjYjhjZWZkYmU3MTBhOGVjLi5lZDNmOGI1YmNm
NThlNDI3ODU2N2QxODZmYjY1Yzg0MDE2MjdjOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRp
bmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
UHRyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTc3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEoKS51bnNhZmVHZXQoKTsgfQog
ICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJl
ZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3QgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05h
dGl2ZUltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA3MTA0ZDA3MTk0ZjM4MTU5
YjMzYmVhNmFhZWQ4ODVkNzA5YmQ5ODE3Li5hYWE1MWJkZGNlMDRmZDg1ZTllYTYxZDM4MmNjM2Ix
MWVlNmUyMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURlY29kZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKICNp
bmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOYXRp
dmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmNwcAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJmZmQwODE1MjdiMmRkOTE2MTg0
Li5jYzNiNjM2MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJhNGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApAQCAtODIsNyArODIs
NyBAQCB1bnNpZ25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkKIAogICAgIHVuc2lnbmVkIGZy
YW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBjbGVhck5hdGl2ZUltYWdlU3Vi
aW1hZ2VzKG1fbmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1hZ2UtPmNsZWFyU3ViaW1hZ2Vz
KCk7CiAgICAgbV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgbV9kZWNvZGluZ09wdGlvbnMg
PSBEZWNvZGluZ09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIENvbG9yIEltYWdlRnJh
bWU6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAgaWYgKCFoYXNOYXRpdmVJbWFn
ZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsK
IAotICAgIHJldHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihtX25hdGl2ZUlt
YWdlKTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
aAppbmRleCA1NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQyZTM3YzAwMDcxLi5hYTczYWUz
NjM4OWVjMmZhYzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzTmF0aXZlSW1hZ2Uo
KSA/IChzaXplKCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSkudW5zYWZlR2V0KCkgOiAwOyB9
CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4g
bV9zdWJzYW1wbGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQogCiAgICAgdm9p
ZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50
YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2
YXRlOgogICAgIERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0dXMgeyBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
bV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbmF0aXZlSW1hZ2U7CiAg
ICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5k
ZXggZjhlMjAyOGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTViMTk0OS4uMTQ4MDIxY2VlZTQ1
NWFlYmIzMDVkZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBJbWFnZVNv
dXJjZTo6SW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoTmF0aXZl
SW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1bkxvb3AoUnVuTG9vcDo6Y3Vy
cmVudCgpKQogewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobmV3U2l6
ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWVzLnNpemUo
KSA9PSAxKTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzWzBdOwpAQCAtMjQ1LDgg
KzI0NSw4IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZl
SW1hZ2UpOwogCiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpD
b21wbGV0ZTsKLSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubV9uYXRp
dmVJbWFnZSk7Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2ZUltYWdlSGFzQWxwaGEoZnJh
bWUubV9uYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0gZnJhbWUubV9uYXRpdmVJbWFn
ZS0+c2l6ZSgpOworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5o
YXNBbHBoYSgpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdT
dGF0dXMgZGVjb2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW4KIAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0aW9ucy5oYXNTaXplRm9yRHJh
d2luZygpKSB7CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRpdmVJbWFnZSgpKTsKLSAgICAg
ICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm5hdGl2ZUltYWdlKCkpOwor
ICAgICAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFnZSgpLT5zaXplKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIElt
YWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0aW9uID0gbV9kZWNvZGVyLT5m
cmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2
b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQ
dHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29k
aW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1tpbmRleF07CkBAIC0y
OTMsNyArMjkzLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgo
TmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gTW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNoZS4KLSAgICBmcmFtZS5tX25h
dGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9uYXRpdmVJbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiAgICAgZnJh
bWUubV9kZWNvZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7CiAgICAgY2FjaGVNZXRhZGF0
YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nU3RhdHVzKTsKIApAQCAt
MzAxLDcgKzMwMSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4
KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgZGVjb2RlZFNpemVJ
bmNyZWFzZWQoZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3Rh
dHVzKQordm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFBs
YXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09w
dGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIGlmICghaXNEZWNv
ZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lk
IEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7
CiAKICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZQot
ICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2UpLCBpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CisgICAg
Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNvZGluZ1N0YXR1cyk7CiAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhh
cyBiZWVuIGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgaW1hZ2Ugd2l0aCB0
aGUgcmVhZGluZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1hZ2UuCkBAIC0zNjIsOCArMzYy
LDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAg
ICAgICAgICAgIHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICAvLyBHZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRoZSBkZWNvZGluZyB0aHJlYWQu
Ci0gICAgICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IHByb3RlY3RlZERlY29k
ZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1
ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMpOwotICAg
ICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdl
ID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0
LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nT3B0aW9ucyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1JbWFnZSkKICAgICAgICAgICAg
ICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAl
bGQgaGFzIGJlZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCks
IHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAt
ICVwIC0gdXJsOiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBoYXMgZmFpbGVkXSIsIF9fRlVO
Q1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZy
YW1lUmVxdWVzdC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIEltYWdlU291cmNl
OjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAgc2xlZXAobWluRGVj
b2RpbmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0aW5nVGltZSkpOwog
CiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFtZXMgb24gdGhlIGNyZWF0aW9u
IHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVu
dCB0aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBw
cm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3Vy
Y2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSks
IGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVy
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIHBsYXRmb3JtSW1hZ2UgPSBX
VEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBn
b3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNh
bGxlZC4KICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5wdHIoKSA9
PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJvdGVjdGVkRGVjb2Rlci5wdHIo
KSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5maXJzdCgpID09IGZyYW1lUmVx
dWVzdCk7CiAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRR
dWV1ZS5yZW1vdmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5j
YWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFtZVJl
cXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3Qu
ZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdTdGF0dXMpOworICAgICAgICAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMo
V1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Qu
c3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1
ZXN0LmRlY29kaW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJh
bWUgJWxkIHdpbGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRy
KCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3QuaW5kZXgpOwogICAgICAg
ICAgICAgfSk7CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW0KICAg
ICAgICAgaWYgKGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uoc3Vic2FtcGxpbmdMZXZlbCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBwZXJmb3JtIHN5bmNo
cm9ub3VzIGltYWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAgICAgICAgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBt
X2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
VmFsdWUpOwogICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBhbmQgc2V0IGEg
bmV3IG9uZS4KLSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJ
bWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5k
ZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwg
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRU
YXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIH0KICNl
bmRpZgogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1
cm4gaXNEZWNvZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CisgICAgaWYgKCFpc0RlY29k
ZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNv
dXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0
aXZlSW1hZ2UpKTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXg8UmVmUHRyPE5hdGl2
ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICByZXR1
cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5hdGl2ZUltYWdlUHRyPihpbmRl
eCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hp
bmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgs
ICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5n
OjpNZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAogdm9pZCBJbWFnZVNv
dXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZlNTJjZTU1ODllZGQ5OWI0MmM3
YWQ2M2NlZGYwMWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2IyZTI2MmE1ZmNiNjAzMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
U291cmNlKGltYWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQ
dHImJiBuYXRpdmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoUmVm
UHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CkBA
IC0xMjUsMTMgKzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIHZvaWQg
c2V0VGFyZ2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICNlbmRpZgotICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0
SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3Qp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVk
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwog
CiBwcml2YXRlOgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBB
bHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2UoTmF0
aXZlSW1hZ2VQdHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkg
Y29uc3Q+CiAgICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+
KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVjb2RlZFNpemUpOwogICAgIHZv
aWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRhU3RhdHVzKTsKIAotICAgIHZv
aWQgc2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgdm9pZCBzZXROYXRpdmVJ
bWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgY2FjaGVNZXRhZGF0YUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3Rh
dHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUlt
YWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwor
ICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYsIHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdT
dGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBjYWNoZVBsYXRmb3Jt
SW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKIAogICAgIHN0
cnVjdCBJbWFnZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNpemUg
PSA4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2YyNzBhZDVjYTEwY2YuLjU5NTY3
ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTk4NSw3ICs5ODUsNyBA
QCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1NmYwYWNlNzYwOGY4YTguLmEw
NTc4YWUwM2U3MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlw
WSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAg
ICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRl
IG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1NTU1OGE2ZjczYzZlNzU0Mzc5
YTM0MzExNDAzOGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJkOTRhZTRkYjhmMGRhMDEwZGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0
IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0
Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRp
YVBsYXllcjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjEzZGNhYjM1YWM4YzVhOTgxZGRk
OWEzMjA4ODg4NGZkNGFhMjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE5hdGl2
ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCit7CisgICAg
aWYgKCFwbGF0Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSk7Cit9CisK
K05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFn
ZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCAwMzM0NzU5NjA3ZjhmMjBkZTMxMjQ4NTlhNmYwZjA5
NDUxZTE4ZTViLi4zN2ViNjUyNTg0ODBjNjA5NDgzZGVkNTI3YmEzM2Y5MDRjNWI1MzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3
LDE2ICsyNywzMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRy
LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1JbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3I7Ci1jbGFzcyBJbnRTaXplOworY2xhc3MgTmF0aXZl
SW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4geworcHVibGljOgorICAgIHN0
YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUlt
YWdlUHRyJiYpOwogCi1XRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOwotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOwotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CisgICAgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgp
IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
IHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0KIAotfQor
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtSW1hZ2VTaXplKG1fcGxh
dGZvcm1JbWFnZSk7IH0KKyAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gcGxhdGZv
cm1JbWFnZUhhc0FscGhhKG1fcGxhdGZvcm1JbWFnZSk7IH0KKyAgICBDb2xvciBzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKG1fcGxhdGZvcm1JbWFnZSk7IH0KKworICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKSB7
IGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhtX3BsYXRmb3JtSW1hZ2UpOyB9CisKK3ByaXZh
dGU6CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmKTsKKworICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgbV9wbGF0Zm9ybUltYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQ
dHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3
NTE0MDcxZDA3Yzk1ODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsK
LSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2VsaWYgVVNFKFdJ
TkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSNpZiBVU0UoQ0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRp
dmVJbWFnZVB0cjsKLSNlbGlmIFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRl
ZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGU0Nzg1ZTMyZjY5NzE2MzE1ZjBiNDIyODFmNTQ4Nzk3Zjc2ZWI3YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0Uo
Q0FJUk8pCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5j
bHVkZSAiU2hhcmVkQml0bWFwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDb2xvcjsKK2NsYXNzIEludFNpemU7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2VsaWYgVVNFKERJUkVDVDJEKQor
dXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJpdG1hcD47CisjZWxpZiBVU0Uo
Q0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD47
CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxTaGFy
ZWRCaXRtYXA+OworI2VuZGlmCisKK1dFQkNPUkVfRVhQT1JUIEludFNpemUgcGxhdGZvcm1JbWFn
ZVNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxw
aGEoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOworQ29sb3IgcGxhdGZvcm1JbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7Cit2b2lkIGNsZWFyUGxhdGZv
cm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmlu
ZGV4IDFiMDdmODZmMzkzMTc4ZjRjZjdmZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFl
ZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEw
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2
aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRy
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZv
cm1JbWFnZVB0cikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZy
YW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVu
SW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNv
bnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApp
bmRleCA4YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJi
ZTFlNzgxNjY0YTI0MTk0OTNlOTViYTUzNzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2
b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRl
NDQ1MzQ5MTZmOTBhYmQwNzUzYTExNTU2YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTlj
ZDMzOWRkMGQzNDg0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCkBAIC01NjcsNyArNTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMK
ICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQor
UGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2
YTUzYWU5YzFlYTYuLjI2YjNkNzhmZTFiMGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWls
YWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKCk7CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxB
VlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2Vi
Q29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFn
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJv
dGF0aW9uU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+
IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
aW5kZXggZjI5NDg4MTZlZGRlNzllNzhhMTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uM2FiYmE5MmU1
MDlhMjE0MDQ5ZDUwNDE2ZDY1MjQwMWM0NjE4Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CkBAIC0xMTI3LDcgKzExMjcsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Uo
KQogewogICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5
KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9G
dWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigp
CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYg
KHZpZGVvRnVsbHNjcmVlbkxheWVyKQogICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlw
ZTo6VXBkYXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBu
dWxscHRyKTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0y
MjkzLDcgKzIyOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0
YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVm
ZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhl
bEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpKTsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBi
dWZmZXIgdG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsK
IH0KQEAgLTIzMTQsOCArMjMxNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwg
Q0dJbWFnZUdldFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xh
c3RJbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdl
LmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZs
b2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIG1fbGFzdEltYWdlLT5zaXplKCkpOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCptX2xhc3RJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0
cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8vIElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFz
c2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3QgZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhh
dmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRlbyBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhh
dCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFn
ZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0
LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9y
bWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKICAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2MzIxNjE0ZGUxYjBhMzgwN2Y5YWIuLmEwYWY5Yjg3NGNh
ZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5NGI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
CkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0zMDEsNyArMzAx
LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGVyZm9ybVRhc2tPYnNlcnZlcjsK
ICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFz
dEltYWdlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3Jn
YkNvbmZvcm1lcjsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uOwogICAgIERlcXVlPFJldGFpblB0cjxpZD4+IG1fc2l6ZUNoYW5n
ZU9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1
NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFiYjBlLi44YmM0OGZhM2UzMjQ1MjU2NzVkOWU4Yzg4ZGY5
ZjNhYzE3NDQwODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC01NjQsMTAgKzU2
NCwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7
CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOwor
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCkBAIC02MDcsNyArNjA3LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSgpCiAgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0K
IAotICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYy
Niw4ICs2MjYsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAg
RmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAg
RmxvYXRSZWN0IGltYWdlUmVjdCh7IDAsIDAgfSwgaW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBp
bWFnZVJlY3QpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91
dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0g
ICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxs
c2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSk7Cisg
ICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxs
c2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2xhc3RJbWFnZSA/IG1f
bGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggMDg4ZjFkOTJjOTdm
MzkyNWJmOWE5YmMwYjIzNzlkMzUwYmRiYmNhOS4uODc4MDk2YWRiZDZlMjVkNDMxODZiZWViMGJh
ZGY0NjhmODZjZTRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIzMiw3ICsyMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICBDdXJyZW50RnJhbWVQYWludGVyKCkgPSBkZWZhdWx0Owog
ICAgICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNn
SW1hZ2U7CisgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2dJbWFnZTsKICAgICAgICAgUmVm
UHRyPE1lZGlhU2FtcGxlPiBtZWRpYVNhbXBsZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBpeGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggOTg5ZmI4OWRhMmFiMzhkMWYxYzE3ZDVhZmQxY2E4
MjI2MDIyN2NiNC4uOWE1MzZkYjkyYjJlMDQyZDg3ODE0YTllZWFhYTkzZWVjODM4OThiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNzYyLDcgKzc2Miw3IEBAIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0
ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5
ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5h
Z2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPyBtX2ltYWdlUGFp
bnRlci5jZ0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
KEZsb2F0UmVjdCBmcmFtZSkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1
ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRp
YVNhbXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBt
X2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3Jt
ZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhl
bEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIp
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCkKQEAgLTk3NSwxNCArOTc1LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpbWFnZSA9IG1faW1h
Z2VQYWludGVyLmNnSW1hZ2UuZ2V0KCk7Ci0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7CisgICAgYXV0
byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlOworICAgIEZsb2F0UmVjdCBpbWFnZVJl
Y3QoeyAwLCAwIH0sIGltYWdlLT5zaXplKCkpOwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkK
ICAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFu
c2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0
UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KGRlc3RSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9y
bSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCks
IHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFn
ZVJlY3QpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5
MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjliMTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMy
ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgp
IGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3Jt
SW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVp
cmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3
ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVl
YWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1h
bmFnZXJPYmpDLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXll
ck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJP
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3Jl
ZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2
ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQ
dHIgY3VycmVudEltYWdlKQogewogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZp
ZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNr
Qm91bmRzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXll
ck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUlt
YWdlUHRyIGltYWdlKQogewogICAgIGlmIChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFtt
X3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCmluZGV4IDUyZDliMWU4N2M4MDM0ZDZmNzg5NjA2YzM3NzYyNTJiZmM1ZDRj
NTMuLmNiZGY4MjFkODY1MWQ1MjZlNWJkMDhmYTMyM2QwOWRkMTliNjc0MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcApAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzSW1hZ2UoKQogICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIg
aWYgdGhlIGltYWdlIGlzIGJlaW5nIHNjYWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3
aGF0IGlmIHRoZSBsYXllciBzaXplIGNoYW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAg
ICAgbV9jb250ZW50c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdl
dCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250
ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250
ZW50c0ltYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaAppbmRleCA4ODVmNzk5ZjZmMTFkNGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYz
YzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMzNDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYs
NiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsK
IGNsYXNzIEltYWdlOworY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsK
IAogY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpAQCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAg
ICBDb2xvciBtX2NvbnRlbnRzU29saWRDb2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
bV9wZW5kaW5nQ29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29u
dGVudHNJbWFnZTsKICAgICAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9h
bmltYXRpb25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1
ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA5YTU3ZWJlMmQ1
NWEwNzljMzdmMWNhYjk2YTdmYjczZjViZjQzOWJhLi4zODdlOGNiOTI1ZDBlY2EyNmRhM2M0Mjc1
NzgxN2IwMjliNWUwNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKQEAgLTE3NCwxNiArMTc1LDE2IEBAIGVudW0g
UGF0aERyYXdpbmdTdHlsZSB7CiAKIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJ
bWFnZSwgY29uc3QgRmxvYXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5
ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdl
dCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxD
b21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUo
KSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgKm5hdGl2ZUltYWdlLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVy
T3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwg
eyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9i
YWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBt
b3N0bHkgc2FtZSBhcyBkcmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0
d28uCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsICpuYXRpdmVJbWFnZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUu
Z2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtMTkxLDggKzE5Miw4
IEBAIHN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiB7CiAgICAgc2F2ZShwbGF0Zm9ybUNvbnRleHQp
OwogCi0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3QobGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50
U2l6ZShsYXllclNpemUpKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdl
LmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIGNsaXBUb0lt
YWdlQnVmZmVyKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSwgRmxvYXRSZWN0KGxheWVyT3JpZ2luLCBleHBhbmRlZEludFNpemUobGF5ZXJTaXplKSkp
OwogCiAgICAgRmlsbFNvdXJjZSBmaWxsU291cmNlOwogICAgIGZpbGxTb3VyY2UuZ2xvYmFsQWxw
aGEgPSBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYTsKQEAgLTg2MCw3ICs4NjEsMTMgQEAgdm9pZCBk
cmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZp
bGxTb3VyY2UmIGZpbGxTb3UKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9h
dCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgTmF0aXZl
SW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9h
dCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQoreworICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkpCisgICAgICAgIGRy
YXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7Cit9CisKK3ZvaWQg
ZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewog
ICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBh
ZjQ3ZDdhMGE1MGU5YzE5MDY2ZGQ5M2RlNTk2MWQ2NjkxYS4uYzg4ODEyMTQ5NWEyZTJkOTJmMGMz
NGNlY2Y2NjYwYTQ2ZjlhZjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsOCBA
QCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291
cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9h
dFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJv
X2dseXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05h
dGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiwgTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2
b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmLCBP
cmllbnRhdGlvblNpemluZyBvcGVyYXRpb25TaXppbmcgPSBPcmllbnRhdGlvblNpemluZzo6Tm9y
bWFsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDlkNDA4ZjZlNWU3OGYw
YzcwNzY4MjBkMDZhNTViYTVjNTU4MjQ4YzMuLmZmZGI0YTdhNzUxOTk4MjNlN2M3NGE5YzEyMTdi
MmE5YjUzNTlmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMywxNCAr
MTIzLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRm
b3JtQ29udGV4dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3Rh
dGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3Jt
Q29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVy
cywgc28gd2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjY2LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIs
IGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpw
bGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRv
IG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSkpCisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCks
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50
UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4MSw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRm
b3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNv
bnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0
byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAg
ICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBi
NmIzYjJlOTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdm
ODExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1h
Z2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNl
LT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBz
b3VyY2UtPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4g
Rm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVt
dWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZG
IGZvciBlYWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5k
IG1heSBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3Jk
aW5nbHkuCiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1l
bnQgaW5wdXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMg
cG9ydCwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBmYTA5Yjgx
M2VhNDM1MTY2MGFlYzU2MTMxMTNiMzNlYTg5NjYzMDI1Li42MGMxODcyMTMyZDhhODVlY2JhNTAz
Yzk4MzRlYzM3OGQ1MDUxNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAKQEAgLTI4NywxNyArMjg3LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlCiAgICAgfQog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRl
LmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0
dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJ
bnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBA
IC00MjMsNyArNDI5LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBC
b3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdl
QnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmlu
ZGV4IDhhOTM3ZGEyMzlkNmQ2Y2RkMGEwNDhjY2NkODM2NzkxMDVkOTdjYWMuLjMxYTBmNTQwMGVl
ODRlMDhiMGM1ZGQ0ZjhlNTJmMTk3MzUzNWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi42NmUw
YjhmNGViNTcyMGViYjYzNzBhMGM1NDliM2QyYjZhMjQ4YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGluYXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4
dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlv
bkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0
aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksICppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywg
ZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0
aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRl
c3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
QEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBp
ZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQo
KSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdl
dCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2lj
YWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlv
bnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNw
YWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRm
MWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZkZmM0YzhlZjdiODUuLjhlNjM2ZDY1MmYyODdmMzg4
OWVmOTgxNTBiNzM2OGI2NWRhMTNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlv
cikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5h
dGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOwogICAgICAgICBjYWlyb19wYWludChjci5n
ZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwogICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNr
aW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBtX3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1ha2VSZWZQdHIobV9zdXJmYWNlKSk7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9J
bWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CiB7CiAgICAgQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUo
bV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UgJiYgY2Fpcm9fc3Vy
ZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX0NPTlRFTlRfQ09MT1Jf
QUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIAogVmVj
dG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSgp
IGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgp
OworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7Cisg
ICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UuZ2V0KCkpOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3OTU4MjVkYzY3NjZkNmQx
NmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYwY2JmNWViMjQxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVm
UHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkg
Y29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdl
KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjMGY4MWNiMzQxOTBj
YjM3M2JkODQzNDE1OGI0ZDAzMzAxYWIwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNs
dWRlICJDYWlyb09wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShp
bWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuICFpbWFnZSB8fCBjYWly
b19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9S
OwotfQotCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUo
aW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAg
aWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICB1bnNpZ25lZCogcGl4
ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVkKGFzU1JH
QkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQotewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3Vi
aW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggY2U1Mjc4MDYw
YTBkZjVjMTBmZDEyOGY5NmRmODkzYWY4NmEwMmNmMS4uNzQxYzk2ZjI0N2JiMmYyY2I5NjZhZWVi
ZDhlNjhkYzNlODZhM2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxMCArMzUsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGls
ZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
KyAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKwogICAg
IGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJm
YWNlKHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBh
bmQgdXNlciBzcGFjZSBpdHNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4MzFjNDAwZWNmMTg4OGEyZDMyNzU4MDcwYWY0NGQwNmM1YzE4MDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdl
Q2Fpcm8uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCisKKyNpZiBVU0UoQ0FJUk8pCisKKyNpbmNsdWRlICJDYWlyb09wZXJhdGlvbnMuaCIK
KyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENh
aXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRT
aXplIHBsYXRmb3JtSW1hZ2VTaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQorewor
ICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6
ZSgpOworfQorCitib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gIWltYWdlIHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2Nv
bnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Cit9CisKK0NvbG9yIHBs
YXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
aW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IElu
dFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgaWYgKGNhaXJvX3N1
cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkK
KyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1h
Z2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29s
b3I6OkFSR0IgeyAqcGl4ZWwgfSkpOworfQorCit2b2lkIGNsZWFyUGxhdGZvcm1JbWFnZVN1Ymlt
YWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE3ZGJl
NmU2YmU1ZjU2MjUyYzNjNzBiMTI4ODBlM2I2NDRiYTRjOTkuLmZlOWFkMzc2NzMzMDc4NjU4NDBh
M2ZjMDAzZDVhMDE2ZjA4NmZhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI3Nyw3ICsyNzcs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1f
ZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
UmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ0NCwyMyAr
NDQ0LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9
IGltYWdlLnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5v
cmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBD
R0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
ID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmICh0aWxlUmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQot
ICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZTsKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1
Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rp
bmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAg
IC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdo
aWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAg
ICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRD
RihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3Qp
KTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJl
Y3QodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQog
CiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3
ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAg
IC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hh
bmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9
IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdl
R2V0V2lkdGgodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09
IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFz
cGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6
IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBj
YXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3
ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdl
IHRvIGZpdC4KQEAgLTUwOSw3ICs1MDksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAg
IH0KIAogICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJl
Y3Quc2l6ZSgpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBhdXRv
IGltYWdlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVs
bHB0cjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQg
YXMgYW4gYWxwaGEgbWFzayBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVj
OTEyMjRkNDE5N2VjYTgxYmJkYmM0ZTA1NjdlNDNjMDRkLi42NjFhMDNjYzRhMGRhM2VkM2E5N2Nj
OThmM2VjNTM2NTFlM2EyOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMz
OCw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aCht
X2NnSW1hZ2UuZ2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1f
Y2dJbWFnZS5nZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0lt
YWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRo
KGltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ3LDcgKzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBpCiAgICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4g
VGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5v
dCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFn
ZS5nZXQoKSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29s
b3JTcGFjZShpbWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0Nv
bG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JT
cGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRt
YXBDb250ZXh0OwpAQCAtMzYyLDIyICszNjMsMjYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkK
IAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NH
QmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5
KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9p
bWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9p
bWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5v
dyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29w
eSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAg
ICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2Rl
ZEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShi
aXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdl
OwogICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQ
ZXJDb21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0g
Q0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0lt
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBD
R0ltYWdlR2V0Qml0c1BlclBpeGVsKGltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBv
bmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwg
LyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdl
R2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZv
ID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFu
U291cmNlID0gZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmlu
ZWQgaW50byBvbmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVy
IG5vdCB0byBzbyB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhp
bmc7CiAgICAgQWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAg
c3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0
Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEp
CiAgICAgICAgICAgICBtX2FscGhhT3AgPSBBbHBoYU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMs
MTQgKzQ2OCwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291
cmNlRm9ybWF0ID09IERhdGFGb3JtYXQ6Ok51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENH
SW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRh
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIo
aW1hZ2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVk
IHNyY1VucGFja0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFn
ZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93
ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRk
aW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAg
IGlmIChwYWRkaW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAx
OwpAQCAtNTI5LDggKzUzNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50
VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAgICAgIGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFn
ZVBpeGVscywgZGF0YVNpemUsIDApKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93Qnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qs
Ci0gICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENG
KENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAorICAgICAgICBkYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAgICAg
Ly8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJlc2l6
ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBv
dXQgdGhlIGNvcnJlY3QKQEAgLTU0Myw3ICs1NDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBj
bwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFu
c2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1Jl
Y3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0
b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVNp
emUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29t
cG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1YjIwZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBm
MWZhNWMxN2IzLi44YzVhYmY3YzkzZTc5NzEzZjcxM2E2ZGJkZTliYzAxN2YyMWY4OWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03NCwxNyArNzQsMTcgQEAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGlt
YWdlLCBjb24KICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+
JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRl
clNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAg
IGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZO
ZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRp
dmVJbWFnZTo6Y3JlYXRlKGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCksIGJhY2tlbmRTaXplKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXpl
LndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgo
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7
CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1v
ZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNp
emUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
KTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpKTsKICAgICB9CiAKICAgICBpZiAoIWlt
YWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPgogCiBSZWZQdHI8
SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0
CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBp
bWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRp
b24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25T
Y2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRl
eHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9y
ZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9i
YWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOworICAgICAgICBk
ZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
QEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAgIGF1dG8gdXRp
ID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUobWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkp
OwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcm90ZWN0ZWRQaXhlbEFy
cmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBqcGVnVVRJKCkpKSB7CkBAIC0xNTgs
MTAgKzE1OCwxMCBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogCiAgICAgICAgIGltYWdlID0g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVs
QXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAzMiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25z
LndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQg
fCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRp
b25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246
OlllcykgewotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3Jl
KTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vz
c2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1h
Z2UoKTsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0
ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgp
LCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5jcHAKaW5kZXggZmZlZjY2MzMwZDFmYmUyNmM0YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uNmMw
MzNjNjM4MzhhZmUxYTBmNjI3ZDZiNDRhMTU0NmYzZmVlZTczMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTA3LDE3ICsxMDcsMTcgQEAgR3JhcGhpY3NDb250ZXh0
JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
ICptX2NvbnRleHQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAg
IHJldHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSkpOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBh
ZG9wdENGKENHSW1hZ2VDcmVhdGUoCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRl
KGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgo
KSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAg
ICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xvclNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8s
IG1fZGF0YVByb3ZpZGVyLmdldCgpLAotICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5n
SW50ZW50RGVmYXVsdCkpOworICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50
RGVmYXVsdCkpKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5YmQ3ZjFiYWI0N2ZmN2M3OTc0MzQ4MzNjMjdh
NTQ5NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2RkZjA2M2M0YTg2NDhmZGZmYWNlN2NmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZGJjM2I3ZWI4
YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAzMC4uYTlkNTQ4NWEyNjFiNWEwZGY1M2QyYjg5
NzEwYWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZvcm1hdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yRm9ybWF0
OjpCR1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5KSBjb25zdAogewotICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7
CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5r
SW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKLSAgICByZXR1cm4gSU9TdXJmYWNl
OjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSk7CisgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSkp
OwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYWRq
dXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChhdXRvIGlt
YWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
IH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0
b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMyMzA5NGVhNzk1YzVkMjQ4M2M4ODQ0MDMxMjRh
OTA0MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIwMWZmYzBmYjU3N2NmYjgyYmZlYzY5MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBl
eHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRy
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4OTBhMDcxODEwOTIzZjc1YmEwZTIyOTNjNDZi
ZWE4NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcyOTdlOWIxMDI5NDM3MGExZTI3NTA2ZmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQ0c6
OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0K
ICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
Q0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9u
cykKIHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVyICVwIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1MTEzNTk1MWNkMWI1MzhiZGRmMWVjZTU0NTA2
ZGRmNmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFmOGU5YTE5MDU3MzEzZDU1MTY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1w
bGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJk
OWNiNjQ2YTViYWRlYmRhZGMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJOYXRpdmVJbWFnZS5oIgotCi0jaWYgVVNFKENHKQotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCi0j
aW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCi17Ci0gICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7Ci19Ci0K
LWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17
Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5n
ZXQoKSk7Ci0gICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFz
dCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsKLX0KLQotQ29sb3IgbmF0aXZlSW1h
Z2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewot
ICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEp
KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07
IC8vIFJHQkEKLSAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJC
aWcpKTsKLQotICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7
Ci0KLSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxl
bmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLQotICAgIGlmICghcGl4ZWxb
M10pCi0gICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKLQotICAgIHJldHVy
biBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10s
IHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzNdKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2Up
Ci0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkp
OwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2Mjcz
YzNiNTdhYjlmM2RiY2M1YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3
ODdkMzc3MGFjYWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3Bh
Y2VUcmFuCiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAg
IHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAg
ICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1h
Z2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1h
Z2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5n
IGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAg
ICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBp
eGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0
dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5n
ZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7
CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcp
OwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5
U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxz
bwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0
LDEwIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVw
ZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRl
cm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBp
biBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0g
dGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJh
Y2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVh
c2VDYWxsYmFjayB9OwotICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGlu
Z0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBD
R1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwg
eVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2Fs
bGJhY2tzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU5MDFjMGI0NWJkM2U4
ODMwYjU0ZTRjOWI5MDQwMzIzY2NmZjM4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cp
CisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlN1
YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFNpemUgcGxhdGZvcm1JbWFnZVNp
emUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgcmV0dXJuIGltYWdlID8g
SW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlLmdldCgpKSkgOiBJbnRTaXplKCk7Cit9CisKK2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhh
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIENHSW1hZ2VBbHBoYUluZm8g
aW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAgIHJldHVybiAoaW5m
byA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYmIChpbmZvIDw9IGtDR0ltYWdl
QWxwaGFGaXJzdCk7Cit9CisKK0NvbG9yIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBw
bGF0Zm9ybUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0dXJu
IENvbG9yKCk7CisKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgYXV0
byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEs
IDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBpZiAo
IWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgQ0dDb250ZXh0
U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOworICAg
IENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IDEsIDEpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1
cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CisKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVu
dEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAv
IHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisKK3Zv
aWQgY2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlKQoreworI2lmIENBQ0hFX1NVQklNQUdFUworICAgIGlmIChpbWFnZSkKKyAgICAgICAgU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisjZW5kaWYKK30K
KworfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDAyYWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdk
OWRhMzQyZGQ3MDQuLjM4ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAg
LTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1h
Z2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpz
b3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUlt
YWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgp
XTsKKyAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29w
eU5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxD
SUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0
cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgmIGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxD
SUltYWdlPj4mIGlucHV0SW1hZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IDFjOWI3YTE0MWQ0MmJlNmNiNWNhOTc2ODg4MWE3MTVhZjgxYWQ1MjEuLmM3ZWRkNzU4
ZDk4ZmUxOTI3YWM1MjM2NTRlMWRmNDY5MzhhMGYyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAg
IHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwg
bV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA4MmIwY2UxOTdjMTJjZTg0ZDMx
NzQxYTY5Y2RlMWE0MjJhMWQzZDU3Li4yZjc2ZWNhZjZmODM3N2ViNGJkY2E2MzE3OTJiZTczMDA3
OWY0ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEzNDYsNyArMTM0
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0g
ZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBSZWY8
TmF0aXZlSW1hZ2U+IG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZs
b2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAt
MTM4MCw3ICsxMzgwLDcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdOYXRp
dmVJbWFnZT4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBPcHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgT3B0aW9uYWw8UmVmPE5hdGl2
ZUltYWdlPj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGYxNDI5ZDgzYTkzNWViZDUxYTY4OTU3NWUwNTg4N2ViMGI1MTM3
OGQuLmJmM2NiMzQwMTQxZDNlZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lk
IFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucyk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZjk1MWNmYWEyY2FjYzk2ZDRjMWExOGEyNWZh
NTg5NjA3OTIyNDZkNC4uMzM1MzU5OTMyMjAwZGM0ZDNiNTcyYTFkYjFkOTM2NTlmYTcyNDFmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1h
Z2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCBkYzk5NGI3MzFm
YTg5NTRlZjg4MDNhZGMyOGY0ZjI3MWVmZjU4OWI3Li5jMGFhZTNhN2Q0OWVmMmI3ZDU3YTkxNjUx
NGU2MGY5ODk2ZDdkNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0
aW9uU2l6ZSkpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAg
ICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9p
bWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9pbWFn
ZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfQogICAgIHZvaWQgZHJvcElt
YWdlKCkgeyBtX2ltYWdlID0gbnVsbHB0cjsgfQogCkBAIC0xNzksNyArMTc5LDcgQEAgdW5zaWdu
ZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9z
YW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aAppbmRleCA2ZTJlYTA3OTdiZDNjZmQzZTlkNDUwMDg0OTY4ZThkMzMzOTU5YTdkLi41ODY5ZDhj
ODZhNDE5NGQzZTM4OGVjOTIwZTUyNTdlNzgyNjkxYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1l
QWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVy
biBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9CiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzRjZTEyZGI3MGZiMDlkOGJiOWIyMmUx
MTBkMmI3M2Y1ZTY3OTIxOC4uZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTMyMTUsNyArMzIxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250CiAgICAgcmV0dXJu
IG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
KmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxl
dmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9y
aWVudGF0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4ODY2N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFk
YWViLi4wYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkwOGFkMTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yMTYsNyArMjE2LDcg
QEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3Jt
R0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVt
LCBib29sLCBib29sKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRl
RW5hYmxlZFZpZGVvVHJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGNkNTBhMWU4NmMyMzEyNmZkYjg5MTRkYTNhMzk3
MDFmZGRkNmE2NjEuLjczODBlYmY0NzY2MDFjZDBkOGRmYzM2YmY0ODhhMTgwMjQ3YzA4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNw
cApAQCAtNTYsNyArNTYsMTAgQEAgUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoY29uc3QgY2hhciogbmFtZSkKIAogR2RrUGl4YnVmKiBCaXRtYXBJbWFnZTo6Z2V0R2RrUGl4
YnVmKCkKIHsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJuIHN1cmZhY2UgPyBjYWlyb1N1
cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlLmdldCgpKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggODEzNmMxZmZmNDVi
OWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYzI0Nzk1ZjUwOWEzMzZlZjBkN2IxNzFkMjY2
NDQ2Y2FhZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAotSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJY29uOjpJY29u
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQog
ewogfQpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJl
dGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNv
bkZvckltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogewogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEljb246
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogCiAgICAgY29u
dGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpI
aWdoKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2NnSW1hZ2UuZ2V0KCksIHNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1fY2dJ
bWFnZSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggNjkwOGYxMDc2MzJl
ODkwMThjYTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4uY2FkOWJiMjc1M2UzNGVlMTk1YmFlNWI1NTg2
NzUzYzEyNjgwZjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQpAQCAtNzQsNyArNzQsNyBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBJbWFnZTo6bnVs
bEltYWdlKCk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVw
cmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYgbmF0aXZlSW1hZ2VzKQor
UmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25z
dCBWZWN0b3I8UmVmPE5hdGl2ZUltYWdlPj4mIG5hdGl2ZUltYWdlcykKIHsKICAgICAvLyBJZiBu
YXRpdmVJbWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFn
ZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQogICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBjYWxsIHRv
IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdpbGwgZmFpbCBhbmQgd2UnbGwgaGFu
ZGxlIGl0IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4OSw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+
IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdl
UHRyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBuYXRp
dmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1h
Z2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLmdldCgpLCAwKTsKKyAgICAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxp
emUoZGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBkYXRhOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIFJldGFpblB0cjxOU0ltYWdlPiBCaXRtYXBJbWFnZTo6c25hcHNob3ROU0ltYWdlKCkKICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8g
ZGF0YSA9IHRpZmZSZXByZXNlbnRhdGlvbih7IG5hdGl2ZUltYWdlIH0pOworICAgIGF1dG8gZGF0
YSA9IHRpZmZSZXByZXNlbnRhdGlvbih7IG1ha2VSZWYoKm5hdGl2ZUltYWdlKSB9KTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlLmNwcAppbmRleCBiMDA3OTlmZTdkMjIxNGM1NTBhODNhMzdhZjE4ODdhMjUw
OWYyZTY0Li45ZjExMjRmZWE3MDc2NmU2ZTFjNjRiZGI1YzdjNjNiMGFlOWE0NTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTEwOSwxMSArMTA5LDE0IEBAIHZv
aWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2
ZUltYWdlKFdURk1vdmUobV9pbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgICAgICAgICBhdXRv
IHNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2VIYXNBbHBo
YShuYXRpdmVJbWFnZSkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4
dHVyZTo6Tm9GbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwg
bmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDog
Qml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgICAgICAgICAgICAg
ICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIEludFJlY3Qo
SW50UG9pbnQoKSwgc2l6ZSksIEludFBvaW50KCksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0
cmlkZShzdXJmYWNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA4YmM1ZDI3YmU2MzVlZmRkNWE3ZDFm
NmM0NzNmMjhkODhmMjk2NThhLi41OWI1MmNkZTI0ZGY4MTZlZWE5OTkyODMyOGEwMjE4Njg0MTkx
NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcApAQCAtNTU0LDE0ICs1NTQsMTQgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBj
b24KICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQogCi12b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDog
UGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4s
IEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJv
OjpTaGFkb3dTdGF0ZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBy
ZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRp
dmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwx
PigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAg
ICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFy
ZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJn
PDU+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBv
dmVycmlkZQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKIAogICAg
IFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250
ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+
KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obWFrZVJlZlB0cihzdXJmYWNlLT5w
bGF0Zm9ybUltYWdlKCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBD
YWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtNTkzLDcgKzU5
Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2lu
Zyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3Zl
KHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RHJhd1BhdHRlcm4+KG1ha2VSZWZQdHIoc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpKSwg
SW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBA
IC0xMDc4LDcgKzEwNzgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVy
PihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLmdldCgpKSwgZGVzdFJlY3QpKTsKKyAg
ICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+KHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSksIGRlc3RSZWN0KSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAppbmRleCA2OTFlNzQxODAwM2U1NzU4YTYwNDRmM2M5NzkxYjMxMDhhZDM3YzJm
Li5kZDc4YzZhY2FiMDVkOTMxODQ1Yjk4NmI1YmQ3MmNhYzk3MmZjNzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3
ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6
SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBm
bG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2
Nzk1ZmQwN2YxNTE0MjQxODBjOGFiNWQwYzkuLmE2MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2Nh
MzUxYzc2ZjQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm47Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25z
dCBjaGFyKiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5nZXQoKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UgPSBmcmFtZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
c3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMmFiZjQzODJkMzAwZjRlMWQzMzIxOTMxZWE5
OWRhNDQ0ZmExZTM4Zi4uNDA2MzNhMDE5ZGNkZDMwN2UyMTA4ZDc1OTZmOGRlNjBhYzkzMGFlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICsz
OSw2IEBAIFJlZjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NM
YXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzCiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVu
dCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1h
c2soTm9DaGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVn
Qm9yZGVyV2lkdGgoMCkKQEAgLTI5NCwyMiArMjkzLDIyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYg
KGltYWdlKSB7CiAgICAgICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhl
IGltYWdlIGhhcyBjaGFuZ2VkLgotICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3Vt
cHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxp
ZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBj
b2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRm
b3JtSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdl
ZC4KICAgICAgICAgLy8gVGhpcyBhc3N1bXB0aW9uIGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQu
Ci0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIp
CisgICAgICAgIGF1dG8gbmV3TmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0
aXZlSW1hZ2VQdHIpCisgICAgICAgIGlmIChuZXdOYXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0ciA9IG5ld05hdGl2ZUltYWdlUHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG5ld05hdGl2ZUltYWdlOwogICAgICAgICBpZiAoIW1fY29tcG9zaXRlZElt
YWdlKQogICAgICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29u
dGVudHNUb0ltYWdlKGltYWdlKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNv
bnRlbnRzU2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7
CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9j
b21wb3NpdGVkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAxNWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQx
NGY0MTU0Li41OGY0ZjM2NWQyNTczNDc3MjkzMjdhZmJjYWQxOGM3YzE0YzNlZTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0x
NTUsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7
CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVk
SW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAg
IGludCBtX2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgz
NzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3ZjkxMDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIKICAg
ICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fc2hvdWxk
VXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAs
IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRU
aW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRp
bWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGlu
Z1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykK
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAo
bV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIg
PT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRyOworICAgIGlmIChtX2NvbXBv
c2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsK
LSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5hdGl2ZUltYWdlUHRyOworICAgIG1f
Y29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2U7CiAKICAgICBHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsK
QEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVz
aENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBtX25pY29zaWEuZGVsdGEu
YW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIC8vIERldGVy
bWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0byB0aGUgY29tcG9zaXRlZCBp
bWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKSB7CisgICAg
aWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbXBvc2l0
ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0gKm1fY29tcG9zaXRlZEltYWdlOwogICAg
ICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmaW1h
Z2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ci5nZXQoKSk7CisgICAgICAgIHVp
bnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgIC8v
IFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBvYmplY3QgaWYgdGhlIHVuZGVybHlpbmcgaW1hZ2Ug
Y2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5pbWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBl
ZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVjZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJk
YjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0
ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0
ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlOwogCiAgICAg
VGltZXIgbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwCmluZGV4IDg4MzVmODhkMWJiY2QyMDNjMzI1NjJkYTI0MTRjYmMy
N2I2ZmIwZjguLjUyNWExNjM0MWViZDVmZTY0MTlkODJkODBhMDQzMDRkYmE3MjJkODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwCkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2Um
IGZpbGwKIH0KIAogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBv
cmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQg
Z2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1Bs
YXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJ
Q0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFk
b3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBiaXRt
YXBTaXplKGltYWdlKTsKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKQEAg
LTgxMywxMCArODEzLDEwIEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkp
OwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQo
KSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNo
YWRvd1N0YXRlKTsKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmlj
ZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xv
YmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3Zv
aWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNo
YWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFnZS0+
R2V0U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKaW5kZXggNzRhMTAzNjcwOWYzODU1Y2U4ZDU0
Zjc1ZWNjMzZmMzFkODYzMmM1YS4uNWQxOTYwODBjZGU0NTUwNzA1YzM5N2VmOTljOTZjODQ5Njg3
OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtMTI4LDggKzEyOCw4IEBAIHZvaWQgY2xlYXJS
ZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQg
ZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGb250JiwgZG91YmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlw
aHMsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9y
PERXUklURV9HTFlQSF9PRkZTRVQ+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9h
dCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsK
LXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRt
YXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0LCBj
b25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3
UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VT
b3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIENPTVB0cjxJRDJEMUJpdG1hcD4mJiwgY29uc3QgSW50U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5
MmU2YWFjOGVkOTc0ZWM5OS4uM2E2OGRjM2FhMDE1NTM2ODQ2NGY1MTcyMzVlYzBhMzE5ZjdkNTdl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3Qy
RDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IENP
TVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCmluZGV4IGM1M2Q4YmY4NWMwOTkzODgyOTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMuLjg4YTY1
ZjdiYmVjM2VhMTRlNWRlNDY2NGM0OGMxMDA2MWVkYmUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0yODMsMTAgKzI4MywxMCBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdl
SW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVT
Y2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKKyAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0
LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOTVl
YjM3MGI3NWJhZGUwMzlkNmY5NDg3MmFlYWY0Y2YxZTVlNTNjYy4uYzE5N2I0ODljMjkyNmNhNjU4
ZDczNWU3ZTEzM2Y5MjE4MGZmYzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuaApAQCAtNzEsNyArNzEsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwg
SW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJv
b2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUz
YWNlZjIyZTY5N2I2NGU4MWM1Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJj
OTRhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0
Qml0bWFwKCZiaXRtYXApOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNS
R0IsIG51bGxwdHIpOwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZv
cm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5h
dGl2ZUltYWdlUHRyJiYgYml0bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBs
YXRmb3JtQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0
LCBQbGF0Zm9ybUltYWdlUHRyJiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAg
ICAgLCBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVz
aCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJE
MUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgm
Yml0bWFwVGFyZ2V0KTsKQEAgLTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5CiAKICAgICB9CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdl
OjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1h
cFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0
aWMgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJp
dG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0
IEludFNpemUmIGJvdW5kcykKIHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDEx
IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwg
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRp
dmVJbWFnZVB0ciBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmICht
X3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2
aW9yKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFw
VGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxT
aXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDEx
ICsxODcsMTEgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lu
a0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1h
Z2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0
Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoYml0bWFwVGFyZ2V0LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCks
IHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJl
bmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVy
VGFyZ2V0KQogewogICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0Nzky
NDZjNDU3ZGMyNjEuLjFkNTc0YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJl
c29sdXRpb24pIG92ZXJyaWRlOwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2JpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0
ZjkzYjlkNGU5MjEzM2Q1NTNjZDNhNGIuLjZkYWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2RhNDM3MjJj
OGQ0MTZmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEJpdG1hcEltYWdlPiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKICAgICAvLyBUaGUgQml0bWFwSW1h
Z2UgdGFrZXMgb3duZXJzaGlwIG9mIHRoaXMuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNn
SW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCkpKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShj
Z0ltYWdlKSkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY2dJbWFn
ZSkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1w
LCBjb25zdCBJbnRTaXplKiBzaXplKQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25z
dCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0
KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNT
aXplLndpZHRoKCkpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChp
KTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc3JjU2l6ZSkgewogICAg
ICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwg
eyBjb21wb3NpdGVPcCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCBkNGVhZmM1OTlhMDBmMjM5NTc4OTJl
M2NhYTJlODVlYmNlMzgwNWMwLi4yY2VjOTlkYzcyOWZlNjVlMDg1NGVlZTcyZGZjNGVkN2FmMDk1
MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05MywxNyArOTMsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gZnJh
bWVJbWFnZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoIW5hdGl2ZUlt
YWdlIHx8IG5hdGl2ZUltYWdlLT5zaXplKCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFj
ZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJh
bWUgPSBtX2N1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAg
ICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1Np
emUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAg
ICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7
CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgp
KSwgeyBjb21wb3NpdGVPcCB9KTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJh
bWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgw
NmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1O
YXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1f
bmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNh
ZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1w
bGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZjc4YzIz
OGYxOGY5OWJjNTA5YzFlMzA5MTgzZmNhZjhhNDhjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0KLSNpbmNsdWRlICJDb2xv
ci5oIgotI2luY2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgotI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKLSNpbmNsdWRlIDxkMmQx
Lmg+Ci0jaW5jbHVkZSA8d2luY29kZWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCi17Ci0gICAgc3RhdGljIElX
SUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkgPSBudWxscHRyOwotICAgIGlmICghaW1h
Z2luZ0ZhY3RvcnkpIHsKLSAgICAgICAgSFJFU1VMVCBociA9IENvQ3JlYXRlSW5zdGFuY2UoQ0xT
SURfV0lDSW1hZ2luZ0ZhY3RvcnksIG51bGxwdHIsIENMU0NUWF9JTlBST0NfU0VSVkVSLCBJSURf
UFBWX0FSR1MoJmltYWdpbmdGYWN0b3J5KSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NF
RURFRChocikpOwotICAgIH0KLQotICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKLX0KLQotSW50
U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAg
IFVJTlQgd2lkdGggPSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsK
LX0KLQotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKLXsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEMkQx
X1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwotICAg
IHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsK
LX0KLQotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGlt
YWdlKSAhPSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0KLSAgICByZXR1cm4gQ29sb3IoKTsKLX0KLQotdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCi17Ci0gICAgYXV0byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKTsKLQotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdl
IHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFn
ZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0
aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBt
YXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3Jj
UmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkK
LSAgICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9
LCBzcmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAg
YXV0byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJ
bWFnZSgqcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFn
ZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0KLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsKLSNlbmRpZgotfQotCi0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdl
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtSW1hZ2VEaXJlY3QyRC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVhODZiZmZhYWY4MzdjODYwZmI0YWVk
NDNkOTI2YjYxY2ZhYTI2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdlRGlyZWN0MkQuY3BwCkBAIC0wLDAgKzEsOTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiRGlyZWN0MkRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oIgorI2luY2x1ZGUgPGQy
ZDEuaD4KKyNpbmNsdWRlIDx3aW5jb2RlYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKK3sKKyAgICBzdGF0aWMg
SVdJQ0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7CisgICAgaWYgKCFp
bWFnaW5nRmFjdG9yeSkgeworICAgICAgICBIUkVTVUxUIGhyID0gQ29DcmVhdGVJbnN0YW5jZShD
TFNJRF9XSUNJbWFnaW5nRmFjdG9yeSwgbnVsbHB0ciwgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsIElJ
RF9QUFZfQVJHUygmaW1hZ2luZ0ZhY3RvcnkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VD
Q0VFREVEKGhyKSk7CisgICAgfQorCisgICAgcmV0dXJuIGltYWdpbmdGYWN0b3J5OworfQorCitJ
bnRTaXplIHBsYXRmb3JtSW1hZ2VTaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQor
eworICAgIFVJTlQgd2lkdGggPSAwOworICAgIFVJTlQgaGVpZ2h0ID0gMDsKKyAgICBpZiAoIWlt
YWdlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNp
emUoKTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxwaGEoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgaW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBpbWFnZS0+R2V0UGl4ZWxGb3Jt
YXQoKTsKKyAgICByZXR1cm4gcGl4ZWxGb3JtYXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9E
RV9JR05PUkU7Cit9CisKK0NvbG9yIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3Io
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xv
cigpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiBDb2xvcigpOworfQor
Cit2b2lkIGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBpbWFnZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisjaWYgQ0FDSEVfU1VCSU1BR0VT
CisgICAgaWYgKGltYWdlKQorICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFn
ZS5nZXQoKSk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vy
c29yR3RrLmNwcAppbmRleCA4N2Y4NGNhODRjNTRmNDI0MjJmYjQ5N2M3OTVmMjYzNTFkNjZkNWMw
Li5lZGVkN2U4ZGQyM2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcApAQCAtNjMsMTAgKzYzLDExIEBAIHN0YXRp
YyBHUmVmUHRyPEdka0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29u
c3QgSW50UG9pbnQmIGhvdFNwCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVy
bWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1
cnNvcl9uZXdfZnJvbV90ZXh0dXJlKHRleHR1cmUuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgp
LCBlZmZlY3RpdmVIb3RTcG90LnkoKSwgZmFsbGJhY2tDdXJzb3IoKS5nZXQoKSkpOwogI2Vsc2UK
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNw
b3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRH
UmVmKGdka19jdXJzb3JfbmV3X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgp
LCBzdXJmYWNlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55
KCkpKTsKICNlbmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdJbWFnZUd0ay5jcHAKaW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNm
OWUwM2EzMi4uYWVlY2ZjZjUyMjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBT
dHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNh
ZThmOTc4MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcw
YjUxZjVlZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsy
MDQsNyBAQCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxh
dGZvcm1JbWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
KQogewogICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhl
aWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZl
IGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgz
MjIyZWMzYmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFB
bmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9m
aWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4
IGI4MzVhNjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMx
NjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1Bs
YXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBt
X3BpeGVscy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQw
ZWJlNzZhZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwx
MSArMjM5LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkK
IAogICAgICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5n
ZXQoKSksIElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0g
ICAgICAgIFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAg
ICAgIFtdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAg
ICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsK
ICAgICAgICAgfQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBs
ZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAg
ICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVm
UHRyPE1lZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVk
aWFTYW1wbGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgp
KTsKICAgICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YS5oCmluZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIy
NDRhNDg0OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFt
ZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9T
dXJmYWNlUmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxS
ZWZQdHI8TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3Mg
Q2FwdHVyZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9n
Z2VySGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXgg
M2Y2Y2I2ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1
N2JhOTAxNGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNl
c3Npb24pCiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRm
b3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGlt
YWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1J
bWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRp
bWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMp
LnNlY29uZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUlt
YWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAg
YXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNh
bXBsZShwbGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0
aW9uKCkpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVk
MzY1NDU2ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNm
ZGNhOTMwNGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAg
Q0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0
RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1n
LT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29u
dGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRy
YXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtSW1hZ2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0Nv
bnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAg
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1h
Z2UuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0Nv
bnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNh
aXJvV2luLmNwcAppbmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1
Li4wNDE3NjZiNzJjNTIwMzI4Yjc0Y2U1OWM2OTg4YTRjNmI0NDI1YmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4
ICsxNjIsOSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwg
MC4wLCAxLjApOwogICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKLSAgICBpZiAoc3VyZmFjZSkgeworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWctPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKG5hdGl2ZUltYWdlICYmICFuYXRpdmVJ
bWFnZS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIERyYXcgdGhlIGltYWdlLgogICAgICAgICBjYWly
b19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UuZ2V0KCksIDAuMCwgMC4wKTsKICAgICAg
ICAgY2Fpcm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCmluZGV4IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjEx
MWE0YjJjMzU1YzA3Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29u
c3QgUGFpbnRJbmZvJiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFr
ZShyZWN0LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNl
dCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VSZWN0
ID0gQ0dSZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogCi0g
ICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2Uu
bmF0aXZlSW1hZ2UoKS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdl
IGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpXTsKIAogICAgIC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBp
bmcgcGF0aCBpbiB0aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAgIFJl
dGFpblB0cjxDR1BhdGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5k
ZWRSZWN0KGFic29sdXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5z
aW9uIC8gMiwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKaW5kZXggNjU5Y2RiNTNhYzU2YTYyMGIwMzkxODM2N2FmYzI1ZDE2MTc1ZmFlZC4uYTg5MjQ5
NmY5YmMwMDhjZTk2NDRkZTY2ZTJmYzhkY2M4ZWNkNmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVzdWx0
IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXQKIH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhl
IG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQ
YXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRp
dmVJbWFnZSBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3ND
b250ZXh0KikKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqKQogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAgICBp
ZiAoIW1fcGFnZSB8fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKaW5kZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQyOC4u
MjgyNWY5ZDM4OThkOGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzY2hlZHVsZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFs
OwogI2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSBmaW5hbDsKICNlbmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJu
IG1fcGFnZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNkNjVm
NWU4MzFiMzFhZjM2NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAg
bV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXpl
LCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25z
dCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBl
NjQ0ZjdhY2YzMGVjMjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUwNTNj
NTkyMjU3MzcwZjJiOGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgog
ICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRh
aW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxv
YXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyODVlZDVjMzdlZjc2ODExNDQ1
ODAzNTVjOWFhNDIzYWIxODVjMTNhLi4xZmI3MzNkNWMxNTg5MDFmNjFhMzY2MzkxZGYzZjkwMjNh
NzY5NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIx
OCw3ICsyMTgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0cicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZScsCiAgICAgICAgICdX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1
NzgxOTJkZjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBm
NjUxOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJ
bWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCBy
ZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
ZDYzZTkxYzI4MTYwNzkxNWJiMDRmOTQyNjIyM2YxNzZlOTcwNjVkMS4uMTU3MTNkNWNlOTJkMjlj
MTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDExICsxMTAwLDEyIEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhh
bmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29k
ZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIGltYWdlKQogewotICAgIGF1dG8gaW1h
Z2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IGlt
YWdlLT5zaXplKCk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCiAgICAgZW5jb2RlciA8PCAhIWdyYXBoaWNz
Q29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTExNyw2MyArMTExOCwzMCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBo
YW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJ
bWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitPcHRp
b25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVH
cmFwaGljc0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7
CiAgICAgaWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8gYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0
byBpbWFnZSA9IGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZW5jb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCi17Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7Ci0gICAgZW5jb2RlciA8PCBo
YXNJbWFnZTsKLQotICAgIGlmIChoYXNJbWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2Uo
ZW5jb2RlciwgaW1hZ2UpOwotfQotCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCi17Ci0gICAgaW1hZ2UgPSBudWxscHRyOwotCi0gICAgYm9vbCBoYXNJbWFnZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFoYXNJbWFnZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4g
ZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwotfQotCi12b2lkIEFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQotewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2Rl
ciwgaW1hZ2UpOwotfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi1ib29sIEFyZ3Vt
ZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQotewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdl
KGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwogfQog
CiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNi
NDk2YjA5YjkyYjhlMy4uNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlv
bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJ
bWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6
TmF0aXZlSW1hZ2U+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNkNWY2OTg4YjIxMTU4OGRh
N2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2ZTc0MzMxNzdiOTAzZGUw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
QEAgLTE4NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJv
dmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lkKgogCiBSZWZQdHI8SW1h
Z2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAgICBpZiAoIXBsYXRmb3Jt
SW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIEJpdG1hcEltYWdl
OjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYgKGF1dG8gcGxhdGZvcm1J
bWFnZSA9IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hh
cmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IGIzODc5YTAwNDRlNjgxOWU4YjVmOTZmY2Ri
ZDczNDVhOTUwYzI2MjQuLjBmMzBkOTRhNzE0OTkyZjgxN2FhM2NmODViZTBjMzFiYjk1M2ZkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERp
cmVjdDJELmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAg
ICAgYXV0byYgcGxhdGZvcm1Db250ZXh0ID0gKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAK
ICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zIHsgc3RhdGUuY29tcG9zaXRlT3BlcmF0
b3IsIHN0YXRlLmJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbigpLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH07Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShwbGF0Zm9y
bUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQs
IG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAg
ICBEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdl
dCgpLCBtX3NpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zLCBzdGF0ZS5hbHBo
YSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIENPTVB0cjxJRDJEMUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNlMSog
ZGlyZWN0WERldmljZSwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJi
ODk2NTQ1ODg2N2ViMmEwZmM0ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLjMxYzM4ZjM2MTNiMzZiNTFk
ZWMwZmVkYTFiN2JjMTc3NzlkZjBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNv
bkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zCiAgICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxs
b3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFi
YXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1JbWFnZVB0ciYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01
NjIsNyArNTYyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAg
aWYgKCFtX2xvYWRlZEljb25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGljb25EYXRhID0gdGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgICAgICBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRp
dmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3Jt
SW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0g
bV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dE
YXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDE0ICs1ODcs
MTQgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25z
LnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGlt
ZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZv
cm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkp
KTsKICAgICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkp
LCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5maXJzdDsKQEAgLTYyMiwxMyArNjIyLDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJ
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIq
CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewogICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKLSAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0
aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFp
cjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAg
ICAgICAgIGlmIChpY29uRGF0YVNpemUpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0
YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBF
bmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN0YXJ0Q2xlYXJMb2Fk
ZWRJY29uc1RpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5oCmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAz
OWIuLmUyMjUyYTAwMDBkMmJiZTViNmY2OWNkMjI3MWQwMGExMjVjNTc3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJ
Y29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgYm9vbCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2Ri
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAg
ICBMb2NrIG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6cGFpcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVk
SWNvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlUHRyLCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVk
SWNvbnNMb2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4gbV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNl
NDcwYzEwYWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uOGVmMWNlNDEyNzM2YThlZWQzYzZh
YTE2YzAzMmIzM2FkYjliZjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAg
c3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0lt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8g
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRv
cHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFVzZURyYWdJbWFnZVRv
Q3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBlMWIzOWY1NDJkZDM5ODA2YmZlYjk1M2ZkZDY0MjU2NWM5NGE5
MWE4Li43ODM0ZWVmMjQwYTBmNWRhMDEwNjQ3YzliODVkODMzNzhmZGJlYTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTc1NDYsNyArNzU0Niw3IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVy
ICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAg
aWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9j
XSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3Bh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBd
KTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBv
cmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29udGVu
dFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVu
c2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxlY3Rl
ZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0
aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3NjksMTEgKzc3NjksMTEgQEAg
c3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
IGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFk
b3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2Vk
IHdpdGggY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuCkBAIC04MDM0LDcgKzgwMzQsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+
IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVu
dEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVw
XSk7CisgICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRv
cHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAg
ICAgICAgIGF1dG8gc25hcHNob3RWaWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBp
bml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwog
ICAgICAgICBbc25hcHNob3RWaWV3IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3RlZFNl
bGYgYWRkU3VidmlldzpzbmFwc2hvdFZpZXcuZ2V0KCldOwpAQCAtMTAwODUsNyArMTAwODUsMTIg
QEAgc3RhdGljIFVJTWVudSAqbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhV
SVZpZXdDb250cm9sbGVyICpwcmV2aWV3VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0
aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgp
XSBhdXRvcmVsZWFzZV07CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYg
KCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW1tb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25S
ZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKilj
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAKaW5kZXggZTc2YzA2MzhjN2RhMmEwNGYxZTA4OWJjNGQ0OTBmMjI0Yjg3ZDIxNi4uYzNi
ZWVmNWQxNDBiNzI0MzhkYzc1MDU2MDNhZTlhNGNkZTJhMTFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtOTYsMTQgKzk2LDE0IEBA
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShD
RykKLSAgICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7CiAjZWxpZiBV
U0UoRElSRUNUMkQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAg
cmV0dXJuIG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4
IDA1YzEwOWNkMjAyNmQxNWY4MGViODMyYWQ5ZjFiN2JhMzNiYjk1NTcuLjllMjRhYjk5ZWJjNjc1
Y2UyMDFhNTkzOTcyOGM2MTlkYmE1OTVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAqbV9jb250ZXh0OyB9CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZl
SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNv
cHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdT
dG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JB
RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4
IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0OTcw
MmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmgKaW5kZXggNWY4NWRmODUxOWUxYTMxZTYyODNkYThmYjAwOGExMzViMjEzZTM0My4uMGQ3NTUy
ZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwog
ICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgYm9vbCBjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCA4MWNiMzFiODVmZjI2ODUxMDBiOTQyZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3NjBl
MmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcgQEAg
dm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2Fz
Q2FuY2VsbGVkKQogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xp
ZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJp
dG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFw
LT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgQVNTRVJUKENHSW1h
Z2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKIAogICAgIENHQml0bWFwSW5mbyBp
bWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2Njc0YmYxNGFjMDEyMGMzNWZkZjNhZGY2
Li43YWEwMDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRjMjI2ZjI3Mjc0OGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1MzYsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+
IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogCiAgICAgaWYgKHRleHRJbmRpY2F0b3IpIHsKICAg
ICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKQot
ICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS5hdXRvcmVsZWFzZSgp
OworICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1J
bWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKCEqY2dJbWFnZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgxNzY5OTY3NWVjZmJi
OWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2M2IxMzY3NWFjZGRl
MzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJD
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBA
IC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAgICBXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2lu
Z2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNhY2hl
ZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNo
ZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6
OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFz
SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdl
LmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGFh
N2JkNDhjYzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlmMWY3OGM5My4uZDEwNDNmOTU2YzQxMjVkYmFj
ZjYyNGRkMjRiYmJkNjNkNmRiYzllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtODQ2LDE0ICs4NDYsMTQgQEAgcHJpdmF0ZToKICAgICBfdGV4dFJl
Y3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9yRGF0
YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVmKCk7CiAgICAgX2Nv
bnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZh
Y3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQot
ICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhp
Z2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBfY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0lt
YWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZl
SW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJ
SW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29u
dGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCkt
Pm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVu
dGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCkt
Pm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUlt
YWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgX2NvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVj
dGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAgfQog
ICAgIH0K
</data>
<flag name="commit-queue"
          id="430127"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413508</attachid>
            <date>2020-11-06 20:12:22 -0800</date>
            <delta_ts>2020-11-06 21:00:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106201221.patch</filename>
            <type>text/plain</type>
            <size>270130</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uMTU5Y2ZhMGJlZjQyNTkzYmNiYTg4YTIyNjU0NmUw
MzUwMzVhM2M4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4MCBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIEhlYWRlcnMu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0
Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICog
aHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRo
RnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAoY3JlYXRlQ29u
dGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0NhaXJv
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpw
cmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNs
ZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xp
ZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2Fj
aGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hl
UGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNh
Y2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdl
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENv
bG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
TWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0xheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3U2hhZG93SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZp
bGxTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0
ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAuCisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRv
Q2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGlu
Z0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRy
YXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2
ZUltYWdlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFw
aGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRHZGtQaXhidWYpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNv
bjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp0aWZm
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNuYXBzaG90
TlNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4
dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29u
dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6
ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGli
bGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNH
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VE
aXJlY3QyRC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAuCisgICAgICAgIChXZWJDb3JlOjppbWFnaW5n
RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVh
clBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFn
ZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKKzIwMjAtMTEtMDYgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRo
ZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBO
YXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKiBwYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAgICAoLVtXZWJUZXh0SW5kaWNhdG9y
VmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFyZ2luOm9mZnNldDpdKToKKyAgICAg
ICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnByZVRyYW5z
Zm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlT2ZT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6Om5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFz
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVBdEluZGV4Q2FjaGVJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZl
SW1hZ2VBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnBsYXRmb3JtSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnBsYXRmb3JtSW1hZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjp1
cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hh
ZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFNoYWRvd0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybURyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFy
UGxhdGZvcm1JbWFnZVN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9y
bURyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUlt
YWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFn
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c25hcHNob3ROU0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwOgorICAgICAg
ICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3JvcHBl
ZEltYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJELmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJE
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmltYWdpbmdGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VI
YXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdT
dG9yZTo6aW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2Up
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aDoKKwogMjAyMC0xMS0wNiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IGZvciBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L01hYy9hY2Nlc3Nr
ZXkuaHRtbCBpbiBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlYTRjMzdkZWI0NTI5
MDhkNTE5YWI1MDhiYzAwZGFhZDdmZDI2NDYuLjkwYjIzMmY3MjAzMjllNTdiZDYyYjkxYTYwMDk5
YmVkZGYyZDBkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjAtMTEtMDYgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBD
b250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFz
cyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJ
bWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZGVj
b2RlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjplbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZGVjb2RlT3B0aW9uYWxOYXRpdmVJ
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQ
dHI+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6CisgICAg
ICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cGFpbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Omxv
YWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6c2V0SWNv
bkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6dWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfZGVsaXZlckRlbGF5ZWREcm9wUHJldmlld0lmUG9zc2libGU6XSk6CisgICAgICAgICh1aUlt
YWdlRm9ySW1hZ2UpOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oYW5kbGVEcm9wQnlJbnNl
cnRpbmdJbWFnZVBsYWNlaG9sZGVyczpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9wcmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xvcik6CisKIDIwMjAtMTEtMDYg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5d
IFtpT1NdIFdlYkF1dGhuIHByb2Nlc3MgZG9lc24ndCBzdGFydCBvbiBpT1MgZGV2aWNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGVkNzQ0ODgwMWZkNGU1ZGIxMTY4MWRjMjZlZTZk
MDEzMjcwMTAxOTEuLjY3M2ExZGE2YmM4MmQ1NDAwNTc5MGVlN2U0MmRiOWM1ODYzM2ZhNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMS0wNiAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3
IGNsYXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6CisgICAgICAgICogTWlzYy9XZWJDYWNoZS5t
bToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGluaXRXaXRo
SW1hZ2U6dGV4dEluZGljYXRvckRhdGE6c2NhbGU6XSk6CisKIDIwMjAtMTEtMDQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3Zl
IHRoZSBpbnRlcm5hbCBHUFUgcmVuZGVyaW5nIGZsYWdzIGZyb20gV2ViUGFnZSB0byBXZWJQcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhNDNjMjA1ODE2NWU4NDU5M2Y4OTRjNmFjYmU2ODQy
ZTJiY2E1ZjM3Li5kN2Q0NTExN2ZlZTIwZGIyMzkzNWM3YzZiYmQ5ODRiZWYyYWNkNzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTEyMTYsMTMgKzEyMTYsMTMgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZVB0ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5o
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggMDE1MmU1N2Q3N2Q2
YjIyYWQzY2RkMzBkYzQyZTYxODBmMTc0YThhOC4uN2ZjYjcwZjExMmE5MmI2NDMwZGYzZDA3ZTdi
NjQ0OTRjMGZlZDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC05
MCw5ICs5MCw5IEBAIGlmICgke1VTRV9ESVJFQ1QyRH0pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9QYXRoRGlyZWN0MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJu
RGlyZWN0MkQuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdl
RGlyZWN0MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0
YURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVGV4dEFuYWx5emVy
SGVscGVyLmNwcAogCkBAIC0xNDQsMTAgKzE0NCwxMCBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ludFJlY3RDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50U2l6ZUNH
LmNwcAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdHRlcm5DRy5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1J
bWFnZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggOGQ5MjQ5MWEwODUzMGVjYTJlOTZmNGRjMWU2
MmQzMjViMTZlNDc1Yy4uZWQ2YWNiMzFjYmE1ZDcyOTFhNWQwOGY4NWE0NzEzNjA3MDA0MDdjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTI5NSwxMCArMjk1LDEwIEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhU
aW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCBmNzQzZGRhNWI3OTBkZWVmNWZhNTRlYmE1ZTUxOGMzMGRhY2Y3ZTg2Li4wMTA0MTlm
ZDRmZDU0Yjk2MTMxZDVkMmY2ZDUxYzFiYjFiY2QwOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTk0
MSw2ICsxOTQxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyYWQz
M2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi42NzJkY2UzNmM3MWIxZDVkOTk3
MTNlOTFiOTMyNDAzYzkzZjFhOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTMzNywx
MCArMzM3LDEwIEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW50UmVjdENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50U2l6ZUNHLmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0
Zm9ybUltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRp
bWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNmU0MjUzZjg0NmRl
ZGU3ZjkwYmI1OGNkNjVkNjI5ZDdiZWM3NjUuLjlhMzY3ODhmOTgyNThlY2M5YWMzZGJkOTJkMzIx
OGViMzE3MTllODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIxNTgsNyArMjE1OCw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMw
MEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVu
ZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFG
RkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUlt
YWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZFMjI1M0FFMjhEMDAw
MkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZE
NTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBO
YXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2
NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2
ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQyOCw3ICs3NDI4LDcgQEAKIAkJMzc2RENDRTAx
M0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3Zlcmxh
cFRlc3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
NzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogTmF0aXZlSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1h
Z2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUlt
YWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2
MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBD
cmVkZW50aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50
aWFsQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk1MSw2ICs5OTUxLDcg
QEAKIAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUg
LyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5p
bWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk2MSw3ICs5OTYyLDcgQEAKIAkJNzI2NkYw
MjgyMjQzMTIwMzAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1
IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNjE2MSwxMSArMjYxNjIsMTEgQEAKIAkJCQlCMjc1MzUzNDBCMDUzODE0MDAyQ0U2
NEYgLyogSW50U2l6ZUNHLmNwcCAqLywKIAkJCQkxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQgLyog
SU9TdXJmYWNlUG9vbC5jcHAgKi8sCiAJCQkJMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElP
U3VyZmFjZVBvb2wuaCAqLywKLQkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogTmF0aXZl
SW1hZ2VDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MzUwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGhDRy5j
cHAgKi8sCiAJCQkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8s
CiAJCQkJQjI3NTM1MzYwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICov
LAogCQkJCUIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8s
CisJCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgKi8s
CiAJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIu
Y3BwICovLAogCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmggKi8sCiAJCQkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4Q0cuY3BwICovLApAQCAtMjY0MDUsOCArMjY0MDYsOCBAQAogCQkJCTA3QjkzRkY5
MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMx
MDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0
QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAor
CQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8sCiAJCQkJ
NTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8sCi0JCQkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi8sCiAJCQkJQjI3NTM1NTIw
QjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovLAogCQkJCUIyNzUzNTUzMEIwNTM4MTQwMDJD
RTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhU
cmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0yNjQxNSw2ICsyNjQxNiw3IEBACiAJCQkJMkQ1MDAy
RkExQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCAqLywKIAkJCQlBOEZBNkU1QzBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKKwkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyog
UGxhdGZvcm1JbWFnZS5oICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKQEAgLTMzNDMyLDcgKzMzNDM0LDYgQEAKIAkJCQlB
ODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2
ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5
MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3
MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTMzNjU3LDYgKzMzNjU4LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENB
NEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE1QkUxOTUxRDU0RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZB
QUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5
NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMTVkYWIxZjQ2NGExZTcz
MjFmNDY1ODNiYjk2YThkZDBhZWExZjEyNi4uYmU5YjE5NTQ2NDUxZDIzZGEzM2I1OTJmZThiNDdl
ZjNkYjZhYzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVvKCkgJiYgcGxheWVy
KCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSFRNTFZp
ZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAg
IGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlZmZmM2Y2NmU4MTNiNzc4Njk4MGNhYmNhMzUxMGIx
MjBkYjYwNDAyLi4zZDE5NGIwNzkwYjc3MDkzNTBlNGY4NDZhZDk1YzliNGJhOWNmM2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KTsKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlm
IHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggNjYzMTZmYjBjZDUzYTZmMDc5NTMyOTIwY2YwNDJjMmU2MTMwNTUwMC4uMTgwYjliOTFjMDAz
NDg2NTIxNzNjMzQ3NzM2ZDFkMWZhZjI5MjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAg
LTE2MzUsOCArMTYzNSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgY2hlY2tPcmln
aW4oJnZpZGVvKTsKIAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2Ug
PSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgYy0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRl
b0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSB2aWRl
by5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+ZHJhd05hdGl2ZUlt
YWdlKCppbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWln
aHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFz
KGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgICAgICBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpp
bmRleCAxN2JhNTFmZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4Li42MWY4MjNmZWIz
MDNmZWFkMzhlMTI1NGRmYmUxMDljNjBlM2FkMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMg
Ym9vbCBpbmRpY2F0b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0SW5kaWNhdG9yJiBp
bmRpY2F0b3IpCiAKICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2ljYWxTaXplID0gX3Rl
eHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29udGVudHNJbWFnZUxv
Z2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVGYWN0
b3IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRpY2F0b3JXYW50c0Nv
bnRlbnRDcm9zc2ZhZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29udGVudHNJbWFnZSA9
IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCktPm5hdGl2ZUltYWdl
KCk7CiAgICAgZWxzZQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlm
cmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0
CiBzdGF0aWMgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2Zh
ZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJ
bmRpY2F0b3IpCiB7CiAgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFu
aW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVu
dHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRp
Y2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRp
dmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRU
b1ZhbHVlOihfX2JyaWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBbY3Jvc3NmYWRl
QW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2Zh
ZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU291cmNlc0NhaXJvLnR4dAppbmRleCA1ZjAxNDk0ZjNjYTFlMzFkNzQ3YmY3YzdhZmI3
NmFkMGNkN2Y2NzBiLi5jZjlhMTk2OTliOGE5NWM3NDEyMDFmZDE2YzcxYjk1YWMwYWU4ZjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKQEAgLTM1LDggKzM1LDgg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGll
c0NhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAotcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5D
YWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNk
OWY0ODU3NzYyZTU1MzI3ODNmZGExNy4uYTEyYWY0NTkwNzlmMDUzYzg2Y2U5ODI5N2JkMzRjYmY5
ZDljYTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShO
YXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFn
ZVNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5
KERlY29kaW5nU3RhdHVzIGRlY29kaQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMg
PSBkZWNvZGluZ1N0YXR1czsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1l
SW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhh
c0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewog
ICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJz
YW1wbGluZ0xldmVsIHdhcyAlZCwgcmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVT
dWJzYW1wbGluZ0xldmVsQXRJbmRleChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQo
c2l6ZV90IGluZGV4LCBTdWJzYW1wCiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0
YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBm
cmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0
dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBA
QCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBv
aW50KCksIGNvcnJlY3RlZFNpemVGbG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxv
YXRQb2ludCgpLCBzb3VyY2VTaXplKTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50
YXRpb24gfSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
c291cmNlU2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAg
cmV0dXJuIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKICNpZiBVU0UoQ0cpCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJn
ZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VP
ZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IHRhcmdldENvbnRleHQpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGlt
YWdlKSA9PSBzaXplKQorICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXpl
KQogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQg
QEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhD
YWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQp
OwogfQogCi1WZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJ
bWFnZXMoKQorVmVjdG9yPFJlZjxOYXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRp
dmVJbWFnZXMoKQogewotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZl
Y3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQot
ICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKG1ha2VSZWYoKmltYWdlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGltYWdlczsKQEAgLTIx
MSwxMCArMjExLDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZl
IGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRT
aXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIElu
dFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAob3B0aW9u
cy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCiAgICAgICAgIHN1YnNhbXBsZWRJ
bWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKQEAgLTI0
Niw3ICsyNDYsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIG1fY3VycmVudFN1YnNh
bXBsaW5nTGV2ZWwgPSBtX2FsbG93U3Vic2FtcGxpbmcgPyBzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGVGYWN0b3IoY29udGV4dCwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nKSA6IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQ7CiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJs
OiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRm
LCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNj
YWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0
KCkpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBpbWFnZTsKICAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6
OkFzeW5jaHJvbm91cykgewogICAgICAgICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAg
IEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CkBAIC0zMjIs
OSArMzIyLDkgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBhdXRvIG9yaWVudGF0aW9u
ID0gb3B0aW9ucy5vcmllbnRhdGlvbigpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9y
aWVudGF0aW9uOjpGcm9tSW1hZ2UpIHsKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVu
dGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmll
bnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOworICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VT
aXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCBvcHRpb25zKTsKKyAgICAgICAg
ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNp
emUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCBvcHRpb25zKTsKIAogICAgIG1fY3VycmVudEZy
YW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCmluZGV4IDNiNjg5MDY3ODM1NjliMDFjYWJhMTJmZDYwMWFkNTYxOTg0YjE3YjUuLjljNTll
N2FlZGMwMmU2YmE4NzU2OGEyNWZlYWNkNjJjZThhOWE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNTMsNyArNTMsMTEgQEAgY2xh
c3MgVGltZXI7CiAKIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHN0
YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1J
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpKSwgb2JzZXJ2ZXIpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxC
aXRtYXBJbWFnZT4gY3JlYXRlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSwgSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShuYXRpdmVJbWFnZSksIG9ic2VydmVyKSk7
CiAgICAgfQpAQCAtMTM1LDIzICsxMzksMjMgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShi
b29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogI2lmIFVTRShDRykKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9m
U2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92
ZXJyaWRlOwotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXpl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFZlY3Rv
cjxSZWY8TmF0aXZlSW1hZ2U+PiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsKICNlbmRpZgogCiAgICAg
dm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2Rl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYsIEltYWdl
T2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4
KGluZGV4KTsgfQotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5m
cmFtZUltYWdlQXRJbmRleChpbmRleCk7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1l
SW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7
CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJv
eUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZl
ciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTE5OCw3ICsy
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUlt
YWdlUHRyPiYpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihj
b25zdCBWZWN0b3I8UmVmPE5hdGl2ZUltYWdlPj4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBjbGVh
clRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggMjIzZDlkYzE4M2QwM2UzZjRjYzM1MWY0ZGE2ZjZm
ODkzZjBhYjVlZi4uODU0MDIxNWY2MjM3Y2MwYTNkNjI1ZTMyZmE5NjdkZjlhNjJlYzJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1h
Z2VCdWZmZXIuaApAQCAtMTE2LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG1fYmFja2VuZCA/IG1fYmFja2VuZC0+ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgOiAwOwogICAgIH0K
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvciA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBj
b25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4
dCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAg
ICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDMwYjg4NDkxOWIy
YzYwNDVmNzk5NmMxOWExNWJhZjYzOWJjNTI2OWUuLjAyNThkNjQxZDc2NGI5OWFiMWNkOGNkZjk0
Mjk4ZDBkZGY4N2IxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NzQxLDcgKzc0MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2Uu
cGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
IH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMGIzNWFjNjRmYThiOWZmZTBj
OTQ0ODVlOTczZjI0YzJhYTBmMzQ5MC4uYzVkMDU3Y2RhZDRiNjVlODQ3ZTllNmZmZDA5ZjY3ZWZk
NTdmNjIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTM3OSw3ICszNzksOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJh
d1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNjUwLDggKzY1MSw2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybURyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKLQogICAgIEZsb2F0UmVjdCBjb21wdXRlTGlu
ZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wg
cHJpbnRpbmcsIENvbG9yJik7CiAKICAgICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JT
dHJva2VXaWR0aChmbG9hdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9y
LmgKaW5kZXggYmI5YjBjOWZiMWU2MzlkOTlmOTgzN2ZlMDZkZjBhYzcwMjk2Yzk3Mi4uZjRiNTJh
YzVhMzdlNmM2YWQ5NGRjNmE3YmNhNjc2NWJlNjA4ZDdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlS
TykKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKICNlbGlmIFVT
RShDRykKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1f
Y2dJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fZGVjb2RlZEltYWdlOwogICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+
IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDZlMjIyYzAy
ZjJkOWFlMzY0MDYxYjczZDljMzdiNzdiMjliMDNiNDYuLjlkNDQwZDA1M2IwNzgwZDhkNDI1YjY2
ZWI5NTEwZDYxZGM4ZWNkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdl
OjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggYjU5NjBhZDVmZjdj
NGRhNTZkZjRmNWE0YTc5YWRkOTg4NDEzNmQ3ZC4uYmIzOWM2Yzg4ZTE0MGI0N2Y0MjIwMTA3MzZm
MWU1NmM3OWU0M2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUltYWdlLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2Vs
aWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU0ltYWdlOwpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJT1NfRkFN
SUxZKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0
ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBJY29uKGNv
bnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpOworICAgIEljb24oY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFU
Rk9STShNQUMpCiAgICAgSWNvbihOU0ltYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAppbmRleCA0YjliZWVkODY1N2VlYjlmYWI0ZDQ1Y2NhZGQxMDhhZmIwZDIz
ZmFiLi40MzZiMzdkNmM4ZWM2ZjAwZjRmZWI0ZGQzNmY0YTI5MjNjN2Y5NmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMu
aCIKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTE1MywxMCAr
MTUzLDEwIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91
bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRy
YW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAg
ICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXgg
YTE3NWRkYTU0YTYzNGU5Zjc4Mzg1OThkMGVkYWIwYzg2MjgyNDlhYS4uOTE4YmNiM2FlYjQyZTQz
ZjYzNzQyMmYzYjk2YmYxZjgxNzE1YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJhY2tpbmdTdG9yZT4o
bmV3IEltYWdlQmFja2luZ1N0b3JlKG90aGVyKSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UoKSBjb25zdDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CiAK
ICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggM2QzZjgw
MDdjYjdlZTkyYzZhMDBlOGZlMDg2NWQwNTgxMTRkM2JjMy4uOGY2MmRjNmEzNDgzYzg0M2QwNWJl
ZjY3MzRkYzU0YTEzYjRiMGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBDb2xvclNwCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cikKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uo
UmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXItPnNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDkyMDRhZDEwYTgxMDY4MDZkZTkyNmYyZWVm
ZmMxNjM0Yzc3MDBlNmUuLjUzODQ2YzU5Y2I1ZWM0MDA3ZDU0NDBhNDE1NjE3ZjhmMTg3ODBmODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApA
QCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENv
cHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29w
eUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29s
dXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVh
dGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSBy
ZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3Qo
MCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0g
MDsKIAotICAgIHN0YXRpYyBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4pOworICAgIHN0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRv
TmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIFBy
ZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pOwogICAgIHN0YXRpYyB2
b2lkIGRyYXdDb25zdW1pbmcoUmVmUHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7
CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVy
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2
ZUltYWdlKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05h
dGl2ZUltYWdlKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdl
KFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDQxNzNhOWJmMDk0OWVjM2Qy
ZDY3ZTgwMTdiZDcwZjI1MWY2OTgzYTEuLmYxZjM2N2MwNmEyYTBjOWQ5OTEzYzljOTIzNmMxOTcz
NmVkZTU5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJbnRTaXplIEltYWdl
QnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZQogICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKICAgICBy
ZXR1cm4gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
aW5kZXggY2I1ODcyNTY3ZjA4ODNiNWJkMDJlMGVlY2I4Y2VmZGJlNzEwYThlYy4uZWQzZjhiNWJj
ZjU4ZTQyNzg1NjdkMTg2ZmI2NWM4NDAxNjI3YzhmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50
aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFn
ZVB0ci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC03NywxMyArNzcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0K
ICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0ID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9O
YXRpdmVJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBS
ZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNzEwNGQwNzE5NGYzODE1
OWIzM2JlYTZhYWVkODg1ZDcwOWJkOTgxNy4uYWFhNTFiZGRjZTA0ZmQ4NWU5ZWE2MWQzODJjYzNi
MTFlZTZlMjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBm
cmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CisgICAgdmly
dHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5jcHAKaW5kZXggODNiNzhiNmVjMDA2ZmM1NDc3NDUyZmZkMDgxNTI3YjJkZDkxNjE4
NC4uY2MzYjYzNjAyOTVjZTBjNWI5ZGIxNDE1MDRjZWNhNjI2ZWRiYTRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgdW5zaWduZWQgSW1hZ2VGcmFtZTo6Y2xlYXJJbWFnZSgpCiAKICAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOwogCi0gICAgY2xlYXJOYXRpdmVJbWFnZVN1
YmltYWdlcyhtX25hdGl2ZUltYWdlKTsKKyAgICBtX25hdGl2ZUltYWdlLT5jbGVhclN1YmltYWdl
cygpOwogICAgIG1fbmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgIG1fZGVjb2RpbmdPcHRpb25z
ID0gRGVjb2RpbmdPcHRpb25zKCk7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBDb2xvciBJbWFnZUZy
YW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogICAgIGlmICghaGFzTmF0aXZlSW1h
Z2UoKSB8fCBtX3NpemUgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7
CiAKLSAgICByZXR1cm4gbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9uYXRpdmVJ
bWFnZSk7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPnNpbmdsZVBpeGVsU29saWRDb2xvcigp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
LmgKaW5kZXggNTRhOWM5ZGYzM2I0ZDMzYjEyNzVmOTE0NmZmODg0MmUzN2MwMDA3MS4uYWE3M2Fl
MzYzODllYzJmYWM0MjFlYzM1YzNlNmM2NzE4MTFlN2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc05hdGl2ZUltYWdl
KCkgPyAoc2l6ZSgpLmFyZWEoKSAqIHNpemVvZih1aW50MzJfdCkpLnVuc2FmZUdldCgpIDogMDsg
fQogICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vic2FtcGxpbmdMZXZlbDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KIAogICAgIHZv
aWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVu
dGF0aW9uID0gb3JpZW50YXRpb247IH07CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KQEAgLTg4LDcgKzg4LDcgQEAgcHJp
dmF0ZToKICAgICBEZWNvZGluZ1N0YXR1cyBtX2RlY29kaW5nU3RhdHVzIHsgRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRy
IG1fbmF0aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwog
ICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCB9OwogICAgIERlY29kaW5nT3B0aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmlu
ZGV4IGY4ZTIwMjhjM2MzYjNmNjE2YzZhMTM3OGE5NGVmZGZjNGU1YjE5NDkuLjE0ODAyMWNlZWU0
NTVhZWJiMzA1ZGZmMzU2MTNlYzQ3NDMzZjU1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW1hZ2VT
b3VyY2U6OkltYWdlU291cmNlKEJpdG1hcEltYWdlKiBpbWFnZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ28KIHsKIH0KIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKE5hdGl2
ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoUmVmUHRy
PE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIDogbV9ydW5Mb29wKFJ1bkxvb3A6OmN1
cnJlbnQoKSkKIHsKICAgICBtX2ZyYW1lQ291bnQgPSAxOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgSW1hZ2VTb3VyY2U6Omdyb3dGcmFtZXMoKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG5ld1Np
emUpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoUmVmUHRy
PE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogewogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXpl
KCkgPT0gMSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1swXTsKQEAgLTI0NSw4
ICsyNDUsOCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQogICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2
ZUltYWdlKTsKIAogICAgIGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
Q29tcGxldGU7Ci0gICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm1fbmF0
aXZlSW1hZ2UpOwotICAgIGZyYW1lLm1faGFzQWxwaGEgPSBuYXRpdmVJbWFnZUhhc0FscGhhKGZy
YW1lLm1fbmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm1fbmF0aXZlSW1h
Z2UtPnNpemUoKTsKKyAgICBmcmFtZS5tX2hhc0FscGhhID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+
aGFzQWxwaGEoKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluCiAKICAgICBpZiAoZnJhbWUubV9kZWNvZGluZ09wdGlvbnMuaGFzU2l6ZUZvckRy
YXdpbmcoKSkgewogICAgICAgICBBU1NFUlQoZnJhbWUuaGFzTmF0aXZlSW1hZ2UoKSk7Ci0gICAg
ICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5uYXRpdmVJbWFnZSgpKTsK
KyAgICAgICAgZnJhbWUubV9zaXplID0gZnJhbWUubmF0aXZlSW1hZ2UoKS0+c2l6ZSgpOwogICAg
IH0gZWxzZQogICAgICAgICBmcmFtZS5tX3NpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5k
ZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJ
bWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW4KICAgICAgICAgZnJhbWUubV9kdXJhdGlvbiA9IG1fZGVjb2Rlci0+
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNo
ZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQor
dm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdl
UHRyJiYgcGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNv
ZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1l
cy5zaXplKCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwpAQCAt
MjkzLDcgKzI5Myw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4
KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1vdmUgdGhlIG5ldyBpbWFnZSB0byB0aGUgY2FjaGUuCi0gICAgZnJhbWUubV9u
YXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fbmF0aXZlSW1h
Z2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOwogICAgIGZy
YW1lLm1fZGVjb2RpbmdPcHRpb25zID0gZGVjb2RpbmdPcHRpb25zOwogICAgIGNhY2hlTWV0YWRh
dGFBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ1N0YXR1cyk7CiAKQEAg
LTMwMSw3ICszMDEsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRl
eChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgIGRlY29kZWRTaXpl
SW5jcmVhc2VkKGZyYW1lLmZyYW1lQnl0ZXMoKSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNh
Y2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwg
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0
YXR1cykKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhQ
bGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdP
cHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVj
b2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlLCBzaXoKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkp
OwogCiAgICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBhIG5ldyBvbmUK
LSAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOworICAg
IGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOwogICAg
IExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBo
YXMgYmVlbiBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBpbmRleCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGltYWdlIHdpdGgg
dGhlIHJlYWRpbmVzcyBvZiB0aGUgbmV3IGZyYW1lIE5hdGl2ZUltYWdlLgpAQCAtMzYyLDggKzM2
Miw4IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAg
ICAgICAgICAgICBzdGFydGluZ1RpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAg
ICAgICAgLy8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFk
LgotICAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBwcm90ZWN0ZWREZWNv
ZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVx
dWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zKTsKLSAg
ICAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFn
ZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVz
dC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNv
ZGluZ09wdGlvbnMpOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtSW1hZ2UpCiAgICAgICAgICAg
ICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUg
JWxkIGhhcyBiZWVuIGRlY29kZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigp
LCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMg
LSAlcCAtIHVybDogJXMgW2RlY29kaW5nIGZvciBmcmFtZSAlbGQgaGFzIGZhaWxlZF0iLCBfX0ZV
TkNUSU9OX18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBm
cmFtZVJlcXVlc3QuaW5kZXgpOwpAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRl
Y29kaW5nRHVyYXRpb24gLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsK
IAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlv
biB0aHJlYWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJl
bnQgdGhyZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywg
cHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291
cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2Up
LCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rl
ciwgc291cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0g
V1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgcXVldWUgbWF5IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2Ug
Z290IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSwgc3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBj
YWxsZWQuCiAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkg
PT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGluZ1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRy
KCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJl
cXVlc3QpOwogICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0
UXVldWUucmVtb3ZlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVS
ZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0
LmRlY29kaW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5j
KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0
LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMsIGZyYW1lUmVx
dWVzdC5kZWNvZGluZ1N0YXR1cyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2Zy
YW1lICVsZCB3aWxsIG5vdCBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0
cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAg
ICAgICAgIH0pOwpAQCAtNDU0LDkgKzQ1NCw5IEBAIGNvbnN0IEltYWdlRnJhbWUmIEltYWdlU291
cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtCiAg
ICAgICAgIGlmIChmcmFtZS5oYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKHN1YnNhbXBsaW5nTGV2ZWwp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcGVyZm9ybSBzeW5j
aHJvbm91cyBpbWFnZSBkZWNvZGluZyBpbiB0aGlzIGNvZGUuCi0gICAgICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlID0gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlKTsKKyAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0g
bV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bFZhbHVlKTsKICAgICAgICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBh
IG5ldyBvbmUuCi0gICAgICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZl
SW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOworICAgICAgICBjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUs
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtNjk3LDE5ICs2OTcsMjEgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0
VGFyZ2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB9CiAj
ZW5kaWYKIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGlzRGVjb2RlckF2YWlsYWJsZSgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOworICAgIGlmICghaXNEZWNv
ZGVyQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VT
b3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJh
bWVNZXRhZGF0YUF0SW5kZXg8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5h
dGl2ZUltYWdlKSk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PFJlZlB0cjxOYXRp
dmVJbWFnZT4+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxOYXRpdmVJbWFnZVB0cj4oaW5k
ZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNo
aW5nOjpNZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJh
bWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPFJlZlB0cjxOYXRpdmVJbWFnZT4+KGluZGV4
LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIHZvaWQgSW1hZ2VT
b3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBkOThlYzBlN2Y2ZTUyY2U1NTg5ZWRkOTliNDJj
N2FkNjNjZWRmMDFkLi5hNmY0YWIxM2RlZWZkYTM2NTJiYjkzM2NiMmUyNjJhNWZjYjYwMzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZVNvdXJjZShpbWFnZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKE5hdGl2ZUltYWdl
UHRyJiYgbmF0aXZlSW1hZ2UpCisgICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQpA
QCAtMTI1LDEzICsxMjUsMTMgQEAgcHVibGljOgogI2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lk
IHNldFRhcmdldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0Kik7CiAjZW5kaWYKLSAgICBO
YXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBm
cmFtZUltYWdlQXRJbmRleChzaXplX3QpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRl
ZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsK
IAogcHJpdmF0ZToKICAgICBJbWFnZVNvdXJjZShCaXRtYXBJbWFnZSosIEFscGhhT3B0aW9uID0g
QWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0g
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwotICAgIEltYWdlU291cmNlKE5h
dGl2ZUltYWdlUHRyJiYpOworICAgIEltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgp
IGNvbnN0PgogICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxU
PiogY2FjaGVkVmFsdWUgPSBudWxscHRyKTsKQEAgLTE1MiwxMCArMTUyLDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWNvZGVkU2l6ZVJlc2V0KHVuc2lnbmVkIGRlY29kZWRTaXplKTsKICAgICB2
b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChFbmNvZGVkRGF0YVN0YXR1cyk7CiAKLSAgICB2
b2lkIHNldE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOworICAgIHZvaWQgc2V0TmF0aXZl
SW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlTWV0YWRhdGFBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0
YXR1czo6SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJ
bWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwotICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsK
KyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmLCBz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5n
U3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9y
bUltYWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CiAKICAgICBz
dHJ1Y3QgSW1hZ2VGcmFtZVJlcXVlc3Q7CiAgICAgc3RhdGljIGNvbnN0IGludCBCdWZmZXJTaXpl
ID0gODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA3YWFhMWVmYjNhNWUzNTM2MTZiMjI5YmI1YTNmMjcwYWQ1Y2ExMGNmLi41OTU2
N2QwYzM5OTMyYjBlN2IxN2ZiNjVjNzJlNzZkZmE3ZjE5NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05ODUsNyArOTg1LDcg
QEAgYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb24KICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkp
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAppbmRleCAzM2MxZGNhODgyNDEwMjBmNGZkMWRmNjJmNTZmMGFjZTc2MDhmOGE4Li5h
MDU3OGFlMDNlNzA3Yzg1NTY5NjRhNTM2ZTlhYjY0YTUzZTg1Y2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQzMCw3ICs0MzAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAg
ICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0
ZSBuZXR3b3JrU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggYzM2YzJmNTU1NThhNmY3M2M2ZTc1NDM3
OWEzNDMxMTQwMzhiMGI5MS4uN2U5MGNkZGRmYzg3MDFiYmNkYTcyZDk0YWU0ZGI4ZjBkYTAxMGRi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25z
dCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxh
dGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NH
TGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YxM2RjYWIzNWFjOGM1YTk4MWRk
ZDlhMzIwODg4ODRmZDRhYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQoreworICAg
IGlmICghcGxhdGZvcm1JbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQor
CitOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1h
Z2UpCisgICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggMDMzNDc1OTYwN2Y4ZjIwZGUzMTI0ODU5YTZmMGYw
OTQ1MWUxOGU1Yi4uMzdlYjY1MjU4NDgwYzYwOTQ4M2RlZDUyN2JhMzNmOTA0YzViNTM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0y
NywxNiArMjcsMzAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0
ci5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbG9yOwotY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2
ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1J
bWFnZVB0ciYmKTsKIAotV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYpOworICAgIFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2Uo
KSB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0KKyAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CiAKLX0K
KyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdlU2l6ZShtX3Bs
YXRmb3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIHBsYXRm
b3JtSW1hZ2VIYXNBbHBoYShtX3BsYXRmb3JtSW1hZ2UpOyB9CisgICAgQ29sb3Igc2luZ2xlUGl4
ZWxTb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29s
aWRDb2xvcihtX3BsYXRmb3JtSW1hZ2UpOyB9CisKKyAgICB2b2lkIGNsZWFyU3ViaW1hZ2VzKCkg
eyBjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMobV9wbGF0Zm9ybUltYWdlKTsgfQorCitwcml2
YXRlOgorICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9y
bUltYWdlUHRyIG1fcGxhdGZvcm1JbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlm
NzUxNDA3MWQwN2M5NTgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7
Ci0jZWxpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShX
SU5HREkpCi0jaW5jbHVkZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0jaWYgVVNFKENHKQotdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0
aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJp
dG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVk
ZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlNDc4NWUzMmY2OTcxNjMxNWYwYjQyMjgxZjU0ODc5N2Y3NmViN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNF
KENBSVJPKQorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2lu
Y2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ29sb3I7CitjbGFzcyBJbnRTaXplOworCisjaWYgVVNFKENHKQordXNpbmcgUGxhdGZv
cm1JbWFnZVB0ciA9IFJldGFpblB0cjxDR0ltYWdlUmVmPjsKKyNlbGlmIFVTRShESVJFQ1QyRCkK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBDT01QdHI8SUQyRDFCaXRtYXA+OworI2VsaWYgVVNF
KENBSVJPKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
OworI2VsaWYgVVNFKFdJTkdESSkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8U2hh
cmVkQml0bWFwPjsKKyNlbmRpZgorCitXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHBsYXRmb3JtSW1h
Z2VTaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0Fs
cGhhKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK0NvbG9yIHBsYXRmb3JtSW1hZ2VTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOwordm9pZCBjbGVhclBsYXRm
b3JtSW1hZ2VTdWJpbWFnZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpOworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApp
bmRleCAxYjA3Zjg2ZjM5MzE3OGY0Y2Y3ZmU4M2E4MTQ3ODA4NGViZjIyODMxLi5hZDNjMWJiNzlh
ZWRjYWFlM2U3OTdmZDhmYjJkNmFhYTg2ZWQzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKQEAgLTQ0LDEwICs0NCwx
MCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRm
b3JtSW1hZ2VQdHIpID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5G
cmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKICNlbmRp
ZgogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgK
aW5kZXggOGE1ZjU4NzBhMzUzNTczZDg2OTc2NjkzOTE1NGQ5N2I3MjJjZmMzMC4uZmIzYmZjZGMy
YmUxZTc4MTY2NGEyNDE5NDkzZTk1YmE1Mzc4N2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAg
ICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7CiAgICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDI1YmYxNTlk
ZTQ0NTM0OTE2ZjkwYWJkMDc1M2ExMTU1NmFjNTEyYjcuLjhjZGZjNzFiNjQ1MDNkZTMzMzE2MzU5
Y2QzMzlkZDBkMzQ4NGIxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckFW
Rk9iakM6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikK
K1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmKQogewogICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA2YTZmZDcxODNhZTg5ZDM4NTgyYjYxMWRkNzAx
NmE1M2FlOWMxZWE2Li4yNmIzZDc4ZmUxYjBjZTZkNDc2ZDJhNWU3Mzg3NWUzOTBlM2VkZTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFp
bGFibGVGcmFtZSgpOwogICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpOwogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkgZmluYWw7CkBAIC0zNDMsNyArMzQzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdl
YkNvcmVBVkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1h
Z2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1faW1hZ2VS
b3RhdGlvblNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvVGV4dHVyZUNvcGllckNW
PiBtX3ZpZGVvVGV4dHVyZUNvcGllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGYyOTQ4ODE2ZWRkZTc5ZTc4YTE5MzFkNWJjNmQzZWNlZWI1ZDg0N2YuLjNhYmJhOTJl
NTA5YTIxNDA0OWQ1MDQxNmQ2NTI0MDFjNDYxODc5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNs
eSk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UobV9sYXN0SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KQpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogewogICAgIGlm
ICh2aWRlb0Z1bGxzY3JlZW5MYXllcikKICAgICAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5
cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDog
bnVsbHB0cik7CiAgICAgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKIH0KIApAQCAt
MjI5Myw3ICsyMjkzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogCiAgICAgTW9ub3RvbmljVGltZSBz
dGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCi0gICAgbV9sYXN0SW1hZ2UgPSBtX3BpeGVs
QnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1
ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcGl4
ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVs
QnVmZmVyLmdldCgpKSk7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3JlYXRpbmcg
YnVmZmVyIHRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMoKSk7
CiB9CkBAIC0yMzE0LDggKzIzMTQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAs
IENHSW1hZ2VHZXRXaWR0aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9s
YXN0SW1hZ2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFn
ZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBG
bG9hdFJlY3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBtX2xhc3RJbWFnZS0+c2l6ZSgpKTsKKyAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbV9sYXN0SW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91
dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQgYW4gQVZB
c3NldEltYWdlR2VuZXJhdG9yIGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0IG5vdCBo
YXZpbmcgYW4gYXZhaWxhYmxlCiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQgbm93IHRo
YXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KQEAgLTIzNDEsNyArMjM0MSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1h
Z2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdo
dCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdElt
YWdlKCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApp
bmRleCBlN2JmN2E3NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFiLi5hMGFmOWI4NzRj
YWU4MmFiZDNmODA5MTBmNmJhMjlkOWUzOTRiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aApAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVs
QnVmZmVyKCk7CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMzAxLDcgKzMw
MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3BlcmZvcm1UYXNrT2JzZXJ2ZXI7
CiAgICAgUmV0YWluUHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xh
c3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gbV9y
Z2JDb25mb3JtZXI7CiAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4gbV9k
ZWNvbXByZXNzaW9uU2Vzc2lvbjsKICAgICBEZXF1ZTxSZXRhaW5QdHI8aWQ+PiBtX3NpemVDaGFu
Z2VPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggOTI1YmY0ZTFmOTBi
NTRjNDI4NjZjMjY1ODA1OWM2MTFhY2MxYmIwZS4uOGJjNDhmYTNlMzI0NTI1Njc1ZDllOGM4OGRm
OWYzYWMxNzQ0MDg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTY0LDEwICs1
NjQsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRpbmdQcm9ncmVzc2VkOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQog
ewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5nZXQoKTsK
KyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQpAQCAtNjA3LDcgKzYwNyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoKQogICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9
CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2UgPSBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZl
cihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02
MjYsOCArNjI2LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICAgICAgcmV0dXJuOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwg
Q0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAg
IEZsb2F0UmVjdCBpbWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXplKCkpOworICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwg
aW1hZ2VSZWN0KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBv
dXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkKQEAgLTEyMTksNyArMTIxOSw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwot
ICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UpOwor
ICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBt
X2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDA4OGYxZDkyYzk3
ZjM5MjViZjlhOWJjMGIyMzc5ZDM1MGJkYmJjYTkuLjg3ODA5NmFkYmQ2ZTI1ZDQzMTg2YmVlYjBi
YWRmNDY4Zjg2Y2U0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yMzIsNyArMjMy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ3VycmVudEZyYW1lUGFpbnRlcigpID0gZGVmYXVsdDsK
ICAgICAgICAgdm9pZCByZXNldCgpOwogCi0gICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
Z0ltYWdlOworICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7CiAgICAgICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gbWVkaWFTYW1wbGU7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBwaXhlbEJ1ZmZlckNvbmZvcm1lcjsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDk4OWZiODlkYTJhYjM4ZDFmMWMxN2Q1YWZkMWNh
ODIyNjAyMjdjYjQuLjlhNTM2ZGI5MmIyZTA0MmQ4NzgxNGE5ZWVhYWE5M2VlYzgzODk4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTc2Miw3ICs3NjIsNyBAQCBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVh
dGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFu
YWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID8gbV9pbWFnZVBh
aW50ZXIuY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QgZnJhbWUpCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxC
dWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIubWVk
aWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAg
bV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9y
bWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CisgICAgbV9pbWFn
ZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4
ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVy
KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpCkBAIC05NzUsMTQgKzk3NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDbwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50
ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBtX2lt
YWdlUGFpbnRlci5jZ0ltYWdlLmdldCgpOwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwg
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOworICAgIGF1
dG8mIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VS
ZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKICAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0p
CiAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCpt
X2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJh
bnNmb3JtID0gKm1fdmlkZW9UcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVz
dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChkZXN0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zv
cm0pOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgp
LCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1h
Z2VSZWN0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKaW5kZXggOTlkODViM2YyZGM4ZTc4YTU2ZDJi
OTExN2RjZmIzY2Y4MGJmNzU4NS4uYjY5YjEwNzA4OTY3Zjg3NWRiODBhZWM5ZDA5YzM2Y2RiM2Fj
MmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpD
LmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogdmlkZW9GdWxs
c2NyZWVuTGF5ZXIoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSBm
aW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUo
KSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVW
aWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRpdmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9y
bUltYWdlUHRyKSBmaW5hbDsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXF1
aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xh
eWVyTWFuYWdlck9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KaW5kZXggZjY3OTUzZDYzMTNi
N2Q5YjYyYWM2ZDFhNmU2NTZiODA4ODQ3NzA0ZC4uZjExOGRiNWMzYzVjYmViZWRlNDExZWE1NGQ1
ZWFmNmVjYTJhZjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIFBsYXRmb3JtTGF5ZXIqIFZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQzo6dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJNYW5hZ2Vy
T2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0ciBjdXJyZW50SW1hZ2UpCit2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyIGN1cnJlbnRJbWFnZSkKIHsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2
aWRlb0Z1bGxzY3JlZW5MYXllcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
MTY3LDcgKzE2Nyw3IEBAIHZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhCiAgICAgc3luY1RleHRUcmFj
a0JvdW5kcygpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9G
dWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1J
bWFnZVB0ciBpbWFnZSkKIHsKICAgICBpZiAobV92aWRlb0lubGluZUxheWVyKQogICAgICAgICBb
bV92aWRlb0lubGluZUxheWVyIHNldENvbnRlbnRzOihfX2JyaWRnZSBpZClpbWFnZS5nZXQoKV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAppbmRleCA1MmQ5YjFlODdjODAzNGQ2Zjc4OTYwNmMzNzc2MjUyYmZjNWQ0
YzUzLi5jYmRmODIxZDg2NTFkNTI2ZTViZDA4ZmEzMjNkMDlkZDE5YjY3NDE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKQEAgLTI1OTMsNyArMjU5Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVD
b250ZW50c0ltYWdlKCkKICAgICAgICAgLy8gRklYTUU6IG1heWJlIG9ubHkgZG8gdHJpbGluZWFy
IGlmIHRoZSBpbWFnZSBpcyBiZWluZyBzY2FsZWQgZG93biwKICAgICAgICAgLy8gYnV0IHRoZW4g
d2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBjaGFuZ2VzPwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE1pbmlmaWNhdGlvbkZpbHRlcihQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcik7Ci0gICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS5n
ZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29u
dGVudHNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKICAgICAgICAgbV9wZW5kaW5nQ29u
dGVudHNJbWFnZSA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKG1fbGF5ZXJDbG9uZXMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKaW5kZXggODg1Zjc5OWY2ZjExZDRmOTU1MWY1NWFjNDZmY2UzY2U0ZThjZTk2MS4uYWVm
M2MyNjhmNWQxMjRkNDc5ZTZkZmZhZDhjMzQ3M2RjOTllNmEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgY2xhc3MgRGlzcGxheUxpc3Q7CiAKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7
CiBjbGFzcyBJbWFnZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7
CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMg
UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKQEAgLTYwMCw4ICs2MDEsOCBAQCBwcml2YXRlOgogCiAg
ICAgQ29sb3IgbV9jb250ZW50c1NvbGlkQ29sb3I7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fcGVuZGluZ0Nv
bnRlbnRzSW1hZ2U7CiAgICAgCiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1f
YW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9iYXNlVmFs
dWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggOWE1N2ViZTJk
NTVhMDc5YzM3ZjFjYWI5NmE3ZmI3M2Y1YmY0MzliYS4uMzg3ZThjYjkyNWQwZWNhMjZkYTNjNDI3
NTc4MTdiMDI5YjVlMDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTmF0aXZl
SW1hZ2UuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xNzQsMTYgKzE3NSwxNiBAQCBlbnVt
IFBhdGhEcmF3aW5nU3R5bGUgewogCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVy
SW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxh
eWVyU2l6ZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewotICAgIGlmIChhdXRv
IHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5n
ZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSks
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hhZG93U3RhdGUuZ2xvYmFs
Q29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRl
KCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsICpuYXRpdmVJbWFnZSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXll
ck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSks
IHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xv
YmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIAogLy8gRklYTUU6IFRoaXMgaXMg
bW9zdGx5IHNhbWUgYXMgZHJhd1NoYWRvd0xheWVyQnVmZmVyLCBzbyB3ZSBzaG91bGQgbWVyZ2Ug
dHdvLgogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFn
ZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNo
YWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFs
cGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1h
Z2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3
TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCAqbmF0aXZlSW1hZ2UsIGRlc3RSZWN0LCBzcmNS
ZWN0LCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTE5MSw4ICsxOTIs
OCBAQCBzdGF0aWMgdm9pZCBmaWxsU2hhZG93QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJgogewogICAgIHNhdmUocGxhdGZvcm1Db250ZXh0
KTsKIAotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGNsaXBUb0ltYWdlQnVmZmVyKHBsYXRmb3Jt
Q29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KGxheWVyT3JpZ2luLCBleHBhbmRlZElu
dFNpemUobGF5ZXJTaXplKSkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBjbGlwVG9J
bWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkp
KTsKIAogICAgIEZpbGxTb3VyY2UgZmlsbFNvdXJjZTsKICAgICBmaWxsU291cmNlLmdsb2JhbEFs
cGhhID0gc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGE7CkBAIC04NjAsNyArODYxLDEzIEBAIHZvaWQg
ZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
aWxsU291cmNlJiBmaWxsU291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxv
YXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIE5hdGl2
ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxv
YXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3sKKyAgICBp
ZiAoYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpKQorICAgICAgICBk
cmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworfQorCit2b2lk
IGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsK
ICAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCmluZGV4IDUwNWMw
YWY0N2Q3YTBhNTBlOWMxOTA2NmRkOTNkZTU5NjFkNjY5MWEuLmM4ODgxMjE0OTVhMmUyZDkyZjBj
MzRjZWNmNjY2MGE0NmY5YWY2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCkBAIC0xNDMsNyArMTQzLDgg
QEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmlsbFNv
dXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxv
YXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxjYWly
b19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgRm9udFNtb290aGluZ01vZGUpOwogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwog
dm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
T3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5v
cm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhm
MGM3MDc2ODIwZDA2YTU1YmE1YzU1ODI0OGMzLi5mZmRiNGE3YTc1MTk5ODIzZTdjNzRhOWMxMjE3
YjJhOWI1MzU5ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQg
KzEyMywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0
Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0
YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRm
b3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKCpwbGF0Zm9y
bUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRl
cnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjY2LDggKzI2Niw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigq
cGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICBpZiAoYXV0
byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpKQorICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgp
LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIElu
dFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKQEAgLTY4MSw4ICs2ODEs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1D
b250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgaWYgKGF1
dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAg
ICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRHTENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCmluZGV4IGZhZGIyNDNlNjc4YjcyN2YxMGIw
YjZiM2IyZTkwZjA1OGJkMzkyNWUuLmM2YWE3NzE4ZTliNDM0MTViMjUwNjQ5M2VhNWFjYzY4MDU3
ZjgxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCkBAIC01Niw5ICs1Niw5
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2lt
YWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJj
ZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
c291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIDEu
IEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJl
bXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhG
RiBmb3IgZWFjaCBwaXhlbCwKICAgICAgICAgLy8gd2hpY2ggaXMgdHJ1ZSBhdCBwcmVzZW50IGFu
ZCBtYXkgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlIGFuZCBuZWVkcyBhZGp1c3RtZW50IGFjY29y
ZGluZ2x5LgogICAgICAgICAvLyAyLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxDYW52YXNFbGVt
ZW50IGlucHV0IGluIHdoaWNoIEFscGhhIGlzIGFscmVhZHkgUHJlbXVsdGlwbGllZCBpbiB0aGlz
IHBvcnQsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggZmEwOWI4
MTNlYTQzNTE2NjBhZWM1NjEzMTEzYjMzZWE4OTY2MzAyNS4uNjBjMTg3MjEzMmQ4YTg1ZWNiYTUw
M2M5ODM0ZWMzNzhkNTA1MTRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCkBAIC0yODcsMTcgKzI4NywyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZQogICAgIH0K
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAg
IGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJh
d05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0
ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0
Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1Bh
dHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwg
SW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpA
QCAtNDIzLDcgKzQyOSw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlw
Qm91bmRzKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250
ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFn
ZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApp
bmRleCA4YTkzN2RhMjM5ZDZkNmNkZDBhMDQ4Y2NjZDgzNjc5MTA1ZDk3Y2FjLi4zMWEwZjU0MDBl
ZTg0ZTA4YjBjNWRkNGY4ZTUyZjE5NzM1MzVkNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZC5jcHAKaW5kZXggYWM0YjFmNzkwNzY4NGNhNmRiODYyNzIxMzk5N2Q0YjU2YTgyMGU4Zi4uNjZl
MGI4ZjRlYjU3MjBlYmI2MzcwYTBjNTQ5YjNkMmI2YTI0OGEyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdAogICAgIGNvbnN0IGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlID0gZGVzdENvbnRl
eHQuc3RhdGUoKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0
Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIGRlc3Rp
bmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgZGVzdGluYXRp
b25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZSkpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCAqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMs
IGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgZGVz
dGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEsIFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShk
ZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0
KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5n
ZXQoKSwgbV9sb2dpY2FsU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbV9sb2dp
Y2FsU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRp
b25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JT
cGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA0
ZjFmNzU3MjZhYTgzZDg0YWRiYjM3MmFlZjc2ZGZjNGM4ZWY3Yjg1Li44ZTYzNmQ2NTJmMjg3ZjM4
ODllZjk4MTUwYjczNjhiNjVkYTEzZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdW5zaWduZWQgSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX3N1cmZhY2UuZ2V0KCkpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZp
b3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6IHsKQEAgLTc3LDE4ICs3NywxOCBAQCBO
YXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
ci5nZXQoKSwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKICAgICAgICAgY2Fpcm9fcGFpbnQoY3Iu
Z2V0KCkpOwogCi0gICAgICAgIHJldHVybiBjb3B5OworICAgICAgICByZXR1cm4gTmF0aXZlSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGNvcHkpKTsKICAgICB9CiAKICAgICBjYXNlIERvbnRDb3B5QmFj
a2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gbV9zdXJmYWNlOworICAgICAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShtYWtlUmVmUHRyKG1fc3VyZmFjZSkpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRv
SW1hZ2UoKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogewogICAgIEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBl
KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFICYmIGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBKQpAQCAtMTAwLDcgKzEwMCw4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CiAKIFZl
Y3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OnRvQkdSQURhdGEo
KSBjb25zdAogewotICAgIGF1dG8gc3VyZmFjZSA9IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2Uo
KTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpOwor
ICAgIGF1dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKSA6IG51bGxwdHI7CiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChzdXJmYWNlLmdldCgpKTsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGE2OWQ1ZWUwZmY2M2Y3Nzk1ODI1ZGM2NzY2ZDZk
MTZiNzI2MWQ2NWUuLjJiYjQwMjI2NTBjZjljMDFiNDZhMjJmODEzNmZmMGNiZjVlYjI0MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZCB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+JiYpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgp
IGNvbnN0OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFn
ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBtdXRhYmxlIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1h
Z2VDYWlyby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YzBmODFjYjM0MTkw
Y2IzNzNiZDg0MzQxNThiNGQwMzMwMWFiMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi0jaWYgVVNFKENBSVJPKQotCi0jaW5j
bHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQotewotICAgIHJldHVybiBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUo
aW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOwotfQotCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIHJldHVybiAhaW1hZ2UgfHwgY2Fp
cm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xP
UjsKLX0KLQotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXpl
KGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAg
IGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNF
X1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgdW5zaWduZWQqIHBp
eGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NS
R0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1
YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGNlNTI3ODA2
MGEwZGY1YzEwZmQxMjhmOTZkZjg5M2FmODZhMDJjZjEuLjc0MWM5NmYyNDdiYjJmMmNiOTY2YWVl
YmQ4ZTY4ZGMzZTg2YTNkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzUsMTAgKzM1LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAg
ICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3Vy
ZmFjZShzdXJmYWNlLmdldCgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0ZXIgc3BhY2Ug
YW5kIHVzZXIgc3BhY2UgaXRzZWxmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lODMxYzQwMGVjZjE4ODhhMmQzMjc1ODA3MGFmNDRkMDZjNWMxODA1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFn
ZUNhaXJvLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgi
CisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50
U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sK
KyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKSA6IEludFNp
emUoKTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxwaGEoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgaW1hZ2UpCit7CisgICAgcmV0dXJuICFpbWFnZSB8fCBjYWlyb19zdXJmYWNlX2dldF9j
b250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBw
bGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
IGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJ
bnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIGlmIChjYWlyb19z
dXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0Up
CisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGlt
YWdlLmdldCgpKSk7CisgICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENv
bG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKK30KKwordm9pZCBjbGVhclBsYXRmb3JtSW1hZ2VTdWJp
bWFnZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhN2Ri
ZTZlNmJlNWY1NjI1MmMzYzcwYjEyODgwZTNiNjQ0YmE0Yzk5Li5mZTlhZDM3NjczMzA3ODY1ODQw
YTNmYzAwM2Q1YTAxNmYwODZmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yNzcsNyArMjc3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBt
X2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0
IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC00NDQsMjMg
KzQ0NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2Ug
PSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMu
b3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxv
YXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0g
Q0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6
ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkK
LSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBz
dWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29k
aW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAg
ICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3
aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAg
ICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0
KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5S
ZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0K
IAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ug
d2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAg
ICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNo
YW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcg
PSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFn
ZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9
PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAh
c3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2Ug
Y2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8g
d2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFn
ZSB0byBmaXQuCkBAIC01MDksNyArNTA5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAg
ICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25S
ZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0
byBpbWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51
bGxwdHI7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwog
ICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2Vk
IGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRl
YzkxMjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uNjYxYTAzY2M0YTBkYTNlZDNhOTdj
Yzk4ZjNlYzUzNjUxZTNhMjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMzOCw4ICsz
MzgsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFn
ZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmICghbV9jZ0ltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
bV9jZ0ltYWdlLmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodCht
X2NnSW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1fY2dJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0
aChpbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaQogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2Uu
IFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBu
b3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1h
Z2UuZ2V0KCkpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENv
bG9yU3BhY2UoaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dD
b2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9y
U3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0
bWFwQ29udGV4dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
CiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtD
R0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0
eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1f
aW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CisgICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1f
aW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBO
b3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIGNv
cHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7Ci0g
ICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29k
ZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Yml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFn
ZTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRz
UGVyQ29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9
IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fY2dJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UgPSBtX2NnSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0g
Q0dJbWFnZUdldEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21w
b25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVs
IC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5m
byA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlh
blNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJp
bmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZl
ciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Ob3Ro
aW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAg
IHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dp
dGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhh
KQogICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYz
LDE0ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRy
YWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNv
dXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0
YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVy
KGltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZv
aWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNpZ25l
ZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1h
Z2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBieXRlc1BlclJv
dyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFk
ZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAg
ICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsg
MTsKQEAgLTUyOSw4ICs1MzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgICAgICBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1h
Z2VQaXhlbHMsIGRhdGFTaXplLCAwKSk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0
LAotICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgs
IDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKKyAgICAgICAgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAg
IC8vIENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNp
emVkIG9uCiAgICAgLy8gdGhlIHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUg
b3V0IHRoZSBjb3JyZWN0CkBAIC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y28KICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJh
bnNsYXRlKDAsIC1pbWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7
Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNS
ZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJh
dG9yOjpDb3B5IH0pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VT
aXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENv
bXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAw
ZjFmYTVjMTdiMy4uOGM1YWJmN2M5M2U3OTcxM2Y3MTNhNmRiZGU5YmMwMTdmMjFmODliYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtNzQsMTcgKzc0LDE3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBp
bWFnZSwgY29uCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVm
PiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFj
a2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAg
ICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpLCBiYWNrZW5kU2l6ZSkpOwogICAgIGVsc2UgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6
ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRo
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkp
OwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRT
aXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBp
bWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgaWYgKCFp
bWFnZSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFw
SW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
aW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0
aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lk
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250
ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3Rv
cmUpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1f
YmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkBAIC0xMzgsNyArMTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0
aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRp
KTsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxB
cnJheTsKIAogICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU4
LDEwICsxNTgsMTAgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6
OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKIAogICAgICAgICBpbWFnZSA9
IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhl
bEFycmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9u
cy53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0
IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0
aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9u
OjpZZXMpIHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9y
ZSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNl
c3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUlt
YWdlKCk7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwg
NCAqIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShj
b250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgo
KSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwCmluZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjZj
MDMzYzYzODM4YWZlMWEwZjYyN2Q2YjQ0YTE1NDZmM2ZlZWU3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTEwNywxNyArMTA3LDE3IEBAIEdyYXBoaWNzQ29udGV4
dCYgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVy
biAqbV9jb250ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25z
dAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3
aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAg
ICByZXR1cm4gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCkpKSk7CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRo
KCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAg
ICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZv
LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKLSAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3
YTU0OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2Vi
OGIzZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4
OTcxMGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1h
dDo6QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2Uo
KSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lu
a0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFj
ZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkp
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0
YTkwNDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2
YmVhODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNH
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
CiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlv
bnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUw
NmRkZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzVi
ZDljYjY0NmE1YmFkZWJkYWRjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFn
ZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0j
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgot
I2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlKQotewotICAgIHJldHVybiBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwotfQot
Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQot
ewotICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2Uu
Z2V0KCkpOwotICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExh
c3QpICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7Ci19Ci0KLUNvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsK
LSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAx
KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRd
OyAvLyBSR0JBCi0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVm
KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
QmlnKSk7Ci0KLSAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAgIHJldHVybiBDb2xvcigp
OwotCi0gICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0Js
ZW5kTW9kZUNvcHkpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7Ci0KLSAgICBpZiAoIXBpeGVs
WzNdKQotICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7Ci0KLSAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNd
LCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFszXSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdl
KQotICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKGltYWdlLmdldCgp
KTsKLSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2MjRmNjI3
M2MzYjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYw
Nzg3ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCisg
ICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUlt
YWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJl
dHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCku
Z2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcp
OworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdl
LmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5n
KTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3Ig
eVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFs
c28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3LDEwICs4
NCwxMCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3Jl
cGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0
ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcg
aW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9
IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgaW1h
Z2UgPSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxi
YWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxl
YXNlQ2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2Us
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxp
bmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4g
Q0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAs
IHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNh
bGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OTAxYzBiNDViZDNl
ODgzMGI1NGU0YzliOTA0MDMyM2NjZmYzOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENH
KQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRTaXplIHBsYXRmb3JtSW1hZ2VT
aXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIHJldHVybiBpbWFnZSA/
IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOworfQorCitib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBo
YShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBDR0ltYWdlQWxwaGFJbmZv
IGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gKGlu
Zm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFn
ZUFscGhhRmlyc3QpOworfQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwg
cGxhdGZvcm1JbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVy
biBDb2xvcigpOworCisgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQorICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAgaWYg
KCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIENHQ29udGV4
dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOworCisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0
dXJuIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOworCisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25l
bnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUg
LyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworfQorCit2
b2lkIGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBp
bWFnZSkKK3sKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworI2VuZGlmCit9
CisKK30KKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAwMmFkYTBkMWIxOTI0NzEzZmFlNTg0ZWVhMTA3
ZDlkYTM0MmRkNzA0Li4zOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBA
IC0xNzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUlt
YWdlIGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigq
c291cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBbQ0lJ
bWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQo
KV07CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNv
cHlOYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8
Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1h
dHJpeChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8
Q0lJbWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAppbmRleCAxYzliN2ExNDFkNDJiZTZjYjVjYTk3Njg4ODFhNzE1YWY4MWFkNTIxLi5jN2VkZDc1
OGQ5OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBmMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAg
ICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAs
IG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggODJiMGNlMTk3YzEyY2U4NGQz
MTc0MWE2OWNkZTFhNDIyYTFkM2Q1Ny4uMmY3NmVjYWY2ZjgzNzdlYjRiZGNhNjMxNzkyYmU3MzAw
NzlmNGRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMzQ2LDcgKzEz
NDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9
IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblJlY3Q7IH0KQEAgLTEzNjAsNyArMTM2MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgUmVm
PE5hdGl2ZUltYWdlPiBtX2ltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBG
bG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAg
LTEzODAsNyArMTM4MCw3IEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxEcmF3TmF0
aXZlSW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQdHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlZjxOYXRp
dmVJbWFnZT4+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAppbmRleCBmMTQyOWQ4M2E5MzVlYmQ1MWE2ODk1NzVlMDU4ODdlYjBiNTEz
NzhkLi5iZjNjYjM0MDE0MWQzZWY3YTAxNmU0ZTllZWM1N2NhZWVhZGRhY2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9p
ZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlciwgY29uc3QgRmxvYXRSZWMKICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGY5NTFjZmFhMmNhY2M5NmQ0YzFhMThhMjVm
YTU4OTYwNzkyMjQ2ZDQuLjMzNTM1OTkzMjIwMGRjNGQzYjU3MmExZGIxZDkzNjU5ZmE3MjQxZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTA2LDcgKzEwNiw3
IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggZGM5OTRiNzMx
ZmE4OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJiN2Q1N2E5MTY1
MTRlNjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSksIHByZXNlbnRh
dGlvblNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0Cisg
ICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1f
aW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1faW1h
Z2UtPmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdl
KCkubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2b2lkIGRyb3BJ
bWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHVuc2ln
bmVkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5z
YWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1f
c2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKaW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3ZC4uNTg2OWQ4
Yzg2YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFt
ZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmluYWwgeyByZXR1
cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5ZDhiYjliMjJl
MTEwZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUzNmEwYWEwMDVh
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAogICAgIHJldHVy
biBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KCpsYXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3ZGJjNDk5YjUx
ZGFlYi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2LDcgKzIxNiw3
IEBAIHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9y
bUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51
bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0
ZUVuYWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4OTE0ZGEzYTM5
NzAxZmRkZDZhNjYxLi43MzgwZWJmNDc2NjAxY2QwZDhkZmMzNmJmNDg4YTE4MDI0N2MwOGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5j
cHAKQEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1Bp
eGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1cmZhY2UgPSBu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNlID8gY2Fpcm9T
dXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgxMzZjMWZmZjQ1
YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYwZDdiMTcxZDI2
NjQ0NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSWNvbjo6SWNv
bihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkK
IHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUlj
b25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJY29u
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKIAogICAgIGNv
bnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6
SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdldCgpLCBzaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShtX2Nn
SW1hZ2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5MDhmMTA3NjMy
ZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLmNhZDliYjI3NTNlMzRlZTE5NWJhZTViNTU4
Njc1M2MxMjY4MGYzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gSW1hZ2U6Om51
bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJl
cHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2ZUltYWdlcykK
K1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29u
c3QgVmVjdG9yPFJlZjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7CiAgICAgLy8gSWYg
bmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMgaW1h
Z2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0
byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhh
bmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFn
ZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbmF0
aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZElt
YWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CisgICAgICAgIENH
SW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFs
aXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKQEAgLTEyOCw3ICsxMjgs
NyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gQml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSgpCiAg
ICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IGRhdGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBuYXRpdmVJbWFnZSB9KTsKKyAgICBhdXRvIGRh
dGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBtYWtlUmVmKCpuYXRpdmVJbWFnZSkgfSk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggYjAwNzk5ZmU3ZDIyMTRjNTUwYTgzYTM3YWYxODg3YTI1
MDlmMmU2NC4uOWYxMTI0ZmVhNzA3NjZlNmUxYzY0YmRiNWM3YzYzYjBhZTlhNDU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2
b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRp
dmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0
byBzaXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0g
ICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxw
aGEobmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRl
eHR1cmU6Ok5vRmxhZyk7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUs
IG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6
IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNFKENBSVJPKQotICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwog
ICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0
KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9z
dHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggOGJjNWQyN2JlNjM1ZWZkZDVhN2Qx
ZjZjNDczZjI4ZDg4ZjI5NjU4YS4uNTliNTJjZGUyNGRmODE2ZWVhOTk5MjgzMjhhMDIxODY4NDE5
MTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKQEAgLTU1NCwxNCArNTU0LDE0IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uCiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KIAotdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6
IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWly
bzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBk
ZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYg
cmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8
MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAg
ICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBh
cmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFy
Zzw1PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykg
b3ZlcnJpZGUKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAKICAg
ICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29u
dGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdl
PihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG1ha2VSZWZQdHIoc3VyZmFjZS0+
cGxhdGZvcm1JbWFnZSgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTU5Myw3ICs1
OTMsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNp
bmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92
ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPERyYXdQYXR0ZXJuPihtYWtlUmVmUHRyKHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKSks
IEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpA
QCAtMTA3OCw3ICsxMDc4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFIKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZl
cj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS5nZXQoKSksIGRlc3RSZWN0KSk7Cisg
ICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PihzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpLCBkZXN0UmVjdCkp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmgKaW5kZXggNjkxZTc0MTgwMDNlNTc1OGE2MDQ0ZjNjOTc5MWIzMTA4YWQzN2My
Zi4uZGQ3OGM2YWNhYjA1ZDkzMTg0NWI5ODZiNWJkNzJjYWM5NzJmYzc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjks
NyArNjksNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
ZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWVi
Njc5NWZkMDdmMTUxNDI0MTgwYzhhYjVkMGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0Yjdj
YTM1MWM3NmY0NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICBhdXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250
ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29u
c3QgY2hhciogaW1hZ2VEYXRhOwogCiAjaWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UuZ2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlID0gZnJhbWVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEoc3VyZmFjZSkpOwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3N0cmlkZShzdXJmYWNlKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVh
OTlkYTQ0NGZhMWUzOGYuLjQwNjMzYTAxOWRjZGQzMDdlMjEwOGQ3NTk2ZjhkZTYwYWM5MzBhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyAr
MzksNiBAQCBSZWY8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNz
TGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNz
TGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGll
bnQpCi0gICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VN
YXNrKE5vQ2hhbmdlcykKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1
Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQsMjIgKzI5MywyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlm
IChpbWFnZSkgewogICAgICAgICAvLyBNYWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRo
ZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1
bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFs
aWQgd2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMg
Y29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0
Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5n
ZWQuCiAgICAgICAgIC8vIFRoaXMgYXNzdW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0
LgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRy
KQorICAgICAgICBhdXRvIG5ld05hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKG5ld05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyKQorICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRpdmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJbWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJ
bWFnZSkKICAgICAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENv
bnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVD
b250ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRy
OworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1f
Y29tcG9zaXRlZEltYWdlID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggM2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0
MTRmNDE1NC4uNThmNGYzNjVkMjU3MzQ3NzI5MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAt
MTU1LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVy
OwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRl
ZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwor
ICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAg
ICBpbnQgbV9jaGFuZ2VNYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4
Mzc4ZmNmZDRkODBkOTUzLi43MTMzOTI0YzkxYjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcApAQCAtMTM4LDcgKzEzOCw2IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAg
ICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZFVwZGF0ZVBsYXRmb3JtTGF5ZXIoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAg
LCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVk
VGltZXIoKnRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRU
aW1lckZpcmVkKQogICAgICwgbV9yZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRp
bmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKQogewotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2Ug
PyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYg
KG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
ID09IG5hdGl2ZUltYWdlUHRyKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21w
b3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZl
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7
Ci0gICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBt
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXll
cjo6c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7
CkBAIC04NDksMTEgKzg0OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRh
LmFuaW1hdGVkQmFja2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRl
cm1pbmUgaW1hZ2UgYmFja2luZyBwcmVzZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQg
aW1hZ2Ugc291cmNlLgotICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAg
IGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3Np
dGVkSW1hZ2UpOwogICAgICAgICBhdXRvJiBpbWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAg
ICAgICAgdWludHB0cl90IGltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmlt
YWdlKTsKLSAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1
aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAv
LyBSZXNwYXduIHRoZSBJbWFnZUJhY2tpbmcgb2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdl
IGNoYW5nZWQuCiAgICAgICAgIGlmIChtX25pY29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXgg
ZWU4ZjU3ODc5YWRhNmM5MWYwMzk5MTkyZWY5NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQy
ZGI2YTllNjZiMDI0MjM1ZDM3MjRhNjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZh
dGU6CiAgICAgfSBtX25lZWRzRGlzcGxheTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3Np
dGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAg
IFRpbWVyIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcj4gbV9yZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0MkRPcGVyYXRpb25zLmNwcAppbmRleCA4ODM1Zjg4ZDFiYmNkMjAzYzMyNTYyZGEyNDE0Y2Jj
MjdiNmZiMGY4Li41MjVhMTYzNDFlYmQ1ZmU2NDE5ZDgyZDgwYTA0MzA0ZGJhNzIyZDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0MkRPcGVyYXRpb25zLmNwcApAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNl
JiBmaWxsCiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
b3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0
IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdQ
bGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElX
SUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZlSW1hZ2VTaXplID0gYml0
bWFwU2l6ZShpbWFnZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CkBA
IC04MTMsMTAgKzgxMywxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUoZGV2aWNlQml0bWFwLmdldCgp
KTsKLSAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBz
aGFkb3dTdGF0ZSk7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZp
Y2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGds
b2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2
b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNv
bnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBiaXRtYXBTaXplID0gaW1hZ2Ut
PkdldFNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCmluZGV4IDc0YTEwMzY3MDlmMzg1NWNlOGQ1
NGY3NWVjYzM2ZjMxZDg2MzJjNWEuLjVkMTk2MDgwY2RlNDU1MDcwNWMzOTdlZjk5Yzk2Yzg0OTY4
Nzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIGNsZWFy
UmVjdChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lk
IGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGaWxsU291cmNlJiwg
Y29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRm9udCYsIGRvdWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiYgZ2x5
cGhzLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsQWR2YW5jZXMsIGNvbnN0IFZlY3Rv
cjxEV1JJVEVfR0xZUEhfT0ZGU0VUPiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxv
YXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2ZUlt
YWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7
Ci12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0
bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCwg
Y29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0Zm9ybUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJh
d1BhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tl
U291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBDT01QdHI8SUQyRDFCaXRtYXA+JiYsIGNvbnN0IEludFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0
OTJlNmFhYzhlZDk3NGVjOTkuLjNhNjhkYzNhYTAxNTUzNjg0NjRmNTE3MjM1ZWMwYTMxOWY3ZDU3
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDcgKzIwNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0
MkQ6OnJlc3RvcmUoKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBD
T01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcAppbmRleCBjNTNkOGJmODVjMDk5Mzg4MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzLi44OGE2
NWY3YmJlYzNlYTE0ZTVkZTQ2NjRjNDhjMTAwNjFlZGJlMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtMjgzLDEwICsyODMsMTAgQEAgSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGlt
YWdlLCBjb25zdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFn
ZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxl
U2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYg
c3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3TmF0
aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4
dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1
ZWIzNzBiNzViYWRlMDM5ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2MuLmMxOTdiNDg5YzI5MjZjYTY1
OGQ3MzVlN2UxMzNmOTIxODBmZmM0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmgKQEAgLTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICAKKyAgICBi
b29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5Mjhl
M2FjZWYyMmU2OTdiNjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTli
Yzk0YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxh
dGZvcm1JbWFnZVB0ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdl
dEJpdG1hcCgmYml0bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpT
UkdCLCBudWxscHRyKTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRm
b3JtQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBO
YXRpdmVJbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBw
bGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4
dCwgUGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQog
ICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwg
bV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1
c2goKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQy
RDFCaXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2Uo
JmJpdG1hcFRhcmdldCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weQogCiAgICAgfQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRt
YXBUYXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3Rh
dGljIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFC
aXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25z
dCBJbnRTaXplJiBib3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8g
bmF0aXZlSW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwx
MSBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKElEMkQxQml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Is
IFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAo
bV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhh
dmlvcik7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1h
cFRhcmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFm
dGVyU2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFs
U2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4Nywx
MSArMTg3LDExIEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNp
bmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQo
aHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUlt
YWdlUHRyIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKGJpdG1hcFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgp
LCByZXNvbHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFS
ZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCkKIHsKICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5
MjQ2YzQ1N2RjMjYxLi4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJ
bWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVS
ZXNvbHV0aW9uKSBvdmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAg
TmF0aXZlSW1hZ2VQdHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4
NGY5M2I5ZDRlOTIxMzNkNTUzY2QzYTRiLi42ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIy
YzhkNDE2ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZlB0cjxCaXRtYXBJbWFnZT4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAgICAgLy8gVGhlIEJpdG1hcElt
YWdlIHRha2VzIG93bmVyc2hpcCBvZiB0aGlzLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
Z0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUo
Y2dJbWFnZSkpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNnSW1h
Z2UpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJt
cCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdo
dCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS53aWR0aCgpKSkgeworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAg
ICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSks
IHsgY29tcG9zaXRlT3AgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODky
ZTNjYWEyZTg1ZWJjZTM4MDVjMC4uMmNlYzk5ZGM3MjlmZTY1ZTA4NTRlZWU3MmRmYzRlZDdhZjA5
NTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNhaXJvV2luLmNwcApAQCAtOTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KGkpOwotICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8g
bmF0aXZlSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJ
bWFnZSB8fCBuYXRpdmVJbWFnZS0+c2l6ZSgpICE9IHNyY1NpemUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZh
Y2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY3VycmVudEZy
YW1lID0gbV9jdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0g
ICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNT
aXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwotICAgICAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1l
OworICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CisgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIHsgY29tcG9zaXRlT3AgfSk7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZy
YW1lOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNv
cnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJh
bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDIxYzE5ZWM2M2I1NDY5MGZjYzI5Y2Q4
MDZkMzQ3N2RhNjk2NGRjMzUuLjc3YjFhNGExODg4MWMwYjVhMjIzOTcwY2YwMTQ3NmUxZTkxZTYy
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQq
IHJlbmRlclRhcmdldCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3Qy
RDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFt
X25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaAppbmRleCA3NmQ3YWNhOTNlMzkyNDI3YjI2NTM1NGNhZjJlMzJlZWFjY2YxN2UwLi5jMGRj
YWZkNjk1NGM1N2RlYjM5MjA0ZTlmYmIwNmFkMGIxYzkxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2Ft
cGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdl
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2
ZUltYWdlRGlyZWN0MkQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGY3OGMy
MzhmMThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi0jaW5jbHVkZSAiQ29s
b3IuaCIKLSNpbmNsdWRlICJEaXJlY3QyRE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCi0jaW5jbHVkZSA8ZDJk
MS5oPgotI2luY2x1ZGUgPHdpbmNvZGVjLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQotewotICAgIHN0YXRpYyBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKLSAgICBpZiAoIWlt
YWdpbmdGYWN0b3J5KSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENM
U0lEX1dJQ0ltYWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlE
X1BQVl9BUkdTKCZpbWFnaW5nRmFjdG9yeSkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUND
RUVERUQoaHIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Ci19Ci0KLUlu
dFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAg
ICBVSU5UIHdpZHRoID0gMDsKLSAgICBVSU5UIGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkK
LSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7
Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCi17Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRDJE
MV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsKLSAg
ICByZXR1cm4gcGl4ZWxGb3JtYXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05PUkU7
Ci19Ci0KLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShp
bWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotCi0gICAgcmV0dXJuIENvbG9yKCk7Ci19Ci0KLXZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQotewotICAgIGF1dG8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCk7Ci0KLSAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFn
ZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1h
Z2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4g
dGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8g
bWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNy
Y1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUp
Ci0gICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsg
fSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAg
IGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZl
SW1hZ2UoKnBsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIHN1YnNhbXBsZWRJbWFnZVNpemUs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3Qy
RDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1h
Z2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotCi0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBzdWJpbWFn
ZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFn
ZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0
Zm9ybUltYWdlRGlyZWN0MkQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYTg2YmZmYWFmODM3Yzg2MGZiNGFl
ZDQzZDkyNmI2MWNmYWEyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJELmNwcApAQCAtMCwwICsxLDky
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKKyNpbmNsdWRlIDxk
MmQxLmg+CisjaW5jbHVkZSA8d2luY29kZWMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCit7CisgICAgc3RhdGlj
IElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkgPSBudWxscHRyOworICAgIGlmICgh
aW1hZ2luZ0ZhY3RvcnkpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IENvQ3JlYXRlSW5zdGFuY2Uo
Q0xTSURfV0lDSW1hZ2luZ0ZhY3RvcnksIG51bGxwdHIsIENMU0NUWF9JTlBST0NfU0VSVkVSLCBJ
SURfUFBWX0FSR1MoJmltYWdpbmdGYWN0b3J5KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFNV
Q0NFRURFRChocikpOworICAgIH0KKworICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKK30KKwor
SW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkK
K3sKKyAgICBVSU5UIHdpZHRoID0gMDsKKyAgICBVSU5UIGhlaWdodCA9IDA7CisgICAgaWYgKCFp
bWFnZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxT
aXplKCk7Cit9CisKK2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhhKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9y
bWF0KCk7CisgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhBX01P
REVfSUdOT1JFOworfQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9y
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29s
b3IoKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gQ29sb3IoKTsKK30K
Kwordm9pZCBjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworI2lmIENBQ0hFX1NVQklNQUdF
UworICAgIGlmIChpbWFnZSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1h
Z2UuZ2V0KCkpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1
cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUxZDY2ZDVj
MC4uZWRlZDdlOGRkMjNhYmIzNjBlOGRhYjQ0MzVmMzEyMDkzOGE1ZWU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2MywxMSBAQCBzdGF0
aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNv
bnN0IEludFBvaW50JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRl
cm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19j
dXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90Lngo
KSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsKICNlbHNl
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBhdXRvJiBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RT
cG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFkb3B0
R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX3N1cmZhY2UoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQo
KSwgc3VyZmFjZS5nZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3Qu
eSgpKSk7CiAjZW5kaWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwCmluZGV4IDZhMWE3M2Y5ZDdmZmUxMDhmNzZlOWI0M2IzYThmYjkz
ZjllMDNhMzIuLmFlZWNmY2Y1MjI3MGM1NWRiYWViYzEwY2UxMmFlM2I5MWI4M2JhZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdl
UmVmIGltYWdlLCBmbG9hdCBmcmFjdGlvbikKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJu
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogfQogCiBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjlj
YWU4Zjk3ODE1MTA0MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3
MGI1MWY1ZWY1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgU2Vjb25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1Bs
YXRmb3JtSW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1o
ZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2
ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCmluZGV4IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4
MzIyMmVjM2JiMzg1NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1h
QW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRl
eCBiODM1YTY5Y2JjNDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQz
MTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAg
bV9waXhlbHMtPnJlZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0
MGViZTc2YWYwMzFmYTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcw
NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzks
MTEgKzIzOSwxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgp
CiAKICAgICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2Uu
Z2V0KCkpLCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAot
ICAgICAgICBbXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAg
ICAgICBbXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAg
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAg
ICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7
CiAgICAgICAgIH0KICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2lt
YWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1w
bGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0o
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAg
ICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJl
ZlB0cjxNZWRpYVNhbXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1l
ZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaAppbmRleCBmZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZi
MjQ0YTQ4NDkzZDJhNWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVjsKIAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJh
bWVUeXBlID0gV1RGOjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4+OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8
UmVmUHRyPE5hdGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNz
IENhcHR1cmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExv
Z2dlckhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4
IDNmNmNiNmVkNWRmYTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLmIwNTlhMzI1MWQ4Yjk2
NTdiYTkwMTRjNDRmODA2M2FmODI3YjFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWMubW0KQEAgLTkxLDggKzkxLDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uKQogICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CiAKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3Jt
SW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgYXV0byBzYW1wbGVU
aW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21z
KS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJ
bWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOworICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFT
YW1wbGUocGxhdGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3Rh
dGlvbigpKTsKICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAxZGJl
ZDM2NTQ1NmUyMjgzYWQ0ZTBhZGFhMWI3Yzc1YzkzNzdjMmYxLi4zNGVkOWVmOGNmNGY4NjZjYTAz
ZmRjYTkzMDRhOTYwOTZiYzY1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEzOSw4ICsxMzksMTAgQEAgRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4
dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKICAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGlt
Zy0+bmF0aXZlSW1hZ2UoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0Nv
bnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShk
cmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybUltYWdlID0gc3JjSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkgeworICAgICAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOworICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBwbGF0Zm9ybUlt
YWdlLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdD
b250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
YWlyb1dpbi5jcHAKaW5kZXggM2E1ZTAwYmU2NzE4YjExODYyOTg2OGJhZmJhYzc5N2NlNmZlMDdi
NS4uMDQxNzY2YjcyYzUyMDMyOGI3NGNlNTljNjk4OGE0YzZiNDQyNWJhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0xNjIs
OCArMTYyLDkgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSog
aW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLjAs
IDAuMCwgMS4wKTsKICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKIAotICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKHN1cmZhY2UpIHsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZl
SW1hZ2UtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAg
ICAgIGNhaXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4x
MTFhNGIyYzM1NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lk
IFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1h
a2UocmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZz
ZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVj
dCA9IENHUmVjdE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAot
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdl
Lm5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFn
ZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKV07CiAKICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBw
aW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBS
ZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3Vu
ZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVu
c2lvbiAvIDIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCmluZGV4IDY1OWNkYjUzYWM1NmE2MjBiMDM5MTgzNjdhZmMyNWQxNjE3NWZhZWQuLmE4OTI0
OTZmOWJjMDA4Y2U5NjQ0ZGU2NmUyZmM4ZGNjOGVjZDZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRo
ZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8g
UGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0
aXZlSW1hZ2UgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCopCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KikKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAg
aWYgKCFtX3BhZ2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjgu
LjI4MjVmOWQzODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2NoZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5h
bDsKICNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVy
biBtX3BhZ2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1
ZjVlODMxYjMxYWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXgg
ZTY0NGY3YWNmMzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUz
YzU5MjI1NzM3MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4K
ICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250
YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjg1ZWQ1YzM3ZWY3NjgxMTQ0
NTgwMzU1YzlhYTQyM2FiMTg1YzEzYS4uMWZiNzMzZDVjMTU4OTAxZjYxYTM2NjM5MWRmM2Y5MDIz
YTc2OTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
MTgsNyArMjE4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAogICAgICAgICAn
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4NTVjOGJj
NTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uZTU3MTNlMzAxZjYwMjZiY2I2ZGI2MjFmNGVmNGI3ZTEw
ZjY1MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENH
SW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAKICAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwog
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwg
cmVjdCwgcmVjdCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGQ2M2U5MWMyODE2MDc5MTViYjA0Zjk0MjYyMjNmMTc2ZTk3MDY1ZDEuLjE1NzEzZDVjZTkyZDI5
YzE0OTM3NzVjMjNlYjFjZGVkNjZjN2RiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwMCwxMSArMTEwMCwxMiBAQCBib29sIEFy
Z3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VI
YW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNv
ZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8TmF0aXZlSW1hZ2U+JiBpbWFnZSkKIHsKLSAgICBhdXRvIGlt
YWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBp
bWFnZS0+c2l6ZSgpOwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0
bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKwogICAgIGVuY29kZXIgPDwgISFncmFwaGlj
c0NvbnRleHQ7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAg
LTExMTcsNjMgKzExMTgsMzAgQEAgc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIGVuY29kZXIgPDwg
aGFuZGxlOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZl
SW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQorT3B0
aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRl
R3JhcGhpY3NDb250ZXh0OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0
OwogICAgIGlmICghZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENy
ZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1
dG8gaW1hZ2UgPSBiaXRtYXAtPmNyZWF0ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgbmF0
aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGVuY29kZU9w
dGlvbmFsTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQotewotICAgIGJvb2wgaGFzSW1hZ2UgPSAhIWltYWdlOwotICAgIGVuY29kZXIgPDwg
aGFzSW1hZ2U7Ci0KLSAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdl
KGVuY29kZXIsIGltYWdlKTsKLX0KLQotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQotewotICAgIGltYWdlID0gbnVsbHB0cjsKLQotICAgIGJvb2wgaGFzSW1hZ2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghaGFzSW1hZ2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IGRlY29kZU5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKLX0KLQotdm9pZCBBcmd1bWVudENv
ZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29k
ZXIsIGltYWdlKTsKLX0KKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotYm9vbCBBcmd1
bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZShkZWNvZGVyLCBpbWFnZSk7CisgICAgcmV0dXJuIG1ha2VSZWYoKm5hdGl2ZUltYWdlKTsKIH0K
IAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGFiY2EwMjQwYjZkYTk0ZjgzNTg1YmFmMTlj
YjQ5NmIwOWI5MmI4ZTMuLjRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUxN2M0YmVkZWYxNzA1ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRp
b24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTQxOSw5ICs0MTksOSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6
SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiYpOworICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgzZDVmNjk4OGIyMTE1ODhk
YTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2Rl
MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVBy
b3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoKIAogUmVmUHRyPElt
YWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9y
bUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlmIChhdXRvIHBsYXRmb3Jt
SW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
U2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1No
YXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAppbmRleCBiMzg3OWEwMDQ0ZTY4MTllOGI1Zjk2ZmNk
YmQ3MzQ1YTk1MGMyNjI0Li4wZjMwZDk0YTcxNDk5MmY4MTdhYTNjZjg1YmUwYzMxYmI5NTNmZDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBE
aXJlY3QyRC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSQog
ICAgIGF1dG8mIHBsYXRmb3JtQ29udGV4dCA9ICpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwog
CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucyB7IHN0YXRlLmNvbXBvc2l0ZU9wZXJh
dG9yLCBzdGF0ZS5ibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24oKSwgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9OwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBtX3NpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVk
LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgRGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5n
ZXQoKSwgbV9zaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucywgc3RhdGUuYWxw
aGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiBDT01QdHI8SUQyRDFCaXRt
YXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlRGlyZWN0MkRTdXJmYWNlKElEM0QxMURldmljZTEq
IGRpcmVjdFhEZXZpY2UsIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBi
Yjg5NjU0NTg4NjdlYjJhMGZjNGVjODU3ZjM0NzVhNGU4MjVhMzVjLi4zMWMzOGYzNjEzYjM2YjUx
ZGVjMGZlZGExYjdiYzE3Nzc5ZGYwZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29ucwogICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZElj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRh
YmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtSW1hZ2VQdHImJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAt
NTYyLDcgKzU2Miw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAg
IGlmICghbV9sb2FkZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAg
ICAgICBpY29uRGF0YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0
aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAg
ICAgICAgICBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9y
bUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9
IG1fYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93
RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4NywxNCArNTg3
LDE0IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29u
cy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1Rp
bWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRm
b3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygp
KSk7CiAgICAgICAgICAgICBpZiAoIWljb25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEp
KSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkgewogICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gaWNvbiA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZmlyc3Q7CkBAIC02MjIsMTMgKzYyMiwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFy
KgogICAgICAgICBib29sIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIHsKICAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7Ci0gICAgICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5h
dGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3Bh
aXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAg
ICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERh
dGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwg
RW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpCiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3Jt
SW1hZ2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdGFydENsZWFyTG9h
ZGVkSWNvbnNUaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuaAppbmRleCA5NjEyZjk5YzJjZmI3YzUxMzY0ZTgxZWM4Y2YxMDllNjMxOGUw
MzliLi5lMjI1MmEwMDAwZDJiYmU1YjZmNjljZDIyNzFkMDBhMTI1YzU3NzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGNoZWNr
SWNvblVSTEFuZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wsIGJvb2wpPiYmKTsKLSAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImJik+JiYpOworICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiYpPiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9k
YjsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3BhZ2VVUkxUb0ljb25VUkxNYXA7CiAg
ICAgTG9jayBtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrOwotICAgIEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnBhaXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRl
ZEljb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8V2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CiAgICAgTG9jayBtX2xvYWRl
ZEljb25zTG9jazsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+IG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGU0OGZj
ZTQ3MGMxMGFkZmZhNjJlNDc3Yjc4MzkzNjNjMjVlOTgwMjkuLjhlZjFjZTQxMjczNmE4ZWVkM2M2
YWExNmMwMzJiMzNhZGI5YmY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtODYsMTEgKzg2LDExIEBA
IHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY2dJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1h
Z2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFk
b3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VEcmFnSW1hZ2VU
b0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggZTFiMzlmNTQyZGQzOTgwNmJmZWI5NTNmZGQ2NDI1NjVjOTRh
OTFhOC4uNzgzNGVlZjI0MGEwZjVkYTAxMDY0N2M5Yjg1ZDgzMzc4ZmRiZWE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC03NTQ2LDcgKzc1NDYsNyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRl
ciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAg
IGlmICghX2Ryb3BBbmltYXRpb25Db3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOl9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVw
XSk7CisgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5T
KFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkg
b3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICBfdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1
bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICBbX3Vuc2VsZWN0
ZWRDb250ZW50U25hcHNob3Qgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVj
dGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogCkBAIC03NzY5LDExICs3NzY5LDExIEBA
IHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSkKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0
byBjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBh
ZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdl
ZCB3aXRoIGNyZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLgpAQCAtODAzNCw3ICs4MDM0LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXpl
PiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXQKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRl
bnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25V
cF0pOworICAgICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFk
b3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwog
ICAgICAgICBhdXRvIHNuYXBzaG90VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10g
aW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsK
ICAgICAgICAgW3NuYXBzaG90VmlldyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRT
ZWxmIGFkZFN1YnZpZXc6c25hcHNob3RWaWV3LmdldCgpXTsKQEAgLTEwMDg1LDcgKzEwMDg1LDEy
IEBAIHN0YXRpYyBVSU1lbnUgKm1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMo
VUlWaWV3Q29udHJvbGxlciAqcHJldmlld1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1h
dGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25J
bmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQo
KV0gYXV0b3JlbGVhc2VdOworCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IF9wb3NpdGlvbkluZm9y
bWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFtb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9u
UmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICop
Y29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCmluZGV4IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4N2QyMTYuLmMz
YmVlZjVkMTQwYjcyNDM4ZGM3NTA1NjAzYWU5YTRjZGUyYTExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDE0ICs5NiwxNCBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoV1RGTW92ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkg
Y29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBVU0Uo
Q0cpCi0gICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1cm4g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNFKENBSVJPKQotICAg
IHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRl
eCAwNWMxMDljZDIwMjZkMTVmODBlYjgzMmFkOWYxYjdiYTMzYmI5NTU3Li45ZTI0YWI5OWViYzY3
NWNlMjAxYTU5Mzk3MjhjNjE5ZGJhNTk1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gKm1fY29udGV4dDsgfQogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2
ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
b3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVz
b2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdS
QURhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBjYTAyNTJhNDZlMmMwNzFmZmQ1MzRiODMzZGJiNDU1NTg2N2VkNTgzLi43OWEyMTE0YmEyNDk3
MDJjYzU1NDdmZmExM2IzM2MzOTYwODY0OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC04MTEsNyArODExLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oCmluZGV4IDVmODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjBkNzU1
MmY0OTNmMDc0MjQxMmE2YmUyOTczOTYyMTZkYzk1ZjU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsK
ICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOwotICAgIFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAog
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggODFjYjMxYjg1ZmYyNjg1MTAwYjk0MmY4ZWNkNjUxODdjZDQyODM4MS4uOTI5NzYw
ZTJkZjZiZTNjYjI3ZDBlNWVmNmZlYzIzM2ZmNzk4MTllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2ODMsNyArMTY4Myw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdh
c0NhbmNlbGxlZCkKICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBib29sIGlzQWxtb3N0U29s
aWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQogewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBi
aXRtYXAtPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1h
cC0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIEFTU0VSVChDR0lt
YWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CiAKICAgICBDR0JpdG1hcEluZm8g
aW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KaW5kZXggNWI4Y2I2YzM4YzdhNWIxNjY3NGJmMTRhYzAxMjBjMzVmZGYzYWRm
Ni4uN2FhMDA0YTYxNjllYjQwMjA0ZGIyMjRkNmVkYzIyNmYyNzI3NDhjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCkBAIC01MzYsNyArNTM2LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0
PiBraXQoRXZlbnRUYXJnZXQqIHRhcmdldCkKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAg
ICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkK
LSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkuYXV0b3JlbGVhc2Uo
KTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3Jt
SW1hZ2UoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmICghKmNnSW1hZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ4MTc2OTk2NzVlY2Zi
YjljMjM2NzkzNWMyMmM1N2M3OGE0YTM0ZjEuLmZkMDk2ZGRmOTUwY2JmZTgxNjNiMTM2NzVhY2Rk
ZTMxN2I5ZjMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQpA
QCAtMTcxLDEwICsxNzEsMTYgQEAgY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIg
OiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNhY2hlZEltYWdlPihjYWNo
ZWRSZXNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFdlYkNvcmU6OkNhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2Fj
aGVkUmVzb3VyY2UpOworCisgICAgYXV0byYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3Jl
OjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdlLmhh
c0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJbWFn
ZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZl
SW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDRh
YTdiZDQ4Y2MxNWM1MzUwNDZjZDk2OWYwNDViMmE5ZjFmNzhjOTMuLmQxMDQzZjk1NmM0MTI1ZGJh
Y2Y2MjRkZDI0YmJiZDYzZDZkYmM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTg0NiwxNCArODQ2LDE0IEBAIHByaXZhdGU6CiAgICAgX3RleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMgPSBjcmVhdGVOU0FycmF5KGluZGljYXRvckRh
dGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykubGVha1JlZigpOwogICAgIF9j
b250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVG
YWN0b3I7CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCkK
LSAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJ
bnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhI
aWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJbWFn
ZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJ
bWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2
ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNv
bnRlbnRJbWFnZSkKLSAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgp
LT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmll
bnRhdGlvblVwXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgp
LT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEuY29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRpdmVJ
bWFnZSgpOwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0
V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJ
SW1hZ2VPcmllbnRhdGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2Vs
ZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRvckRhdGEuY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgICAgIH0K
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="430128"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413511</attachid>
            <date>2020-11-06 20:45:40 -0800</date>
            <delta_ts>2020-11-06 21:45:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106204539.patch</filename>
            <type>text/plain</type>
            <size>253474</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uZDllNmI3NzJjYjMxNWMyZTFmZGUzMzEzMDNjNDAy
ZmQ3YzkyMjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRl
eHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0
Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpu
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRp
dmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0xheWVy
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93SW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3Jt
SW1hZ2VTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0Fs
cGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRHZGtQaXhidWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29u
OjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xp
cFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIw
MjAtMTEtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBmb3IgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9NYWMvYWNjZXNza2V5Lmh0bWwg
aW4gaXNvbGF0ZWQgdHJlZSBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWE0YzM3ZGViNDUyOTA4ZDUxOWFi
NTA4YmMwMGRhYWQ3ZmQyNjQ2Li45MGIyMzJmNzIwMzI5ZTU3YmQ2MmI5MWE2MDA5OWJlZGRmMmQw
ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0
aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQg
TmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjplbmNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2
ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvcklt
YWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1h
Z2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJl
c2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTExLTA2ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBbaU9TXSBX
ZWJBdXRobiBwcm9jZXNzIGRvZXNuJ3Qgc3RhcnQgb24gaU9TIGRldmljZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBlZDc0NDg4MDFmZDRlNWRiMTE2ODFkYzI2ZWU2ZDAxMzI3MDEw
MTkxLi42NzNhMWRhNmJjODJkNTQwMDU3OTBlZTdlNDJkYjljNTg2MzNmYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFw
c2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAg
ICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRl
eHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTExLTA0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUgaW50
ZXJuYWwgR1BVIHJlbmRlcmluZyBmbGFncyBmcm9tIFdlYlBhZ2UgdG8gV2ViUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggYTQzYzIwNTgxNjVlODQ1OTNmODk0YzZhY2JlNjg0MmUyYmNhNWYz
Ny4uZDdkNDUxMTdmZWUyMGRiMjM5MzVjN2M2YmJkOTg0YmVmMmFjZDc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAxNTJlNTdkNzdkNmIyMmFkM2Nk
ZDMwZGM0MmU2MTgwZjE3NGE4YTguLjdmY2I3MGYxMTJhOTJiNjQzMGRmM2QwN2U3YjY0NDk0YzBm
ZWQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtOTAsOSArOTAs
OSBAQCBpZiAoJHtVU0VfRElSRUNUMkR9KQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGlyZWN0MkQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRp
dmVJbWFnZURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERp
cmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJE
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFEaXJlY3Qy
RC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFseXplckhlbHBlci5j
cHAKIApAQCAtMTQ0LDEwICsxNDQsMTAgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRS
ZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLSAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDhkOTI0OTFhMDg1MzBlY2EyZTk2ZjRkYzFlNjJkMzI1YjE2
ZTQ3NWMuLmVkNmFjYjMxY2JhNWQ3MjkxYTVkMDhmODVhNDcxMzYwNzAwNDA3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTUsMTAgKzI5NSwxMCBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRTaXplQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
Zjc0M2RkYTViNzkwZGVlZjVmYTU0ZWJhNWU1MThjMzBkYWNmN2U4Ni4uMDEwNDE5ZmQ0ZmQ1NGI5
NjEzMWQ1ZDJmNmQ1MWMxYmIxYmNkMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDEsNiArMTk0
MSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFkMzNhOTU1MTky
ZDkwNzZlYjNkOGMxNjJjZmUzODYyMmRmYjE4Yy4uNjcyZGNlMzZjNzFiMWQ1ZDk5NzEzZTkxYjkz
MjQwM2M5M2YxYThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMzcsMTAgKzMzNywx
MCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFn
ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzZlNDI1M2Y4NDZkZWRlN2Y5MGJi
NThjZDY1ZDYyOWQ3YmVjNzY1Li45YTM2Nzg4Zjk4MjU4ZWNjOWFjM2RiZDkyZDMyMThlYjMxNzE5
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTU4LDcgKzIxNTgsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURD
N0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEy
NTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNB
RTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjgsNyArNzQyOCw3IEBACiAJCTM3NkRDQ0UwMTNCNEY5NjYw
MDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc3QTNBOEYx
NUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1JbWFnZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NTEsNiArOTk1MSw3IEBACiAJCTcy
NEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NjZGMDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjEsNyArOTk2Miw3IEBACiAJCTcyNjZGMDI4MjI0MzEy
MDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdB
bmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYxNjEsMTEgKzI2MTYyLDExIEBACiAJCQkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgKi8sCiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuY3BwICovLAogCQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmggKi8sCi0JCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cu
Y3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cuY3BwICovLAog
CQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIy
NzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlC
Mjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovLAogCQkJCTFG
QzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLywK
IAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
ICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENHLmNwcCAqLywKQEAgLTI2NDA1LDggKzI2NDA2LDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFB
MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0
MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIz
MTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKKwkJCQk3MjUy
Mzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAotCQkJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMjY0MTUsNiArMjY0MTYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAv
KiBQYXR0ZXJuLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQ
bGF0Zm9ybUxheWVyLmggKi8sCkBAIC0zMzQzMiw3ICszMzQzNCw2IEBACiAJCQkJQTgxODcyMjMw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0
aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5
MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY1Nyw2
ICszMzY1OCw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1
MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE1ZGFiMWY0NjRhMWU3MzIxZjQ2NTgz
YmI5NmE4ZGQwYWVhMWYxMjYuLmJlOWIxOTU0NjQ1MWQyM2RhMzNiNTkyZmU4YjQ3ZWYzZGI2YWMy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1l
bnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBIVE1M
VmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBs
YXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKaW5kZXggZWZmZjNmNjZlODEzYjc3ODY5ODBjYWJjYTM1MTBiMTIwZGI2MDQw
Mi4uM2QxOTRiMDc5MGI3NzA5MzUwZTRmODQ2YWQ5NWM5YjRiYTljZjNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAg
ICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJs
ZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDY2MzE2
ZmIwY2Q1M2E2ZjA3OTUzMjkyMGNmMDQyYzJlNjEzMDU1MDAuLjE4MGI5YjkxYzAwMzQ4NjUyMTcz
YzM0NzczNmQxZDFmYWYyOTI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjM1LDgg
KzE2MzUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGNoZWNrT3JpZ2luKCZ2aWRl
byk7CiAKICNpZiBVU0UoQ0cpCi0gICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7Ci0gICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIGlmIChhdXRvIGltYWdlID0gdmlkZW8ubmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBk
c3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0
KSkKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXggMTdi
YTUxZmUwZTZjZTcxZDhjOWM1OGEwYjA3MzgyZjY2Y2VmYmUwOC4uNjFmODIzZmViMzAzZmVhZDM4
ZTEyNTRkZmJlMTA5YzYwZTNhZDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGJvb2wgaW5k
aWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24oY29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9y
KQogCiAgICAgRmxvYXRTaXplIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6ZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2UoKS0+c2l6ZSgpOwogICAgIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6
ZS5zY2FsZSgxIC8gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50Q3Jv
c3NmYWRlKCpfdGV4dEluZGljYXRvcikpCiAgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAg
IGVsc2UKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmlt
YXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdAogc3RhdGlj
IFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0
aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9y
KQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRzIl07Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
b250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZToo
X19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlv
biBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0
aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nv
dXJjZXNDYWlyby50eHQKaW5kZXggNWYwMTQ5NGYzY2ExZTMxZDc0N2JmN2M3YWZiNzZhZDBjZDdm
NjcwYi4uY2Y5YTE5Njk5YjhhOTVjNzQxMjAxZmQxNmM3MWI5NWFjMGFlOGYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNSw4ICszNSw4IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIzYjVjZjg5NDc2NjA0YzQzZDlmNDg1Nzc2
MmU1NTMyNzgzZmRhMTcuLmExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogewogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zb3VyY2UoSW1hZ2VTb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkpCiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGlu
Z1N0YXR1cyBkZWNvZGkKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2Rp
bmdTdGF0dXM7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGlmICghZnJhbWVIYXNGdWxsU2l6
ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpIHsKICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdM
ZXZlbCB3YXMgJWQsIHJlc2FtcGxpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lU3Vic2FtcGxp
bmdMZXZlbEF0SW5kZXgoaW5kZXgpKSk7CkBAIC0xNDIsMTcgKzE0MiwxNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBp
bmRleCwgU3Vic2FtcAogICAgIHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29u
dGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQobV9jdXJyZW50RnJhbWUsIFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIApAQCAtMTcxLDE4ICsxNzEsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWMKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBj
b3JyZWN0ZWRTaXplRmxvYXQpOwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0KEZsb2F0UG9pbnQo
KSwgc291cmNlU2l6ZSk7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0p
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHNvdXJjZVNp
emUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0pOwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAj
aWYgVVNFKENHKQotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChpLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRD
b250ZXh0KTsKLSAgICAgICAgaWYgKGltYWdlICYmIG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgPT0g
c2l6ZSkKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc2l6ZSkKICAgICAg
ICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIE5hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljCiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAot
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkK
K1ZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2Vz
KCkKIHsKLSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGltYWdlczsKKyAgICBWZWN0b3I8UmVm
PE5hdGl2ZUltYWdlPj4gaW1hZ2VzOwogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAo
YXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChpKSkKLSAgICAgICAg
ICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChtYWtl
UmVmKCppbWFnZSkpOwogICAgIH0KIAogICAgIHJldHVybiBpbWFnZXM7CkBAIC0yMTEsMTAgKzIx
MSwxMCBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorc3RhdGlj
IGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1
cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJz
YW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBJbnRTaXplIHN1
YnNhbXBsZWRJbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCkBAIC0yNDYsNyArMjQ2
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsID0gbV9hbGxvd1N1YnNhbXBsaW5nID8gc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9y
KGNvbnRleHQsIHNjYWxlRmFjdG9yRm9yRHJhd2luZykgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0OwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1
YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40Zild
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7
CiAgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwpAQCAtMzIyLDkgKzMyMiw5
IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlv
bnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmll
bnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJj
ZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCAzYjY4OTA2NzgzNTY5YjAxY2FiYTEyZmQ2MDFhZDU2MTk4NGIxN2I1Li45YzU5ZTdhZWRjMDJl
NmJhODc1NjhhMjVmZWFjZDYyY2U4YTlhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTUzLDcgKzUzLDExIEBAIGNsYXNzIFRpbWVy
OwogCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0
Zm9ybUltYWdlKSksIG9ic2VydmVyKSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1h
Z2U+IGNyZWF0ZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpdG1hcEltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBvYnNlcnZlcikpOwogICAgIH0K
QEAgLTEzNSwyMyArMTM5LDIzIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OwotICAgIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNw
ZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
LSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8UmVmPE5h
dGl2ZUltYWdlPj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KTsKICAgICB2b2lkIGRlY29kZShGdW5jdGlv
bjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdl
KE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmLCBJbWFnZU9ic2VydmVy
KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgpOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAg
Ly8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlz
IHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUg
YW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0xOTgsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4m
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVj
dG9yPFJlZjxOYXRpdmVJbWFnZT4+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgY2xlYXJUaW1lcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDIyM2Q5ZGMxODNkMDNlM2Y0Y2MzNTFmNGRhNmY2Zjg5M2YwYWI1
ZWYuLjg1NDAyMTVmNjIzN2NjMGEzZDYyNWUzMmZhOTY3ZGY5YTYyZWMyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2JhY2tl
bmQgPyBtX2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpIDogMDsKICAgICB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2Fz
dDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzMGI4ODQ5MTliMmM2MDQ1Zjc5
OTZjMTlhMTViYWY2MzliYzUyNjllLi4wMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRm
ODdiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBiMzVhYzY0ZmE4YjlmZmUwYzk0NDg1ZTk3
M2YyNGMyYWEwZjM0OTAuLmM1ZDA1N2NkYWQ0YjY1ZTg0N2U5ZTZmZmQwOWY2N2VmZDU3ZjYyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNB
bmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5n
LCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lk
dGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4
IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZj
NmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1h
bGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA2ZTIyMmMwMmYyZDlhZTM2
NDA2MWI3M2Q5YzM3Yjc3YjI5YjAzYjQ2Li45ZDQ0MGQwNTNiMDc4MGQ4ZDQyNWI2NmViOTUxMGQ2
MWRjOGVjZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGI1OTYwYWQ1ZmY3YzRkYTU2ZGY0
ZjVhNGE3OWFkZDk4ODQxMzZkN2QuLmJiMzljNmM4OGUxNDBiNDdmNDIyMDEwNzM2ZjFlNTZjNzll
NDNkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFn
ZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNJbWFnZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3Vh
cmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSWNvbihjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mKTsKKyAgICBJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFD
KQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggNGI5YmVlZDg2NTdlZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2
YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1l
ZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1
NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJm
M2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFn
ZUJhY2tpbmdTdG9yZShvdGhlcikpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5
MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNiYzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1
NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JT
cAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5r
SW50b05hdGl2ZUltYWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5MjA0YWQxMGE4MTA2ODA2ZGU5MjZmMmVlZmZjMTYzNGM3
NzAwZTZlLi41Mzg0NmM1OWNiNWVjNDAwN2Q1NDQwYTQxNTYxN2Y4ZjE4NzgwZjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VC
dWZmZXI+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUlt
YWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJl
c29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3
Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFn
ZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3
YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdjMDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmUKICAgICByZXR1cm4gYmFja2VuZFNpemU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNi
NTg3MjU2N2YwODgzYjViZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMuLmVkM2Y4YjViY2Y1OGU0Mjc4
NTY3ZDE4NmZiNjVjODQwMTYyN2M4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlv
bnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsMTMg
Kzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAgdmly
dHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lu
a0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDcxMDRkMDcxOTRmMzgxNTliMzNiZWE2
YWFlZDg4NWQ3MDliZDk4MTcuLmFhYTUxYmRkY2UwNGZkODVlOWVhNjFkMzgyY2MzYjExZWU2ZTIw
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVBbGxv
d1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
Y3BwCmluZGV4IDgzYjc4YjZlYzAwNmZjNTQ3NzQ1MmZmZDA4MTUyN2IyZGQ5MTYxODQuLmNjM2I2
MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHVu
c2lnbmVkIEltYWdlRnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
cyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKIAotICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
bV9uYXRpdmVJbWFnZSk7CisgICAgbV9uYXRpdmVJbWFnZS0+Y2xlYXJTdWJpbWFnZXMoKTsKICAg
ICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICBtX2RlY29kaW5nT3B0aW9ucyA9IERlY29k
aW5nT3B0aW9ucygpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgQ29sb3IgSW1hZ2VGcmFtZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoIWhhc05hdGl2ZUltYWdlKCkgfHwg
bV9zaXplICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAg
cmV0dXJuIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fbmF0aXZlSW1hZ2UpOwor
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4
IDU0YTljOWRmMzNiNGQzM2IxMjc1ZjkxNDZmZjg4NDJlMzdjMDAwNzEuLmFhNzNhZTM2Mzg5ZWMy
ZmFjNDIxZWMzNWMzZTZjNjcxODExZTdiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNp
emUoKS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSA6IDA7IH0KICAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNh
bXBsaW5nTGV2ZWw7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CiAKICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgRGVjb2RpbmdTdGF0dXMgbV9kZWNvZGluZ1N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX25hdGl2
ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKICAgICBTdWJz
YW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmOGUy
MDI4YzNjM2IzZjYxNmM2YTEzNzhhOTRlZmRmYzRlNWIxOTQ5Li4xNDgwMjFjZWVlNDU1YWViYjMw
NWRmZjM1NjEzZWM0NzQzM2Y1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShCaXRtYXBJbWFnZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvCiB7CiB9CiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkp
CiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEltYWdl
U291cmNlOjpncm93RnJhbWVzKCkKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhuZXdTaXplKTsKIH0K
IAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID09IDEp
OwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbMF07CkBAIC0yNDUsOCArMjQ1LDgg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKICAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7
CiAKICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRl
OwotICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2ZUltYWdl
KTsKLSAgICBmcmFtZS5tX2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFtZS5tX25h
dGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5zaXpl
KCk7CisgICAgZnJhbWUubV9oYXNBbHBoYSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPmhhc0FscGhh
KCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyBk
ZWNvZGluZ1N0YXR1cykKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bgogCiAgICAgaWYgKGZyYW1lLm1fZGVjb2RpbmdPcHRpb25zLmhhc1NpemVGb3JEcmF3aW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKGZyYW1lLmhhc05hdGl2ZUltYWdlKCkpOwotICAgICAgICBmcmFt
ZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubmF0aXZlSW1hZ2UoKSk7CisgICAgICAg
IGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm5hdGl2ZUltYWdlKCktPnNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZnJhbWUubV9zaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgp
KTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKQEAgLTI5Myw3ICsy
OTMsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJ
bWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBNb3ZlIHRoZSBuZXcgaW1hZ2UgdG8gdGhlIGNhY2hlLgotICAgIGZyYW1lLm1fbmF0aXZlSW1h
Z2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKICAgICBmcmFtZS5tX2Rl
Y29kaW5nT3B0aW9ucyA9IGRlY29kaW5nT3B0aW9uczsKICAgICBjYWNoZU1ldGFkYXRhQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC0zMDEsNyAr
MzAxLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZl
SW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNl
ZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2
b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1J
bWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSwgc2l6CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAg
IC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lCi0gICAgY2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKKyAgICBjYWNoZVBs
YXRmb3JtSW1hZ2VBdEluZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKICAgICBMT0coSW1h
Z2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4g
Y2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaW5kZXgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBpbWFnZSB3aXRoIHRoZSByZWFk
aW5lc3Mgb2YgdGhlIG5ldyBmcmFtZSBOYXRpdmVJbWFnZS4KQEAgLTM2Miw4ICszNjIsOCBAQCB2
b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAg
ICAgc3RhcnRpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIC8v
IEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4KLSAgICAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vi
c2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7Ci0gICAgICAgICAg
ICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBwcm90
ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgs
IGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRp
b25zKTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUltYWdlKQogICAgICAgICAgICAgICAgIExP
RyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMg
YmVlbiBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNl
VVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtkZWNvZGluZyBmb3IgZnJhbWUgJWxkIGhhcyBmYWlsZWRdIiwgX19GVU5DVElPTl9f
LCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1
ZXN0LmluZGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0
QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcChtaW5EZWNvZGluZ0R1
cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1lKSk7CiAKICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3JlYXRpb24gdGhyZWFk
IHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50IHRocmVh
ZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHByb3RlY3Rl
ZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5p
c29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVS
ZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1vdmUo
cGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUg
ZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgog
ICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09IHByb3Rl
Y3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHBy
b3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJv
dGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLnJl
bW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdC5p
bmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGlu
Z09wdGlvbnMsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ1N0YXR1cyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhXVEZNb3Zl
KHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1w
bGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVj
b2RpbmdTdGF0dXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQg
d2lsbCBub3QgY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291
cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTQ1NCw5ICs0NTQsOSBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJjZTo6ZnJh
bWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogICAgICAgICBp
ZiAoZnJhbWUuaGFzRnVsbFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMg
aW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWxWYWx1ZSk7CisgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1fZGVjb2Rl
ci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7
CiAgICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25l
LgotICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKTsKKyAgICAgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTY5NywxOSArNjk3LDIxIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldFRhcmdldENv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogfQogI2VuZGlmCiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpc0Rl
Y29kZXJBdmFpbGFibGUoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKKyAgICBpZiAoIWlzRGVjb2RlckF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpm
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4PE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFn
ZSkpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpk
dW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggZDk4ZWMwZTdmNmU1MmNlNTU4OWVkZDk5YjQyYzdhZDYzY2Vk
ZjAxZC4uYTZmNGFiMTNkZWVmZGEzNjUyYmI5MzNjYjJlMjYyYTVmY2I2MDMyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
aW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShSZWZQdHI8TmF0
aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KQEAgLTEyNSwx
MyArMTI1LDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRUYXJn
ZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogI2VuZGlmCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAKIHByaXZh
dGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFscGhhT3B0
aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICBJbWFnZVNvdXJjZShOYXRpdmVJbWFn
ZVB0ciYmKTsKKyAgICBJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4K
ICAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hl
ZFZhbHVlID0gbnVsbHB0cik7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAgICAgdm9pZCBlbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZWQoRW5jb2RlZERhdGFTdGF0dXMpOwogCi0gICAgdm9pZCBzZXRO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICB2b2lkIHNldE5hdGl2ZUltYWdlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZU1ldGFkYXRhQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHIm
Jiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNv
ZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CisgICAgdm9p
ZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0
SW5kZXhBc3luYyhQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgc3RydWN0IElt
YWdlRnJhbWVSZXF1ZXN0OwogICAgIHN0YXRpYyBjb25zdCBpbnQgQnVmZmVyU2l6ZSA9IDg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggN2FhYTFlZmIzYTVlMzUzNjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uNTk1NjdkMGMzOTkz
MmIwZTdiMTdmYjY1YzcyZTc2ZGZhN2YxOTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uYTA1NzhhZTAz
ZTcwN2M4NTU2OTY0YTUzNmU5YWI2NGE1M2U4NWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5n
IE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29y
a1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlhMzQzMTE0
MDM4YjBiOTEuLjdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRS
ZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTNkY2FiMzVhYzhjNWE5ODFkZGQ5YTMyMDg4
ODg0ZmQ0YWEyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICBpZiAoIXBs
YXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpKTsKK30KKworTmF0aXZl
SW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQorICAg
IDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThl
NWIuLjM3ZWI2NTI1ODQ4MGM2MDk0ODNkZWQ1MjdiYTMzZjkwNGM1YjUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3
LDMwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHIm
Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1
cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQogCi19CisgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1JbWFnZVNpemUobV9wbGF0Zm9ybUlt
YWdlKTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdl
SGFzQWxwaGEobV9wbGF0Zm9ybUltYWdlKTsgfQorICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3Io
bV9wbGF0Zm9ybUltYWdlKTsgfQorCisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpIHsgY2xlYXJQ
bGF0Zm9ybUltYWdlU3ViaW1hZ2VzKG1fcGxhdGZvcm1JbWFnZSk7IH0KKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTQ3ODVlMzJmNjk3MTYzMTVmMGI0MjI4MWY1NDg3OTdmNzZlYjdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENv
bG9yOworY2xhc3MgSW50U2l6ZTsKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQ
dHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNUMkQpCit1c2luZyBQ
bGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlmIFVTRShDQUlSTykK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PjsKKyNlbGlm
IFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPFNoYXJlZEJpdG1h
cD47CisjZW5kaWYKKworV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJik7Citib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJik7CitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdl
U3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIw
N2Y4NmYzOTMxNzhmNGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNl
Nzk3ZmQ4ZmIyZDZhYWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShOYXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhh
NWY1ODcwYTM1MzU3M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2
NjRhMjQxOTQ5M2U5NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkx
NmY5MGFiZDA3NTNhMTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQw
ZDM0ODRiMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTU2Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJl
dHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsK
ICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTlj
MWVhNi4uMjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJh
bWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoKTsKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
UHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRl
b1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBm
Mjk0ODgxNmVkZGU3OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQw
NDlkNTA0MTZkNjUyNDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEx
MjcsNyArMTEyNyw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAg
ICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkg
OiBudWxscHRyKTsKIH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9G
dWxsc2NyZWVuTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRh
dGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyAr
MjI5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNv
bmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0
b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAt
MjMxNCw4ICsyMzE0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdl
LmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCks
IGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0
IGltYWdlUmVjdCh7IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0
LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFn
ZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFu
IGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1
dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwog
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdi
ZjdhNzY3MzMwYTY3MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQz
ZjgwOTEwZjZiYTI5ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIx
NSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
OwogICAgIGJvb2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJl
dGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9y
bWVyOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVz
c2lvblNlc3Npb247CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2
YzI2NTgwNTljNjExYWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0
NDA4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0
dXJuIG1fbGFzdEltYWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkK
ICAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAg
bV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYy
Niw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBA
IC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5
YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4
NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAg
IHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsK
KyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3
Y2I0Li45YTUzNmRiOTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9G
dWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3Vy
cmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVm
PihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
LT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28K
ICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlh
U2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFn
ZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAg
ICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9
ICptX3ZpZGVvVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0g
dmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNm
b3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2Zi
M2NmODBiZjc1ODUuLmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02
MywxMCArNjMsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0
cikgZmluYWw7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFj
NmQxYTZlNjU2YjgwODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2Ey
YWY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5MYXllci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQ
dHIgY3VycmVudEltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJy
ZW50SW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxs
c2NyZWVuTGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMo
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggNTJkOWIxZTg3YzgwMzRkNmY3ODk2MDZjMzc3NjI1MmJmYzVkNGM1My4uY2Jk
ZjgyMWQ4NjUxZDUyNmU1YmQwOGZhMzIzZDA5ZGQxOWI2NzQxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJ
bWFnZSgpCiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUg
aW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYg
dGhlIGxheWVyIHNpemUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDg4NWY3OTlmNmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVk
MTI0ZDQ3OWU2ZGZmYWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3Mg
SW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9y
IG1fY29udGVudHNTb2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRp
bmdDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOwogICAgIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlv
bnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNm
b3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMz
N2YxY2FiOTZhN2ZiNzNmNWJmNDM5YmEuLjM4N2U4Y2I5MjVkMGVjYTI2ZGEzYzQyNzU3ODE3YjAy
OWI1ZTA2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAj
aW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJh
d2luZ1N0eWxlIHsKIAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZs
b2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250
ZXh0LCAqbmF0aXZlSW1hZ2UsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4p
LCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRv
d1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhh
LCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBz
YW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0
YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3Rh
dGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0
ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hh
ZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd05hdGl2ZUlt
YWdlKHBsYXRmb3JtQ29udGV4dCwgKm5hdGl2ZUltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBz
aGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxB
bHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3Rh
dGljIHZvaWQgZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBJbWFnZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAg
ICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxh
eWVyU2l6ZSkpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5h
dGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZm
ZXIocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBG
bG9hdFJlY3QobGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAg
ICBGaWxsU291cmNlIGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNo
YWRvd1N0YXRlLmdsb2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSwxMyBAQCB2b2lkIGRyYXdHbHlw
aHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJj
ZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2Jh
bEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBOYXRpdmVJbWFnZSYg
bmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2Jh
bEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit7CisgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKKyAgICAgICAgZHJhd1BsYXRm
b3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKK30KKwordm9pZCBkcmF3UGxh
dGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0
IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxh
dGZvcm1Db250ZXh0LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCA1MDVjMGFmNDdkN2Ew
YTUwZTljMTkwNjZkZDkzZGU1OTYxZDY2OTFhLi5jODg4MTIxNDk1YTJlMmQ5MmYwYzM0Y2VjZjY2
NjBhNDZmOWFmNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZv
aWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRl
Jik7Cit2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9f
c3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJh
d1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
SW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0
aW9uU2l6aW5nIG9wZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3Njgy
MGQwNmE1NWJhNWM1NTgyNDhjMy4uZmZkYjRhN2E3NTE5OTgyM2U3Yzc0YTljMTIxN2IyYTliNTM1
OWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250
ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0
ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqcGxhdGZvcm1Db250ZXh0
KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUo
c3RhdGUpKTsKIH0KIAogLy8gVGhpcyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3JkZXJzLCBzbyB3
ZSBzaG91bGQgbm90IGRyYXcgc2hhZG93cy4KQEAgLTI2Niw4ICsyNjYsOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
RmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3Jt
Q29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAg
ICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiBJbnRSZWN0IEdy
YXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CkBAIC02ODEsOCArNjgxLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgp
LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fp
cm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRHTENhaXJvLmNwcAppbmRleCBmYWRiMjQzZTY3OGI3MjdmMTBiMGI2YjNiMmU5
MGYwNThiZDM5MjVlLi5jNmFhNzcxOGU5YjQzNDE1YjI1MDY0OTNlYTVhY2M2ODA1N2Y4MTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRHTENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtNTYsOSArNTYsOSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgICAgICBzb3VyY2UtPnNldERhdGEobV9pbWFnZS0+ZGF0
YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFzb3VyY2UtPmZyYW1lQ291bnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJjZS0+
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4
SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5
QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVh
Y2ggcGl4ZWwsCiAgICAgICAgIC8vIHdoaWNoIGlzIHRydWUgYXQgcHJlc2VudCBhbmQgbWF5IGJl
IGNoYW5nZWQgaW4gdGhlIGZ1dHVyZSBhbmQgbmVlZHMgYWRqdXN0bWVudCBhY2NvcmRpbmdseS4K
ICAgICAgICAgLy8gMi4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MQ2FudmFzRWxlbWVudCBpbnB1
dCBpbiB3aGljaCBBbHBoYSBpcyBhbHJlYWR5IFByZW11bHRpcGxpZWQgaW4gdGhpcyBwb3J0LCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGZhMDliODEzZWE0MzUx
NjYwYWVjNTYxMzExM2IzM2VhODk2NjMwMjUuLjYwYzE4NzIxMzJkOGE4NWVjYmE1MDNjOTgzNGVj
Mzc4ZDUwNTE0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAt
Mjg3LDE3ICsyODcsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmUKICAgICB9CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7Cisg
ICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBz
dGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7
IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFn
ZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0s
IHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
Ci0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5n
ZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1f
cGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTQyMyw3
ICs0MjksNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBpZiAoYXV0
byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
Ci0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIo
bV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJl
Y3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggOGE5
MzdkYTIzOWQ2ZDZjZGQwYTA0OGNjY2Q4MzY3OTEwNWQ5N2NhYy4uMzFhMGY1NDAwZWU4NGUwOGIw
YzVkZDRmOGU1MmYxOTczNTM1ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmlu
ZGV4IGFjNGIxZjc5MDc2ODRjYTZkYjg2MjcyMTM5OTdkNGI1NmE4MjBlOGYuLjY2ZTBiOGY0ZWI1
NzIwZWJiNjM3MGEwYzU0OWIzZDJiNmEyNDhhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAg
ICBjb25zdCBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRl
KCk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQg
PT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkp
Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNv
bnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4
dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250
ZXh0U3RhdGUpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9u
Q29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRp
b25Db250ZXh0U3RhdGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtODAs
NyArODAsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0KIAogICAgIGlmIChhdXRv
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29w
eUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIG1f
bG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
b3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29s
b3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGYxZjc1NzI2
YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uOGU2MzZkNjUyZjI4N2YzODg5ZWY5ODE1
MGI3MzY4YjY1ZGExM2VkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAg
ICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTggQEAgTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCks
IG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsK
IAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUoV1RGTW92ZShjb3B5KSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9y
ZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdl
OjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZhY2UpKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkg
Y29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
OjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZh
Y2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNlX2dl
dF9jb250ZW50KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkK
QEAgLTEwMCw3ICsxMDAsOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogCiBWZWN0b3I8dWlu
dDhfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QK
IHsKLSAgICBhdXRvIHN1cmZhY2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBu
dWxscHRyOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuaAppbmRleCBhNjlkNWVlMGZmNjNmNzc5NTgyNWRjNjc2NmQ2ZDE2YjcyNjFk
NjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBjYmY1ZWIyNDEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsNyArNDAsNyBAQCBj
bGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1h
Z2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25z
dDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0
YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4
NDM0MTU4YjRkMDMzMDFhYjA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKLQotI2lmIFVTRShDQUlSTykKLQotI2luY2x1ZGUgIkNh
aXJvT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKLXsKLSAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdl
dCgpKSA6IEludFNpemUoKTsKLX0KLQotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICByZXR1cm4gIWltYWdlIHx8IGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0K
LUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKLXsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkg
IT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBpZiAoY2Fp
cm9fc3VyZmFjZV9nZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lN
QUdFKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShQYWNr
ZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7Ci19Ci0KLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17
Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCBjZTUyNzgwNjBhMGRmNWMx
MGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi43NDFjOTZmMjQ3YmIyZjJjYjk2NmFlZWJkOGU2OGRj
M2U4NmEzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2Uo
KS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwg
bmF0aXZlSW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1
dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgY2Fpcm9f
cGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2Vy
IHNwYWNlIGl0c2VsZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgzMWM0
MDBlY2YxODg4YTJkMzI3NTgwNzBhZjQ0ZDA2YzVjMTgwNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIK
KworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgorI2luY2x1
ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIK
KyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFNpemUgcGxh
dGZvcm1JbWFnZVNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgcmV0
dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7Cit9
CisKK2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhhKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlKQoreworICAgIHJldHVybiAhaW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChp
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKK30KKworQ29sb3IgcGxhdGZvcm1J
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkK
K3sKKyAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgx
LCAxKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKworICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQo
KSkpOworICAgIHJldHVybiB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJH
QiB7ICpwaXhlbCB9KSk7Cit9CisKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYTdkYmU2ZTZiZTVm
NTYyNTJjM2M3MGIxMjg4MGUzYjY0NGJhNGM5OS4uZmU5YWQzNzY3MzMwNzg2NTg0MGEzZmMwMDNk
NWEwMTZmMDg2ZmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5t
X3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ0LDIzICs0NDQsMjMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2Uu
cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0
aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAgIGZsb2F0IGggPSBD
R0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VH
ZXRIZWlnaHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFn
ZS5zaXplKCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAg
IHN1YkltYWdlID0gdGlsZUltYWdlOworICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdl
IG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0
aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVj
YXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25s
eSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VS
VChoID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOworICAg
ICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAv
LyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUg
YSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFs
bCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgog
ICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFn
ZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0
aCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uu
c2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcu
d2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2Vl
bXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUu
Zy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3Vs
ZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0
LgpAQCAtNTA5LDcgKzUwOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAg
ICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXpl
KCk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZl
ci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gaW1hZ2Ug
PSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwog
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBG
SVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBh
bHBoYSBtYXNrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGJiOTFkZWM5MTIyNGQ0
MTk3ZWNhODFiYmRiYzRlMDU2N2U0M2MwNGQuLjY2MWEwM2NjNGEwZGEzZWQzYTk3Y2M5OGYzZWM1
MzY1MWUzYTI5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zMzgsOCArMzM4LDkgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFn
ZS5nZXQoKSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdl
LmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBtX2NnSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpOworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KTsKICAgICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0zNDcsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkK
ICAgICAvLyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUgaW1h
Z2UgcmUtcGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNvbG9y
IHRhYmxlIGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgp
KTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNl
KGltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JTcGFj
ZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9k
ZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRl
eHQ7CkBAIC0zNjIsMjIgKzM2MywyNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAg
ICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1v
ZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0bWFw
Q29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lk
dGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lk
dGgsIG1faW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2Nh
cmQgdGhlIG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20g
dGhlIGJpdG1hcCBjb250ZXh0LgotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwotICAgICAgICBt
X2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAgICAg
fQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBv
bmVudChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdl
R2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgaWYgKCFtX2NnSW1hZ2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9ybUlt
YWdlKCk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNv
bXBvbmVudChpbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VH
ZXRCaXRzUGVyUGl4ZWwoaW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ICE9
IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJpdHNQ
ZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRt
YXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0lt
YWdlR2V0Qml0bWFwSW5mbyhpbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3VyY2Ug
PSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBpbnRv
IG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90IHRv
IHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MTksNyArNDI0LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGkKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvTm90aGluZzsKICAg
ICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBzd2l0Y2gg
KENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgeworICAgIHN3aXRjaCAoQ0dJ
bWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAg
ICAgICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvVW5tdWx0aXBseTsKQEAgLTQ2MywxNCArNDY4
LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VGb3Jt
YXQgPT0gRGF0YUZvcm1hdDo6TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdl
dERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZS5n
ZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBtX2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZE
YXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgc3JjVW5w
YWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0
ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0lt
YWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcgPSBi
eXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYgKHBh
ZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBAIC01
MjksOCArNTM0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZh
cyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICAgICAgZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSwgMCkpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKLSAgICAg
ICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpOworICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93
Qnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCisgICAgICAgIGRhdGFQcm92aWRlci5nZXQo
KSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mg
c3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgog
ICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUg
Y29ycmVjdApAQCAtNTQzLDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAgICAg
Y29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgw
LCAtaW1hZ2VTaXplLmhlaWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlU2l6ZSwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVP
cGVyYXRvcjo6Q29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JhY2tlbmQuY3BwCmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1YzE3
YjMuLjhjNWFiZjdjOTNlNzk3MTNmNzEzYTZkYmRlOWJjMDE3ZjIxZjg5YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKQEAgLTc0LDE3ICs3NCwxNyBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNv
bgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBpbWFn
ZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGlu
Z0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYgKHJl
c29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29s
dXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2Fy
eShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUoY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgYmFja2VuZFNpemUpKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgo
KSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxTaXplOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXpl
SW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBp
bWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAg
ICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSkpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpCkBA
IC05NSw3ICs5NSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+CiAKIFJlZlB0cjxJbWFnZT4g
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAg
ICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwog
ICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQ
cmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Y29weUJlaGF2aW9yKTsKICAgICBlbHNlCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGQKICAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsK
IAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAg
ICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250
ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0
b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgYXV0byB1dGkgPSB1dGlG
cm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFn
ZTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByb3RlY3RlZFBpeGVsQXJyYXk7CiAK
ICAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0KCksIGpwZWdVVEkoKSkpIHsKQEAgLTE1OCwxMCArMTU4
LDEwIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAKICAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJheURp
bWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgo
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxl
ID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7
Ci0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOworICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGlt
YWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwog
ICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBi
YWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNr
ZW5kU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5n
ZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tl
bmRTaXplKCkuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApp
bmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNmZjk0ZTc4ODUyYzZjOTIwLi42YzAzM2M2Mzgz
OGFmZTFhMGY2MjdkNmI0NGExNTQ2ZjNmZWVlNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1fY29u
dGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNv
cHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKSk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSkpOwog
CiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2Jh
Y2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAgIGNh
Y2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9kYXRh
UHJvdmlkZXIuZ2V0KCksCi0gICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSk7CisgICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSkpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmgKaW5kZXggYjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2MyN2E1NDk3MzEw
ODI4NS4uN2QyMzNkMjIyNzg1YWQzZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZl
SW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdlYjhiM2QxYWQ4
OGQwYWIzZjBlZWY5MGE3YzhkODVlMDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJiODk3MTBhZTgz
N2ZiZjliMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEz
NSwxNCArMTM1LDE0IEBAIENvbG9yRm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAgICBy
ZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0
aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewotICAgIHJldHVybiBJT1N1cmZhY2U6OnNpbmtJ
bnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKSk7CiB9CiAK
IHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdD
b25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhZGp1c3RlZFNy
Y1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBz
aW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
b3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1f
YmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZEYXRh
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKaW5kZXggMzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQwY2M3
NDBmYi4uZjUwOWVlZTY1YTcyMmUxMjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3Q29u
c3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCmluZGV4IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0NmJlYTg3NDQ1
YWJhMGMuLmNkYWYxNWMxMDlkYzc5NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJDRzo6ZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHJl
dHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgZGVjb2RpbmdPcHRpb25zKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewog
ICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgg
JWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9wdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaAppbmRleCA0Njc5MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1MDZkZGY2YjNi
Li44YmEzMDA5ZDNiNmI2MzQ5NzNiYWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAg
LTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJ
bmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1YmQ5Y2I2NDZh
NWJhZGViZGFkYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5hdGl2
ZUltYWdlLmgiCi0KLSNpZiBVU0UoQ0cpCi0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW5jbHVkZSAi
SW50U2l6ZS5oIgotI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKLSNpbmNsdWRl
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsK
LSAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSks
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKLX0KLQotYm9vbCBu
YXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBD
R0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsK
LSAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAo
aW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwotfQotCi1Db2xvciBuYXRpdmVJbWFnZVNpbmds
ZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgaWYg
KCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAg
ICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdC
QQotICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwot
Ci0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAg
IENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVD
b3B5KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOwotCi0gICAgaWYgKCFwaXhlbFszXSkKLSAg
ICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOwotCi0gICAgcmV0dXJuIGNsYW1w
VG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQotewotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAg
ICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7Ci0jZW5k
aWYKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggY2JmNjI0ZjYyNzNjM2I1N2Fi
OWYzZGJjYzVhYjE3ZDVlMzE5NmQ0YS4uNjk1NGM1NjY1NzBhZDdhZTZjMWU3NjBmMDc4N2QzNzcw
YWNhYTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCkBAIC02MywxMCArNjMsMTcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4K
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVy
blRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFBsYXRm
b3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIAorICAgIGlmICghcGxhdGZvcm1JbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90
aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGlu
c3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3Jh
Y2tzLgogICAgIGlmIChtX3JlcGVhdFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBw
YXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAg
ICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAg
ICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBu
b3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAg
Ly8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC03NywxMCArODQsMTAgQEAg
Q0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8g
dGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxs
IHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1h
Z2UoKS5uYXRpdmVJbWFnZSgpLmxlYWtSZWYoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxh
dGZvcm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0
dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxi
YWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3Rh
bnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIENHUGF0dGVy
bkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwg
a0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3Mp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QbGF0Zm9ybUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGxhdGZvcm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTkwMWMwYjQ1YmQzZTg4MzBiNTRl
NGM5YjkwNDAzMjNjY2ZmMzhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDRykKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5oIgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0
KCkpKSA6IEludFNpemUoKTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxwaGEoY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0g
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIChpbmZvID49IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZp
cnN0KTsKK30KKworQ29sb3IgcGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBpZiAoIWltYWdlIHx8IHBsYXRmb3Jt
SW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3Io
KTsKKworICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKKyAgICBhdXRvIGJpdG1h
cENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwg
c2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKworICAgIGlmICghYml0bWFw
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBDR0NvbnRleHRTZXRCbGVu
ZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSks
IGltYWdlLmdldCgpKTsKKworICAgIGlmICghcGl4ZWxbM10pCisgICAgICAgIHJldHVybiBDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjazsKKworICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8
U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KKwordm9pZCBjbGVh
clBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7
CisjaWYgQ0FDSEVfU1VCSU1BR0VTCisgICAgaWYgKGltYWdlKQorICAgICAgICBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyNlbmRpZgorfQorCit9CisK
KyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2UubW0KaW5kZXggMDJhZGEwZDFiMTkyNDcxM2ZhZTU4NGVlYTEwN2Q5ZGEzNDJk
ZDcwNC4uMzhkZTg1NTJmMWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMTc3LDcg
KzE3Nyw3IEBAIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKFNvdXJjZUdyCiAgICAgaWYgKGlzPEFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkpCiAgICAgICAgIHJldHVybiBbQ0lJbWFnZSBpbWFn
ZVdpdGhJT1N1cmZhY2U6ZG93bmNhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUlt
YWdlKS5zdXJmYWNlKCkuc3VyZmFjZSgpXTsKICAgICAKLSAgICByZXR1cm4gW0NJSW1hZ2UgaW1h
Z2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAg
IHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZl
SW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKIH0KIAogUmV0YWluUHRyPENJSW1hZ2U+
IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvckZFQ29sb3JNYXRyaXgoY29u
c3QgRkVDb2xvck1hdHJpeCYgZWZmZWN0LCBjb25zdCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+
PiYgaW5wdXRJbWFnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
MWM5YjdhMTQxZDQyYmU2Y2I1Y2E5NzY4ODgxYTcxNWFmODFhZDUyMS4uYzdlZGQ3NThkOThmZTE5
MjdhYzUyMzY1NGUxZGY0NjkzOGEwZjI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCiAgICAgcmV0dXJu
IHRzOwogfQogCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX2ltYWdl
U2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDgyYjBjZTE5N2MxMmNlODRkMzE3NDFhNjlj
ZGUxYTQyMmExZDNkNTcuLjJmNzZlY2FmNmY4Mzc3ZWI0YmRjYTYzMTc5MmJlNzMwMDc5ZjRkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0
OyB9CkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIFJlZjxOYXRpdmVJ
bWFnZT4gbV9pbWFnZTsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0
IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CkBAIC0xMzgwLDcg
KzEzODAsNyBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdl
PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlv
bmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+
PiBpbWFnZTsKICAgICBkZWNvZGVyID4+IGltYWdlOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKaW5kZXggZjE0MjlkODNhOTM1ZWJkNTFhNjg5NTc1ZTA1ODg3ZWIwYjUxMzc4ZC4uYmYz
Y2IzNDAxNDFkM2VmN2EwMTZlNGU5ZWVjNTdjYWVlYWRkYWNhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVjb3Jk
ZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNv
bnN0IEZsb2F0UmVjCiAgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
IH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAppbmRleCBmOTUxY2ZhYTJjYWNjOTZkNGMxYTE4YTI1ZmE1ODk2MDc5
MjI0NmQ0Li4zMzUzNTk5MzIyMDBkYzRkM2I1NzJhMWRiMWQ5MzY1OWZhNzI0MWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2
YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGls
ZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRjOTk0YjczMWZhODk1NGVm
ODgwM2FkYzI4ZjRmMjcxZWZmNTg5YjcuLmMwYWFlM2E3ZDQ5ZWYyYjdkNTdhOTE2NTE0ZTYwZjk4
OTZkN2Q2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00
NiwxMSArNDYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXpl
KSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAorICAgIFBsYXRm
b3JtSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFn
ZSgpLm5hdGl2ZUltYWdlKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZSgpLm5hdGl2
ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICB9CiAgICAgdm9pZCBkcm9wSW1hZ2UoKSB7
IG1faW1hZ2UgPSBudWxscHRyOyB9CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgp
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdl
bmVyYXRvckxvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4
IDZlMmVhMDc5N2JkM2NmZDNlOWQ0NTAwODQ5NjhlOGQzMzM5NTlhN2QuLjU4NjlkOGM4NmE0MTk0
ZDNlMzg4ZWM5MjBlNTI1N2U3ODI2OTFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1
YnNhbXBsaW5nQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGluZGV4
IDw9IG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBj
b25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nKSBmaW5hbCB7IH0KICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjNGNlMTJkYjcwZmIwOWQ4YmI5YjIyZTExMGQyYjcz
ZjVlNjc5MjE4Li5mMWY4N2ZiZTNlYTQ1OWNlY2M2MjViZTZjNTRlMzZhMGFhMDA1YTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzIx
NSw3ICszMjE1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnQKICAgICByZXR1cm4gbV92aWRl
b1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqbGF5ZXJC
dWZmZXIuZ2V0KCksIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IDE4ZTZkNjg4NjY3ZDdjMzJjMTVlOGZjZmRlN2RiYzQ5OWI1MWRhZWIuLjBh
YjJjNmM5MTRiZmUzY2FkNjEyN2VkOTYwNjJlNzM3OTA4YWQxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJs
aWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpIG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVFbmFibGVk
VmlkZW9UcmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUd0ay5jcHAKaW5kZXggY2Q1MGExZTg2YzIzMTI2ZmRiODkxNGRhM2EzOTcwMWZkZGQ2
YTY2MS4uNzM4MGViZjQ3NjYwMWNkMGQ4ZGZjMzZiZjQ4OGExODAyNDdjMDhmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCkBAIC01
Niw3ICs1NiwxMCBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25z
dCBjaGFyKiBuYW1lKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRHZGtQaXhidWYoKQog
ewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICByZXR1cm4gc3VyZmFjZSA/IGNhaXJvU3VyZmFjZVRv
R2RrUGl4YnVmKHN1cmZhY2UuZ2V0KCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCA4MTM2YzFmZmY0NWI5YTMxNzdh
OTY4YmI2ZjYyYjJkZjg5MDdkYTU1Li5jMjQ3OTVmNTA5YTMzNmVmMGQ3YjE3MWQyNjY0NDZjYWFl
ZjIxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNv
bklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1J
Y29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ljb246Okljb24oY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiAgICAgOiBtX2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBA
IC00Nyw3ICs0Nyw3IEBAIFJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8pCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUmV0YWluUHRy
PENHSW1hZ2VSZWY+JiBpbWFnZSkKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1h
Z2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogICAg
IEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAKICAgICBjb250ZXh0LnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2gpOwot
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QpOworICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UobV9jZ0ltYWdlLCBz
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCA2OTA4ZjEwNzYzMmU4OTAxOGNh
OTBlOTkwZjM0NDg3N2I5NGI2ZmI5Li5jYWQ5YmIyNzUzZTM0ZWUxOTViYWU1YjU1ODY3NTNjMTI2
ODBmMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lt
YWdlTWFjLm1tCkBAIC03NCw3ICs3NCw3IEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2Uo
KTsKIH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRh
dGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+JiBuYXRpdmVJbWFnZXMpCitSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3Rv
cjxSZWY8TmF0aXZlSW1hZ2U+PiYgbmF0aXZlSW1hZ2VzKQogewogICAgIC8vIElmIG5hdGl2ZUlt
YWdlcy5zaXplKCkgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNu
J3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFn
ZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQg
Z3JhY2VmdWxseSwKQEAgLTg5LDcgKzg5LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFw
SW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHIKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdl
IDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0
aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOworICAgICAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0
aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIGRhdGE7CkBAIC0xMjgsNyArMTI4LDcgQEAgUmV0
YWluUHRyPE5TSW1hZ2U+IEJpdG1hcEltYWdlOjpzbmFwc2hvdE5TSW1hZ2UoKQogICAgIGlmICgh
bmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBkYXRhID0g
dGlmZlJlcHJlc2VudGF0aW9uKHsgbmF0aXZlSW1hZ2UgfSk7CisgICAgYXV0byBkYXRhID0gdGlm
ZlJlcHJlc2VudGF0aW9uKHsgbWFrZVJlZigqbmF0aXZlSW1hZ2UpIH0pOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCmluZGV4IGIwMDc5OWZlN2QyMjE0YzU1MGE4M2EzN2FmMTg4N2EyNTA5ZjJlNjQu
LjlmMTEyNGZlYTcwNzY2ZTZlMWM2NGJkYjVjN2M2M2IwYWU5YTQ1OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTA5LDExICsxMDksMTQgQEAgdm9pZCBOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1
ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAg
ICAgICBhdXRvIG5hdGl2ZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uo
V1RGTW92ZShtX2ltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShuYXRpdmVJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
bmF0aXZlSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2
ZUltYWdlKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpO
b0ZsYWcpOworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJ
bWFnZS0+aGFzQWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBU
ZXh0dXJlOjpOb0ZsYWcpOwogI2lmIFVTRShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0
byogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRv
KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2lu
dCgpLCBzaXplKSwgSW50UG9pbnQoKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1
cmZhY2UpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDhiYzVkMjdiZTYzNWVmZGQ1YTdkMWY2YzQ3M2Yy
OGQ4OGYyOTY1OGEuLjdiMjk5YTVmNDcxOTdlOWIwYjA3MjJiNjM0ODE0NWJiMGE2ODMxYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCkBAIC01NTQsMTQgKzU1NCwxNCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
bmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQ
YWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90Piwg
RmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86
OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVm
YXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJl
cGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+
KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAg
IENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJn
PDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8
NT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92
ZXJyaWRlCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAgICAg
VU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRl
eHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4o
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihuYXRpdmVJbWFnZS5wbGF0Zm9ybUlt
YWdlKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC01OTIsOCArNTkyLDggQEAgdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QKICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcp
OwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShz
dXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxEcmF3UGF0dGVybj4obmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSwgSW50
U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC0x
MDc3LDggKzEwNzcsOCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UuZ2V0KCkpLCBk
ZXN0UmVjdCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0lt
YWdlQnVmZmVyPihuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCkpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmgKaW5kZXggNjkxZTc0MTgwMDNlNTc1OGE2MDQ0ZjNjOTc5MWIzMTA4YWQzN2MyZi4uNjZl
YWRlODVkYjFiNTE4MTNmYWIzYjc1NjYzZmRhZWNhZGY2NjJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjks
NyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFn
ZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdl
OjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUx
NDI0MTgwYzhhYjVkMGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFw
VGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRh
cmdldFJlY3QsIGNvCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5h
dGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBhdXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1h
Z2VEYXRhOwogCiAjaWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9
IGZyYW1lSW1hZ2UuZ2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkp
OwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJm
YWNlKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCmluZGV4IDJhYmY0MzgyZDMwMGY0ZTFkMzMyMTkzMWVhOTlkYTQ0NGZhMWUz
OGYuLjQwNjMzYTAxOWRjZGQzMDdlMjEwOGQ3NTk2ZjhkZTYwYWM5MzBhZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8
R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5
KiBmYWN0b3J5LCBHcmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQm
IGNsaWVudCkKICAgICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBt
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdl
cykKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRo
KDApCkBAIC0yOTQsMjIgKzI5MywyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewog
ICAgICAgICAvLyBNYWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMg
Y2hhbmdlZC4KLSAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQg
cG9pbnRlciBlcXVhbGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRl
bGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0
aGUgYXNzdW1wdGlvbiB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRy
IGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAg
IC8vIFRoaXMgYXNzdW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBO
YXRpdmVJbWFnZVB0ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBh
dXRvIG5ld05hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKG5ld05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
KQorICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2Up
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQ
dHIgPSBuZXdOYXRpdmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2Ug
PSBuZXdOYXRpdmVJbWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGUoKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFn
ZShpbWFnZSk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxl
KHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBt
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZElt
YWdlID0gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKaW5kZXggM2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uNThm
NGYzNjVkMjU3MzQ3NzI5MzI3YWZiY2FkMThjN2MxNGMzZWU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtMTU1LDcgKzE1Niw3
IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlckxheWVyIG1fbGF5ZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbV9iYWNrZHJvcExheWVyOwogICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fY29tcG9zaXRlZEltYWdlOwotICAg
IE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAgICAgUmVmUHRyPFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBpbnQgbV9jaGFu
Z2VNYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCBkNTJjNWRiMDc3NjBlZjdjZjE1ZjA5YzI4Mzc4ZmNmZDRkODBk
OTUzLi43MTMzOTI0YzkxYjkyN2Y5MTAxYWIwOTZjYWIzNjYyNzBjNDQ4MWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApA
QCAtMTM4LDcgKzEzOCw2IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX3BlbmRp
bmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVBsYXRm
b3JtTGF5ZXIoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIoKnRoaXMs
ICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQog
ICAgICwgbV9yZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRp
b25UaW1lckZpcmVkKQogewpAQCAtNTg1LDEyICs1ODQsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQog
ewotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyID0gaW1hZ2UgPyBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKG1fY29tcG9zaXRl
ZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID09IG5hdGl2ZUlt
YWdlUHRyKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2Ug
PT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPT0gbmF0aXZlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7Ci0gICAgbV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuYXRpdmVJbWFnZVB0cjsKKyAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdlOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb0ltYWdlKGltYWdlKTsKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CkBAIC04NDksMTEg
Kzg0OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAgbV9uaWNvc2lhLmRlbHRhLmFuaW1hdGVkQmFj
a2luZ1N0b3JlQ2xpZW50Q2hhbmdlZCA9IHRydWU7CiAKICAgICAvLyBEZXRlcm1pbmUgaW1hZ2Ug
YmFja2luZyBwcmVzZW5jZSBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0ZWQgaW1hZ2Ugc291cmNl
LgotICAgIGlmIChtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikgeworICAgIGlmIChtX2NvbXBv
c2l0ZWROYXRpdmVJbWFnZSkgewogICAgICAgICBBU1NFUlQobV9jb21wb3NpdGVkSW1hZ2UpOwog
ICAgICAgICBhdXRvJiBpbWFnZSA9ICptX2NvbXBvc2l0ZWRJbWFnZTsKICAgICAgICAgdWludHB0
cl90IGltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmltYWdlKTsKLSAgICAg
ICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIuZ2V0KCkpOworICAgICAgICB1aW50cHRyX3QgbmF0
aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgICAgICAvLyBSZXNwYXduIHRo
ZSBJbWFnZUJhY2tpbmcgb2JqZWN0IGlmIHRoZSB1bmRlcmx5aW5nIGltYWdlIGNoYW5nZWQuCiAg
ICAgICAgIGlmIChtX25pY29zaWEuaW1hZ2VCYWNraW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZWU4ZjU3ODc5YWRh
NmM5MWYwMzk5MTkyZWY5NWM5MjRlY2UxM2U0MS4uOWYwZTE0OTZiZGNjNWQyZGI2YTllNjZiMDI0
MjM1ZDM3MjRhNjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgfSBt
X25lZWRzRGlzcGxheTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0g
ICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKIAogICAgIFRpbWVyIG1fYW5p
bWF0aW9uU3RhcnRlZFRpbWVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcj4gbV9yZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmNwcAppbmRleCA4ODM1Zjg4ZDFiYmNkMjAzYzMyNTYyZGEyNDE0Y2JjMjdiNmZiMGY4Li41
MjVhMTYzNDFlYmQ1ZmU2NDE5ZDgyZDgwYTA0MzA0ZGJhNzIyZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmNwcApAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsCiB9CiAK
IAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3Jt
Q29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdQbGF0Zm9ybUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZlSW1hZ2VTaXplID0gYml0bWFwU2l6ZShpbWFn
ZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CkBAIC04MTMsMTAgKzgx
MywxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUoZGV2aWNlQml0bWFwLmdldCgpKTsKLSAgICBkcmF3
TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7
CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBz
aGFkb3dTdGF0ZSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdQbGF0
Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQx
Qml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBiaXRtYXBTaXplID0gaW1hZ2UtPkdldFNpemUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dDJET3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdDJET3BlcmF0aW9ucy5oCmluZGV4IDc0YTEwMzY3MDlmMzg1NWNlOGQ1NGY3NWVjYzM2ZjMx
ZDg2MzJjNWEuLjVkMTk2MDgwY2RlNDU1MDcwNWMzOTdlZjk5Yzk2Yzg0OTY4Nzk2Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0
MkRPcGVyYXRpb25zLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tl
U291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRm9u
dCYsIGRvdWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiYgZ2x5cGhzLCBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsQWR2YW5jZXMsIGNvbnN0IFZlY3RvcjxEV1JJVEVfR0xZ
UEhfT0ZGU0VUPiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCwgY29uc3QgU2hhZG93
U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQs
IGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdGgoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29u
c3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmLCBDT01QdHI8SUQyRDFCaXRtYXA+JiYsIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3
NGVjOTkuLjNhNjhkYzNhYTAxNTUzNjg0NjRmNTE3MjM1ZWMwYTMxOWY3ZDU3ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUo
KnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFC
aXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBj
NTNkOGJmODVjMDk5Mzg4MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzLi44OGE2NWY3YmJlYzNlYTE0
ZTVkZTQ2NjRjNDhjMTAwNjFlZGJlMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmNwcApAQCAtMjgzLDEwICsyODMsMTAgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdAog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhp
Y3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSBncmFw
aGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9w
bGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UucGxh
dGZvcm1JbWFnZSgpLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
LCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDk1ZWIzNzBiNzViYWRl
MDM5ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2MuLmMxOTdiNDg5YzI5MjZjYTY1OGQ3MzVlN2UxMzNm
OTIxODBmZmM0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcx
LDcgKzcxLDkgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxl
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICAKKyAgICBib29sIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5jcHAKaW5kZXggN2QyNDhlNmQ1OGQ5OGM5MjhlM2FjZWYyMmU2OTdi
NjRlODFjNWM5NC4uNjU2Y2IxNGU3Mjg4ZjIzYTg5MTdmMjI4ODlkYTczZTliYzk0YTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBiaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBiaXRtYXA7CiAgICAgSFJFU1VMVCBociA9IGJpdG1hcENvbnRleHQtPkdldEJpdG1hcCgmYml0
bWFwKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKQEAgLTkwLDcg
KzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRy
KTsKIH0KIAotSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBOYXRpdmVJbWFnZVB0
ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRl
eHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgUGxhdGZvcm1J
bWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdlQnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQogICAgICwgbV9wbGF0
Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNvbnRleHQpKQogICAgICwgbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Zmx1c2hDb250ZXh0KCkKICAgICBjb250ZXh0KCkuZmx1c2goKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDT01QdHI8SUQyRDFCaXRtYXBSZW5k
ZXJUYXJnZXQ+IGJpdG1hcFRhcmdldDsKICAgICBIUkVTVUxUIGhyID0gY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJpdG1hcFRhcmdl
dCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weQogCiAgICAg
fQogCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdU
Rk1vdmUoaW1hZ2UpKTsKIH0KIAotc3RhdGljIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElE
MkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorc3RhdGljIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJU
YXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMpCiB7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0aXZlSW1hZ2VT
aXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwogCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBzdGF0aWMg
UmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElEMkQx
Qml0bWFwUmVuZGVyVGFyZwogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVz
b2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
aW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CisgICAg
ICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2Uo
KTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAKICAgICBhdXRvIGJpdG1hcFRhcmdldCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCkpOwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKGJpdG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNv
bHV0aW9uU2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKQEAgLTE4NywxMSArMTg3LDExIEBA
IFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2Uo
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJpdG1h
cFRhcmdldC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNvbHV0aW9u
U2NhbGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQq
IHJlbmRlclRhcmdldCkKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKIHsK
ICAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuaAppbmRleCBjZWYzOWVhNzkyMTFkNWYxOGRmNjUwNDk5NDc5MjQ2YzQ1N2RjMjYx
Li4xZDU3NGFlZWNkYjlkMjI4MDIxNGYxYzBjYWY1ZmM1NjAwOTExNDQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbHVzaENv
bnRleHQoKSBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJbWFnZT4gY29weUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKSBv
dmVycmlkZTsKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiBtX3BsYXRmb3JtQ29udGV4dDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgTmF0aXZlSW1hZ2VQ
dHIgbV9iaXRtYXA7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2JpdG1hcDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3NGQzNmRmZDU4YzM3NmU4NGY5M2I5ZDRlOTIx
MzNkNTUzY2QzYTRiLi42ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhkNDE2ZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6
OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAgICAgLy8gVGhlIEJpdG1hcEltYWdlIHRha2VzIG93
bmVyc2hpcCBvZiB0aGlzLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUoY2dJbWFnZSkpKTsK
KyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGNnSW1hZ2UpKTsKIH0KIAog
Ym9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50
U2l6ZSogc2l6ZSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsK
ICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KGkpLmdldCgpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0lt
YWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgp
KSkgeworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAg
IGlmIChpbWFnZSAmJiBpbWFnZS0+c2l6ZSgpID09IHNyY1NpemUpIHsKICAgICAgICAgICAgIHNp
emVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRl
T3AgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggZDRlYWZjNTk5YTAwZjIzOTU3ODkyZTNjYWEyZTg1ZWJj
ZTM4MDVjMC4uMmNlYzk5ZGM3MjlmZTY1ZTA4NTRlZWU3MmRmYzRlZDdhZjA5NTIzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcApAQCAtOTMsMTcgKzkzLDE1IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAg
ICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOwotICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRp
dmVJbWFnZS0+c2l6ZSgpICE9IHNyY1NpemUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNT
aXplLndpZHRoKCkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJy
ZW50RnJhbWU7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBk
cmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCks
IHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwotICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworICAgICAgICBt
X2N1cnJlbnRGcmFtZSA9IGk7CisgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9z
aXRlT3AgfSk7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3
YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwCmluZGV4IDIxYzE5ZWM2M2I1NDY5MGZjYzI5Y2Q4MDZkMzQ3N2RhNjk2
NGRjMzUuLjc3YjFhNGExODg4MWMwYjVhMjIzOTcwY2YwMTQ3NmUxZTkxZTYyNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVy
RGlyZWN0MkQ6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdl
dCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29k
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA3
NmQ3YWNhOTNlMzkyNDI3YjI2NTM1NGNhZjJlMzJlZWFjY2YxN2UwLi5jMGRjYWZkNjk1NGM1N2Rl
YjM5MjA0ZTlmYmIwNmFkMGIxYzkxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4
KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0
MkQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGY3OGMyMzhmMThmOTliYzUw
OWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNs
dWRlICJEaXJlY3QyRE9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNs
dWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgot
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCi0jaW5jbHVkZSA8ZDJkMS5oPgotI2luY2x1
ZGUgPHdpbmNvZGVjLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIElXSUNJbWFn
aW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQotewotICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0Zh
Y3RvcnkqIGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKLSAgICBpZiAoIWltYWdpbmdGYWN0b3J5
KSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0ltYWdp
bmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdTKCZp
bWFnaW5nRmFjdG9yeSkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Ci19Ci0KLUludFNpemUgbmF0aXZl
SW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBVSU5UIHdpZHRo
ID0gMDsKLSAgICBVSU5UIGhlaWdodCA9IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7Ci19Ci0KLWJvb2wg
bmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAg
aWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRDJEMV9QSVhFTF9GT1JN
QVQgcGl4ZWxGb3JtYXQgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsKLSAgICByZXR1cm4gcGl4
ZWxGb3JtYXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05PUkU7Ci19Ci0KLUNvbG9y
IG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKLXsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50
U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotCi0gICAgcmV0dXJuIENvbG9yKCk7Ci19Ci0KLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIGF1dG8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0K
LSAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNt
YWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5h
dGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRo
ZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAgICAgIGFk
anVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSks
IEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGF1dG8mIHN0YXRl
ID0gY29udGV4dC5zdGF0ZSgpOwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRm
b3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotCi0jaWYgQ0FD
SEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xl
YXJJbWFnZShpbWFnZS5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdlRGly
ZWN0MkQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlYTg2YmZmYWFmODM3Yzg2MGZiNGFlZDQzZDkyNmI2MWNm
YWEyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJELmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKKyNpbmNsdWRlIDxkMmQxLmg+CisjaW5j
bHVkZSA8d2luY29kZWMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSVdJQ0lt
YWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCit7CisgICAgc3RhdGljIElXSUNJbWFnaW5n
RmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkgPSBudWxscHRyOworICAgIGlmICghaW1hZ2luZ0ZhY3Rv
cnkpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IENvQ3JlYXRlSW5zdGFuY2UoQ0xTSURfV0lDSW1h
Z2luZ0ZhY3RvcnksIG51bGxwdHIsIENMU0NUWF9JTlBST0NfU0VSVkVSLCBJSURfUFBWX0FSR1Mo
JmltYWdpbmdGYWN0b3J5KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRChocikp
OworICAgIH0KKworICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKK30KKworSW50U2l6ZSBwbGF0
Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBVSU5U
IHdpZHRoID0gMDsKKyAgICBVSU5UIGhlaWdodCA9IDA7CisgICAgaWYgKCFpbWFnZSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBpbWFnZS0+R2V0UGl4ZWxTaXplKCk7Cit9CisK
K2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhhKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
KQoreworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEQyRDFf
UElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CisgICAg
cmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhBX01PREVfSUdOT1JFOwor
fQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXpl
KGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAg
IG5vdEltcGxlbWVudGVkKCk7CisKKyAgICByZXR1cm4gQ29sb3IoKTsKK30KKwordm9pZCBjbGVh
clBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworI2lmIENBQ0hFX1NVQklNQUdFUworICAgIGlmIChp
bWFnZSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwor
I2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
dXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAK
aW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUxZDY2ZDVjMC4uZWRlZDdlOGRk
MjNhYmIzNjBlOGRhYjQ0MzVmMzEyMDkzOGE1ZWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2MywxMSBAQCBzdGF0aWMgR1JlZlB0cjxH
ZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90
KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zy
b21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZl
SG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsKICNlbHNlCi0gICAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKTsKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJt
aW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFkb3B0R1JlZihnZGtfY3Vy
c29yX25ld19mcm9tX3N1cmZhY2UoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgc3VyZmFjZS5n
ZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKSk7CiAjZW5k
aWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwCmluZGV4IDZhMWE3M2Y5ZDdmZmUxMDhmNzZlOWI0M2IzYThmYjkzZjllMDNhMzIuLmFl
ZWNmY2Y1MjI3MGM1NWRiYWViYzEwY2UxMmFlM2I5MWI4M2JhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC04Niw3ICs4Niw3IEBAIERyYWdJ
bWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdlLCBm
bG9hdCBmcmFjdGlvbikKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJ
bWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJuIGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogfQogCiBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjljYWU4Zjk3ODE1MTA0
MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3MGI1MWY1ZWY1MGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgU2Vj
b25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgU2Nh
bGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQ
dHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2Vz
IGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBp
bWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4
IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4MzIyMmVjM2JiMzg1
NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9m
aWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBiODM1YTY5Y2Jj
NDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjlj
NTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQbGF0Zm9ybUltYWdl
UHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAgbV9waXhlbHMtPnJl
ZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWly
b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0MGViZTc2YWYwMzFm
YTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcwNjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzksMTEgKzIzOSwxMSBA
QCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAg
ICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2UuZ2V0KCkpLCBJT1N1
cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAotICAgICAgICBbXShS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAgICAgICBbXShSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAgICAgIGlmICghaW1h
Z2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAgICAgcmV0dXJuIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7CiAgICAgICAgIH0K
ICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXpl
KCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAgICAgICAgW3RoaXMs
IHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNh
bXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNy
ZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOworICAgICAg
ICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAg
IH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAppbmRleCBm
ZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZiMjQ0YTQ4NDkzZDJh
NWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsK
IAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gV1RG
OjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+
OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPE5hdGl2
ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNzIENhcHR1cmVyCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExvZ2dlckhlbHBlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDNmNmNiNmVkNWRm
YTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLmIwNTlhMzI1MWQ4Yjk2NTdiYTkwMTRjNDRm
ODA2M2FmODI3YjFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KQEAgLTkxLDggKzkxLDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVw
ZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKQogICAg
ICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZUJ1ZmZlci0+
Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkp
OwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRl
TWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgp
LCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOworICAgIGF1dG8gc2FtcGxl
QnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocGxhdGZv
cm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsKICAg
ICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAxZGJlZDM2NTQ1NmUyMjgz
YWQ0ZTBhZGFhMWI3Yzc1YzkzNzdjMmYxLi4zNGVkOWVmOGNmNGY4NjZjYTAzZmRjYTkzMDRhOTYw
OTZiYzY1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
R1dpbi5jcHAKQEAgLTEzOSw4ICsxMzksMTAgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAgIENHQ29udGV4dFNl
dEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGRy
YXdDb250ZXh0LCByZWN0KTsKICAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1h
Z2UoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0Js
ZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwg
cmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0g
c3JjSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0Qmxl
bmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBwbGF0Zm9ybUltYWdlLmdldCgpKTsK
KyAgICAgICAgfQogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAK
aW5kZXggM2E1ZTAwYmU2NzE4YjExODYyOTg2OGJhZmJhYzc5N2NlNmZlMDdiNS4uMDQxNzY2Yjcy
YzUyMDMyOGI3NGNlNTljNjk4OGE0YzZiNDQyNWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0xNjIsOCArMTYyLDkgQEAg
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9y
aWVudGF0aW9uKQogICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLjAsIDAuMCwgMS4wKTsK
ICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHN1cmZhY2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYg
KHN1cmZhY2UpIHsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgIGlmIChuYXRpdmVJbWFnZSAmJiAhbmF0aXZlSW1hZ2UtPmlzTnVs
bCgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fpcm9fc2V0X3NvdXJj
ZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAgICAgIGNhaXJvX3Bh
aW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRl
eCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4xMTFhNGIyYzM1NWMw
N2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5m
byYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVjdC53aWR0
aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJhZGdlRGlt
ZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAotICAgIENJSW1hZ2Ug
KmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdl
KCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhD
R0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAg
ICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4g
dGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBSZXRhaW5QdHI8Q0dQ
YXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNv
bHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51
bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDY1
OWNkYjUzYWM1NmE2MjBiMDM5MTgzNjdhZmMyNWQxNjE3NWZhZWQuLmE4OTI0OTZmOWJjMDA4Y2U5
NjQ0ZGU2NmUyZmM4ZGNjOGVjZDZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6
ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiB9
CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1h
Z2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2VzIG93bmVy
c2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2UgbmVl
ZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCitS
ZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKICNlbmRp
ZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0
Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmlu
ZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjguLjI4MjVmOWQzODk4
ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1
bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxs
cHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKICNlbmRpZgog
I2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAj
ZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVybiBtX3BhZ2UuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1ZjVlODMxYjMxYWYz
NjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApA
QCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2UtPmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWlu
ZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3ND
b250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggZTY0NGY3YWNmMzBl
YzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUzYzU5MjI1NzM3MGYy
YjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1h
Z2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5l
clpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjg1ZWQ1YzM3ZWY3NjgxMTQ0NTgwMzU1YzlhYTQy
M2FiMTg1YzEzYS4uMWZiNzMzZDVjMTU4OTAxZjYxYTM2NjM5MWRmM2Y5MDIzYTc2OTcxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTgsNyArMjE4LDcg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIn
LAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScs
CiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4NTVjOGJjNTc4MTkyZGY4NjFh
ODE1YWIwYjIzOS4uZTU3MTNlMzAxZjYwMjZiY2I2ZGI2MjFmNGVmNGI3ZTEwZjY1MTk2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1h
Z2VSZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KDAsIDApLCBpbWFnZVNpemUpOwogICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2
ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7
CiAgICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ2M2U5MWMyODE2
MDc5MTViYjA0Zjk0MjYyMjNmMTc2ZTk3MDY1ZDEuLjE1NzEzZDVjZTkyZDI5YzE0OTM3NzVjMjNl
YjFjZGVkNjZjN2RiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtMTEwMCwxMSArMTEwMCwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8
SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdl
SGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFn
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWY8TmF0aXZlSW1hZ2U+JiBpbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgp
OwogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1h
Z2VTaXplLCB7IH0pOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKKwogICAgIGVuY29kZXIgPDwgISFncmFwaGljc0NvbnRleHQ7CiAg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTExMTcsNjMgKzEx
MTgsMzAgQEAgc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQog
Ci1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2Rl
ciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQorT3B0aW9uYWw8UmVmPE5h
dGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkQ3JlYXRlR3JhcGhpY3NDb250
ZXh0OwogICAgIGRlY29kZXIgPj4gZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0OwogICAgIGlmICgh
ZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdyYXBoaWNz
Q29udGV4dC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8gaW1hZ2UgPSBi
aXRtYXAtPmNyZWF0ZUltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGVuY29kZU9wdGlvbmFsTmF0aXZl
SW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewot
ICAgIGJvb2wgaGFzSW1hZ2UgPSAhIWltYWdlOwotICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7Ci0K
LSAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGlt
YWdlKTsKLX0KLQotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFs
TmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewot
ICAgIGltYWdlID0gbnVsbHB0cjsKLQotICAgIGJvb2wgaGFzSW1hZ2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNJbWFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
aGFzSW1hZ2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGRlY29kZU5hdGl2
ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUlt
YWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKLXsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsK
LX0KKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotYm9vbCBBcmd1bWVudENvZGVyPE5h
dGl2ZUltYWdlUHRyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKLXsKLSAgICByZXR1cm4gZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShkZWNvZGVyLCBp
bWFnZSk7CisgICAgcmV0dXJuIG1ha2VSZWYoKm5hdGl2ZUltYWdlKTsKIH0KIAogdm9pZCBBcmd1
bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IGFiY2EwMjQwYjZkYTk0ZjgzNTg1YmFmMTljYjQ5NmIwOWI5MmI4
ZTMuLjRhOTMyMTU5MTMwY2I3YmNkZTU1ZTIxMWUxN2M0YmVkZWYxNzA1ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0
TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJ
bWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaD4KQEAgLTQxOSw5ICs0MTksOSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUm
KTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHI+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
PiYpOworICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgzZDVmNjk4OGIyMTE1ODhkYTdkZGI0ZmYxODNk
Y2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMzMTc3YjkwM2RlMGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xODUsMTEg
KzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2
b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoKIAogUmVmUHRyPEltYWdlPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxh
dGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtl
Q0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0
bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1h
cERpcmVjdDJELmNwcAppbmRleCBiMzg3OWEwMDQ0ZTY4MTllOGI1Zjk2ZmNkYmQ3MzQ1YTk1MGMy
NjI0Li4wZjMwZDk0YTcxNDk5MmY4MTdhYTNjZjg1YmUwYzMxYmI5NTNmZDM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAK
QEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSQogICAgIGF1dG8mIHBs
YXRmb3JtQ29udGV4dCA9ICpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgSW1hZ2VQ
YWludGluZ09wdGlvbnMgb3B0aW9ucyB7IHN0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yLCBzdGF0ZS5i
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24oKSwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSB9OwotICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBtX3NpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zLCBz
dGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgRGlyZWN0MkQ6
OmRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgbV9zaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiBDT01QdHI8SUQyRDFCaXRtYXA+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlRGlyZWN0MkRTdXJmYWNlKElEM0QxMURldmljZTEqIGRpcmVjdFhEZXZp
Y2UsIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4Njdl
YjJhMGZjNGVjODU3ZjM0NzVhNGU4MjVhMzVjLi4zMWMzOGYzNjEzYjM2YjUxZGVjMGZlZGExYjdi
YzE3Nzc5ZGYwZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
Y2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29ucwogICAgIH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VX
cml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFBsYXRmb3JtSW1hZ2VQdHImJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2Miw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9sb2Fk
ZWRJY29ucy5jb250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0
YSA9IHRoaXMtPmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIs
IE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBtX2xv
YWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBN
b25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxsb3dEYXRh
YmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJhc2VXcml0
ZSA9PSBBbGxvd0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4NywxNCArNTg3LDE0IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVS
TCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIs
IE1vbm90b25pY1RpbWU6Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
bG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIs
IE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CiAgICAgICAg
ICAgICBpZiAoIWljb25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5z
ZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkgPCBF
bmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAg
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGF1dG8gaWNvbiA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Q7
CkBAIC02MjIsMTMgKzYyMiwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBi
b29sIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRy
LCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1J
bWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAo
aWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdl
OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaWNvbkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGUpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1l
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aAppbmRleCA5NjEyZjk5YzJjZmI3YzUxMzY0ZTgxZWM4Y2YxMDllNjMxOGUwMzliLi5lMjI1MmEw
MDAwZDJiYmU1YjZmNjljZDIyNzFkMDBhMTI1YzU3NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGNoZWNrSWNvblVSTEFuZFNl
dFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGJv
b2wpPiYmKTsKLSAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxv
d0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImJik+JiYpOworICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYs
IEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlUHRyJiYpPiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwg
QWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYjsKICAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBtX3BhZ2VVUkxUb0ljb25VUkxNYXA7CiAgICAgTG9jayBtX3Bh
Z2VVUkxUb0ljb25VUkxNYXBMb2NrOwotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZEljb25zOworICAg
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciwgTW9u
b3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CiAgICAgTG9jayBtX2xvYWRlZEljb25zTG9jazsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faWNvbklE
Rm9ySWNvblVSTFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGU0OGZjZTQ3MGMxMGFkZmZh
NjJlNDc3Yjc4MzkzNjNjMjVlOTgwMjkuLjhlZjFjZTQxMjczNmE4ZWVkM2M2YWExNmMwMzJiMzNh
ZGI5YmY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtODYsMTEgKzg2LDExIEBAIHN0YXRpYyBSZXRh
aW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKV0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZp
ZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggZTFiMzlmNTQyZGQzOTgwNmJmZWI5NTNmZGQ2NDI1NjVjOTRhOTFhOC4uNzgzNGVl
ZjI0MGEwZjVkYTAxMDY0N2M5Yjg1ZDgzMzc4ZmRiZWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03
NTQ2LDcgKzc1NDYsNyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Qcm92aWRlciAqPiAqZXh0cmFj
dEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJvcAogICAgIGlmICghX2Ryb3BB
bmltYXRpb25Db3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1bnNlbGVjdGVkQ29u
dGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgYXV0
byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICBfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCA9
IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1bnNlbGVjdGVkQ29u
dGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICBbX3Vuc2VsZWN0ZWRDb250ZW50U25h
cHNob3Qgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXNdOwogCkBAIC03NzY5LDExICs3NzY5LDExIEBAIHN0YXRpYyBSZXRh
aW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSkKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjZ0ltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCldKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGNyZWF0
ZVRhcmdldGVkRHJhZ1ByZXZpZXcgaW4gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLgpAQCAtODAz
NCw3ICs4MDM0LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxh
Y2Vob2xkZXJFbGVtZW50c1RvSW5zZXJ0V2hlbkRyb3BwaW5nSXQKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVk
aXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVj
dGVkU25hcHNob3RJbWFnZS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgICAg
ICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpwcm90ZWN0ZWRTZWxmLT5fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgICAgICBhdXRv
IHNuYXBzaG90VmlldyA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFn
ZTp1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICAgICAgW3Nu
YXBzaG90VmlldyBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107CiAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGFkZFN1YnZp
ZXc6c25hcHNob3RWaWV3LmdldCgpXTsKQEAgLTEwMDg1LDcgKzEwMDg1LDEyIEBAIHN0YXRpYyBV
SU1lbnUgKm1lbnVGcm9tTGVnYWN5UHJldmlld09yRGVmYXVsdEFjdGlvbnMoVUlWaWV3Q29udHJv
bGxlciAqcHJldmlld1ZpCiB7CiAgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5s
aW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0aXZlSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVh
c2VdOworCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJ
bmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1h
Z2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFtbW1VJSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSBh
dXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2
aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4
IGU3NmMwNjM4YzdkYTJhMDRmMWUwODliYzRkNDkwZjIyNGI4N2QyMTYuLmMzYmVlZjVkMTQwYjcy
NDM4ZGM3NTA1NjAzYWU5YTRjZGUyYTExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTk2LDE0ICs5NiwxNCBAQCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoV1RGTW92
ZShoYW5kbGUpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgcmV0
dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCkpOwogI2VsaWYgVVNFKERJUkVDVDJE
KQogICAgIHJldHVybiBudWxscHRyOwogI2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiBtX2Jp
dG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUobV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCAwNWMxMDljZDIw
MjZkMTVmODBlYjgzMmFkOWYxYjdiYTMzYmI5NTU3Li45ZTI0YWI5OWViYzY3NWNlMjAxYTU5Mzk3
MjhjNjE5ZGJhNTk1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKm1fY29udGV4
dDsgfQogCi0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKFdlYkNv
cmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2Vi
Q29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNv
cmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8p
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBjYTAyNTJhNDZl
MmMwNzFmZmQ1MzRiODMzZGJiNDU1NTg2N2VkNTgzLi43OWEyMTE0YmEyNDk3MDJjYzU1NDdmZmEx
M2IzM2MzOTYwODY0OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04MTEs
NyArODExLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDVm
ODVkZjg1MTllMWEzMWU2MjgzZGE4ZmIwMDhhMTM1YjIxM2UzNDMuLjBkNzU1MmY0OTNmMDc0MjQx
MmE2YmUyOTczOTYyMTZkYzk1ZjU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAt
MjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZv
cm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVu
dW0sIGJvb2wsIGJvb2wpIGZpbmFsOwotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggODFj
YjMxYjg1ZmYyNjg1MTAwYjk0MmY4ZWNkNjUxODdjZDQyODM4MS4uOTI5NzYwZTJkZjZiZTNjYjI3
ZDBlNWVmNmZlYzIzM2ZmNzk4MTllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2ODMsNyArMTY4Myw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6ZGlkRmFpbExvYWQoV2ViRnJhbWUqIHdlYkZyYW1lLCBib29sIHdhc0NhbmNlbGxlZCkK
ICNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xvcihCaXRt
YXBJbWFnZSogYml0bWFwKQogewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2
ZUltYWdlKCkuZ2V0KCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+bmF0aXZlSW1h
Z2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1Bl
ckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CiAKICAgICBDR0JpdG1hcEluZm8gaW1hZ2VJbmZvID0g
Q0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggNWI4Y2I2YzM4YzdhNWIxNjY3NGJmMTRhYzAxMjBjMzVmZGYzYWRmNi4uN2FhMDA0YTYx
NjllYjQwMjA0ZGIyMjRkNmVkYzIyNmYyNzI3NDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tCkBAIC01MzYsNyArNTM2LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoRXZlbnRU
YXJnZXQqIHRhcmdldCkKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAg
ICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5hdXRv
cmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmICghKmNnSW1hZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ4MTc2OTk2NzVlY2ZiYjljMjM2NzkzNWMy
MmM1N2M3OGE0YTM0ZjEuLmZkMDk2ZGRmOTUwY2JmZTgxNjNiMTM2NzVhY2RkZTMxN2I5ZjMxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMTcxLDEwICsx
NzEsMTYgQEAgY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlID0gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJl
c291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKTsKICAgICBpZiAoIWlzPFdlYkNvcmU6OkNhY2hlZEltYWdlPihjYWNoZWRSZXNvdXJjZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNo
ZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2Up
OworCisgICAgYXV0byYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJDb3JlOjpDYWNoZWRJbWFn
ZT4oKmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIWNhY2hlZEltYWdlLmhhc0ltYWdlKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5u
YXRpdmVJbWFnZSgpLmdldCgpOworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWNoZWRJ
bWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDRhYTdiZDQ4Y2MxNWM1
MzUwNDZjZDk2OWYwNDViMmE5ZjFmNzhjOTMuLmQxMDQzZjk1NmM0MTI1ZGJhY2Y2MjRkZDI0YmJi
ZDYzZDZkYmM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTg0NiwxNCArODQ2LDE0IEBAIHByaXZhdGU6CiAgICAgX3RleHRSZWN0c0luQm91bmRp
bmdSZWN0Q29vcmRpbmF0ZXMgPSBjcmVhdGVOU0FycmF5KGluZGljYXRvckRhdGEudGV4dFJlY3Rz
SW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykubGVha1JlZigpOwogICAgIF9jb250ZW50SW1hZ2VT
Y2FsZUZhY3RvciA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3I7CiAgICAg
aWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCkKLSAgICAgICAgX2Nv
bnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0
KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGln
aHQgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0
b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCktPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50
YXRpb25Eb3duTWlycm9yZWRdOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZSkK
LSAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5p
dFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgpLT5uYXRpdmVJbWFn
ZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsK
KyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5p
dFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgpLT5uYXRpdmVJbWFn
ZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0
aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRpdmVJbWFnZSgpOwogICAg
ICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6
bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0
aW9uVXBdOworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRh
dGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNl
bGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413517</attachid>
            <date>2020-11-06 21:45:11 -0800</date>
            <delta_ts>2020-11-06 22:45:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106214510.patch</filename>
            <type>text/plain</type>
            <size>253422</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uZDllNmI3NzJjYjMxNWMyZTFmZGUzMzEzMDNjNDAy
ZmQ3YzkyMjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRl
eHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0
Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpu
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRp
dmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0xheWVy
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93SW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3Jt
SW1hZ2VTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0Fs
cGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRHZGtQaXhidWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29u
OjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xp
cFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIw
MjAtMTEtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBmb3IgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9NYWMvYWNjZXNza2V5Lmh0bWwg
aW4gaXNvbGF0ZWQgdHJlZSBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWE0YzM3ZGViNDUyOTA4ZDUxOWFi
NTA4YmMwMGRhYWQ3ZmQyNjQ2Li45MGIyMzJmNzIwMzI5ZTU3YmQ2MmI5MWE2MDA5OWJlZGRmMmQw
ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0
aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQg
TmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjplbmNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2
ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvcklt
YWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1h
Z2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJl
c2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTExLTA2ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBbaU9TXSBX
ZWJBdXRobiBwcm9jZXNzIGRvZXNuJ3Qgc3RhcnQgb24gaU9TIGRldmljZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBlZDc0NDg4MDFmZDRlNWRiMTE2ODFkYzI2ZWU2ZDAxMzI3MDEw
MTkxLi42NzNhMWRhNmJjODJkNTQwMDU3OTBlZTdlNDJkYjljNTg2MzNmYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFw
c2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAg
ICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRl
eHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTExLTA0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUgaW50
ZXJuYWwgR1BVIHJlbmRlcmluZyBmbGFncyBmcm9tIFdlYlBhZ2UgdG8gV2ViUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggYTQzYzIwNTgxNjVlODQ1OTNmODk0YzZhY2JlNjg0MmUyYmNhNWYz
Ny4uZDdkNDUxMTdmZWUyMGRiMjM5MzVjN2M2YmJkOTg0YmVmMmFjZDc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAxNTJlNTdkNzdkNmIyMmFkM2Nk
ZDMwZGM0MmU2MTgwZjE3NGE4YTguLjdmY2I3MGYxMTJhOTJiNjQzMGRmM2QwN2U3YjY0NDk0YzBm
ZWQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtOTAsOSArOTAs
OSBAQCBpZiAoJHtVU0VfRElSRUNUMkR9KQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGlyZWN0MkQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRp
dmVJbWFnZURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERp
cmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJE
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFEaXJlY3Qy
RC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFseXplckhlbHBlci5j
cHAKIApAQCAtMTQ0LDEwICsxNDQsMTAgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRS
ZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLSAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDhkOTI0OTFhMDg1MzBlY2EyZTk2ZjRkYzFlNjJkMzI1YjE2
ZTQ3NWMuLmVkNmFjYjMxY2JhNWQ3MjkxYTVkMDhmODVhNDcxMzYwNzAwNDA3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTUsMTAgKzI5NSwxMCBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRTaXplQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
Zjc0M2RkYTViNzkwZGVlZjVmYTU0ZWJhNWU1MThjMzBkYWNmN2U4Ni4uMDEwNDE5ZmQ0ZmQ1NGI5
NjEzMWQ1ZDJmNmQ1MWMxYmIxYmNkMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDEsNiArMTk0
MSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFkMzNhOTU1MTky
ZDkwNzZlYjNkOGMxNjJjZmUzODYyMmRmYjE4Yy4uNjcyZGNlMzZjNzFiMWQ1ZDk5NzEzZTkxYjkz
MjQwM2M5M2YxYThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMzcsMTAgKzMzNywx
MCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFn
ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzZlNDI1M2Y4NDZkZWRlN2Y5MGJi
NThjZDY1ZDYyOWQ3YmVjNzY1Li45YTM2Nzg4Zjk4MjU4ZWNjOWFjM2RiZDkyZDMyMThlYjMxNzE5
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTU4LDcgKzIxNTgsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURD
N0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEy
NTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNB
RTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjgsNyArNzQyOCw3IEBACiAJCTM3NkRDQ0UwMTNCNEY5NjYw
MDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc3QTNBOEYx
NUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1JbWFnZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NTEsNiArOTk1MSw3IEBACiAJCTcy
NEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NjZGMDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjEsNyArOTk2Miw3IEBACiAJCTcyNjZGMDI4MjI0MzEy
MDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdB
bmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYxNjEsMTEgKzI2MTYyLDExIEBACiAJCQkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgKi8sCiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuY3BwICovLAogCQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmggKi8sCi0JCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cu
Y3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cuY3BwICovLAog
CQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIy
NzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlC
Mjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovLAogCQkJCTFG
QzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLywK
IAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
ICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENHLmNwcCAqLywKQEAgLTI2NDA1LDggKzI2NDA2LDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFB
MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0
MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIz
MTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKKwkJCQk3MjUy
Mzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAotCQkJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMjY0MTUsNiArMjY0MTYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAv
KiBQYXR0ZXJuLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQ
bGF0Zm9ybUxheWVyLmggKi8sCkBAIC0zMzQzMiw3ICszMzQzNCw2IEBACiAJCQkJQTgxODcyMjMw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0
aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5
MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY1Nyw2
ICszMzY1OCw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1
MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE1ZGFiMWY0NjRhMWU3MzIxZjQ2NTgz
YmI5NmE4ZGQwYWVhMWYxMjYuLmJlOWIxOTU0NjQ1MWQyM2RhMzNiNTkyZmU4YjQ3ZWYzZGI2YWMy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1l
bnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBIVE1M
VmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBs
YXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKaW5kZXggZWZmZjNmNjZlODEzYjc3ODY5ODBjYWJjYTM1MTBiMTIwZGI2MDQw
Mi4uM2QxOTRiMDc5MGI3NzA5MzUwZTRmODQ2YWQ5NWM5YjRiYTljZjNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAg
ICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJs
ZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDY2MzE2
ZmIwY2Q1M2E2ZjA3OTUzMjkyMGNmMDQyYzJlNjEzMDU1MDAuLjE4MGI5YjkxYzAwMzQ4NjUyMTcz
YzM0NzczNmQxZDFmYWYyOTI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjM1LDgg
KzE2MzUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGNoZWNrT3JpZ2luKCZ2aWRl
byk7CiAKICNpZiBVU0UoQ0cpCi0gICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7Ci0gICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIGlmIChhdXRvIGltYWdlID0gdmlkZW8ubmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBk
c3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0
KSkKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXggMTdi
YTUxZmUwZTZjZTcxZDhjOWM1OGEwYjA3MzgyZjY2Y2VmYmUwOC4uNjFmODIzZmViMzAzZmVhZDM4
ZTEyNTRkZmJlMTA5YzYwZTNhZDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGJvb2wgaW5k
aWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24oY29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9y
KQogCiAgICAgRmxvYXRTaXplIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6ZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2UoKS0+c2l6ZSgpOwogICAgIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6
ZS5zY2FsZSgxIC8gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50Q3Jv
c3NmYWRlKCpfdGV4dEluZGljYXRvcikpCiAgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAg
IGVsc2UKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmlt
YXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdAogc3RhdGlj
IFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0
aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9y
KQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRzIl07Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
b250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZToo
X19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlv
biBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0
aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nv
dXJjZXNDYWlyby50eHQKaW5kZXggNWYwMTQ5NGYzY2ExZTMxZDc0N2JmN2M3YWZiNzZhZDBjZDdm
NjcwYi4uY2Y5YTE5Njk5YjhhOTVjNzQxMjAxZmQxNmM3MWI5NWFjMGFlOGYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNSw4ICszNSw4IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIzYjVjZjg5NDc2NjA0YzQzZDlmNDg1Nzc2
MmU1NTMyNzgzZmRhMTcuLmExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogewogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zb3VyY2UoSW1hZ2VTb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkpCiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGlu
Z1N0YXR1cyBkZWNvZGkKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2Rp
bmdTdGF0dXM7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGlmICghZnJhbWVIYXNGdWxsU2l6
ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpIHsKICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdM
ZXZlbCB3YXMgJWQsIHJlc2FtcGxpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lU3Vic2FtcGxp
bmdMZXZlbEF0SW5kZXgoaW5kZXgpKSk7CkBAIC0xNDIsMTcgKzE0MiwxNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBp
bmRleCwgU3Vic2FtcAogICAgIHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29u
dGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQobV9jdXJyZW50RnJhbWUsIFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIApAQCAtMTcxLDE4ICsxNzEsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWMKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBj
b3JyZWN0ZWRTaXplRmxvYXQpOwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0KEZsb2F0UG9pbnQo
KSwgc291cmNlU2l6ZSk7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0p
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHNvdXJjZVNp
emUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0pOwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAj
aWYgVVNFKENHKQotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChpLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRD
b250ZXh0KTsKLSAgICAgICAgaWYgKGltYWdlICYmIG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgPT0g
c2l6ZSkKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc2l6ZSkKICAgICAg
ICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIE5hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljCiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAot
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkK
K1ZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2Vz
KCkKIHsKLSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGltYWdlczsKKyAgICBWZWN0b3I8UmVm
PE5hdGl2ZUltYWdlPj4gaW1hZ2VzOwogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAo
YXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChpKSkKLSAgICAgICAg
ICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChtYWtl
UmVmKCppbWFnZSkpOwogICAgIH0KIAogICAgIHJldHVybiBpbWFnZXM7CkBAIC0yMTEsMTAgKzIx
MSwxMCBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorc3RhdGlj
IGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1
cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJz
YW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBJbnRTaXplIHN1
YnNhbXBsZWRJbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCkBAIC0yNDYsNyArMjQ2
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsID0gbV9hbGxvd1N1YnNhbXBsaW5nID8gc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9y
KGNvbnRleHQsIHNjYWxlRmFjdG9yRm9yRHJhd2luZykgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0OwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1
YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40Zild
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7
CiAgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwpAQCAtMzIyLDkgKzMyMiw5
IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlv
bnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmll
bnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJj
ZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCAzYjY4OTA2NzgzNTY5YjAxY2FiYTEyZmQ2MDFhZDU2MTk4NGIxN2I1Li45YzU5ZTdhZWRjMDJl
NmJhODc1NjhhMjVmZWFjZDYyY2U4YTlhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTUzLDcgKzUzLDExIEBAIGNsYXNzIFRpbWVy
OwogCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0
Zm9ybUltYWdlKSksIG9ic2VydmVyKSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1h
Z2U+IGNyZWF0ZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpdG1hcEltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBvYnNlcnZlcikpOwogICAgIH0K
QEAgLTEzNSwyMyArMTM5LDIzIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OwotICAgIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNw
ZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
LSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8UmVmPE5h
dGl2ZUltYWdlPj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KTsKICAgICB2b2lkIGRlY29kZShGdW5jdGlv
bjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdl
KE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmLCBJbWFnZU9ic2VydmVy
KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgpOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAg
Ly8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlz
IHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUg
YW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0xOTgsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4m
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVj
dG9yPFJlZjxOYXRpdmVJbWFnZT4+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgY2xlYXJUaW1lcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDIyM2Q5ZGMxODNkMDNlM2Y0Y2MzNTFmNGRhNmY2Zjg5M2YwYWI1
ZWYuLjg1NDAyMTVmNjIzN2NjMGEzZDYyNWUzMmZhOTY3ZGY5YTYyZWMyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2JhY2tl
bmQgPyBtX2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpIDogMDsKICAgICB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2Fz
dDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzMGI4ODQ5MTliMmM2MDQ1Zjc5
OTZjMTlhMTViYWY2MzliYzUyNjllLi4wMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRm
ODdiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBiMzVhYzY0ZmE4YjlmZmUwYzk0NDg1ZTk3
M2YyNGMyYWEwZjM0OTAuLmM1ZDA1N2NkYWQ0YjY1ZTg0N2U5ZTZmZmQwOWY2N2VmZDU3ZjYyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNB
bmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5n
LCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lk
dGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4
IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZj
NmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1h
bGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA2ZTIyMmMwMmYyZDlhZTM2
NDA2MWI3M2Q5YzM3Yjc3YjI5YjAzYjQ2Li45ZDQ0MGQwNTNiMDc4MGQ4ZDQyNWI2NmViOTUxMGQ2
MWRjOGVjZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGI1OTYwYWQ1ZmY3YzRkYTU2ZGY0
ZjVhNGE3OWFkZDk4ODQxMzZkN2QuLmJiMzljNmM4OGUxNDBiNDdmNDIyMDEwNzM2ZjFlNTZjNzll
NDNkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFn
ZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNJbWFnZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3Vh
cmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSWNvbihjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mKTsKKyAgICBJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFD
KQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggNGI5YmVlZDg2NTdlZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2
YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1l
ZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1
NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJm
M2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFn
ZUJhY2tpbmdTdG9yZShvdGhlcikpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5
MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNiYzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1
NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JT
cAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5r
SW50b05hdGl2ZUltYWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5MjA0YWQxMGE4MTA2ODA2ZGU5MjZmMmVlZmZjMTYzNGM3
NzAwZTZlLi41Mzg0NmM1OWNiNWVjNDAwN2Q1NDQwYTQxNTYxN2Y4ZjE4NzgwZjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VC
dWZmZXI+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUlt
YWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJl
c29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3
Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFn
ZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3
YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdjMDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmUKICAgICByZXR1cm4gYmFja2VuZFNpemU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNi
NTg3MjU2N2YwODgzYjViZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMuLmVkM2Y4YjViY2Y1OGU0Mjc4
NTY3ZDE4NmZiNjVjODQwMTYyN2M4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlv
bnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsMTMg
Kzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAgdmly
dHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lu
a0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDcxMDRkMDcxOTRmMzgxNTliMzNiZWE2
YWFlZDg4NWQ3MDliZDk4MTcuLmFhYTUxYmRkY2UwNGZkODVlOWVhNjFkMzgyY2MzYjExZWU2ZTIw
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVBbGxv
d1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
Y3BwCmluZGV4IDgzYjc4YjZlYzAwNmZjNTQ3NzQ1MmZmZDA4MTUyN2IyZGQ5MTYxODQuLmNjM2I2
MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHVu
c2lnbmVkIEltYWdlRnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
cyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKIAotICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
bV9uYXRpdmVJbWFnZSk7CisgICAgbV9uYXRpdmVJbWFnZS0+Y2xlYXJTdWJpbWFnZXMoKTsKICAg
ICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICBtX2RlY29kaW5nT3B0aW9ucyA9IERlY29k
aW5nT3B0aW9ucygpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgQ29sb3IgSW1hZ2VGcmFtZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoIWhhc05hdGl2ZUltYWdlKCkgfHwg
bV9zaXplICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAg
cmV0dXJuIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fbmF0aXZlSW1hZ2UpOwor
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4
IDU0YTljOWRmMzNiNGQzM2IxMjc1ZjkxNDZmZjg4NDJlMzdjMDAwNzEuLmFhNzNhZTM2Mzg5ZWMy
ZmFjNDIxZWMzNWMzZTZjNjcxODExZTdiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNp
emUoKS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSA6IDA7IH0KICAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNh
bXBsaW5nTGV2ZWw7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CiAKICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgRGVjb2RpbmdTdGF0dXMgbV9kZWNvZGluZ1N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX25hdGl2
ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKICAgICBTdWJz
YW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmOGUy
MDI4YzNjM2IzZjYxNmM2YTEzNzhhOTRlZmRmYzRlNWIxOTQ5Li4xNDgwMjFjZWVlNDU1YWViYjMw
NWRmZjM1NjEzZWM0NzQzM2Y1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShCaXRtYXBJbWFnZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvCiB7CiB9CiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkp
CiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEltYWdl
U291cmNlOjpncm93RnJhbWVzKCkKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhuZXdTaXplKTsKIH0K
IAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID09IDEp
OwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbMF07CkBAIC0yNDUsOCArMjQ1LDgg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKICAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7
CiAKICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRl
OwotICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2ZUltYWdl
KTsKLSAgICBmcmFtZS5tX2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFtZS5tX25h
dGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5zaXpl
KCk7CisgICAgZnJhbWUubV9oYXNBbHBoYSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPmhhc0FscGhh
KCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyBk
ZWNvZGluZ1N0YXR1cykKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bgogCiAgICAgaWYgKGZyYW1lLm1fZGVjb2RpbmdPcHRpb25zLmhhc1NpemVGb3JEcmF3aW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKGZyYW1lLmhhc05hdGl2ZUltYWdlKCkpOwotICAgICAgICBmcmFt
ZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubmF0aXZlSW1hZ2UoKSk7CisgICAgICAg
IGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm5hdGl2ZUltYWdlKCktPnNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZnJhbWUubV9zaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgp
KTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKQEAgLTI5Myw3ICsy
OTMsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJ
bWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBNb3ZlIHRoZSBuZXcgaW1hZ2UgdG8gdGhlIGNhY2hlLgotICAgIGZyYW1lLm1fbmF0aXZlSW1h
Z2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKICAgICBmcmFtZS5tX2Rl
Y29kaW5nT3B0aW9ucyA9IGRlY29kaW5nT3B0aW9uczsKICAgICBjYWNoZU1ldGFkYXRhQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC0zMDEsNyAr
MzAxLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZl
SW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNl
ZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2
b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1J
bWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSwgc2l6CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAg
IC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lCi0gICAgY2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKKyAgICBjYWNoZVBs
YXRmb3JtSW1hZ2VBdEluZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKICAgICBMT0coSW1h
Z2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4g
Y2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaW5kZXgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBpbWFnZSB3aXRoIHRoZSByZWFk
aW5lc3Mgb2YgdGhlIG5ldyBmcmFtZSBOYXRpdmVJbWFnZS4KQEAgLTM2Miw4ICszNjIsOCBAQCB2
b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAg
ICAgc3RhcnRpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIC8v
IEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4KLSAgICAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vi
c2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7Ci0gICAgICAgICAg
ICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBwcm90
ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgs
IGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRp
b25zKTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUltYWdlKQogICAgICAgICAgICAgICAgIExP
RyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMg
YmVlbiBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNl
VVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtkZWNvZGluZyBmb3IgZnJhbWUgJWxkIGhhcyBmYWlsZWRdIiwgX19GVU5DVElPTl9f
LCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1
ZXN0LmluZGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0
QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcChtaW5EZWNvZGluZ0R1
cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1lKSk7CiAKICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3JlYXRpb24gdGhyZWFk
IHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50IHRocmVh
ZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHByb3RlY3Rl
ZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5p
c29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVS
ZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1vdmUo
cGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUg
ZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgog
ICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09IHByb3Rl
Y3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHBy
b3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJv
dGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLnJl
bW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdC5p
bmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGlu
Z09wdGlvbnMsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ1N0YXR1cyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhXVEZNb3Zl
KHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1w
bGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVj
b2RpbmdTdGF0dXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQg
d2lsbCBub3QgY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291
cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTQ1NCw5ICs0NTQsOSBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJjZTo6ZnJh
bWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogICAgICAgICBp
ZiAoZnJhbWUuaGFzRnVsbFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMg
aW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWxWYWx1ZSk7CisgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1fZGVjb2Rl
ci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7
CiAgICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25l
LgotICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKTsKKyAgICAgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTY5NywxOSArNjk3LDIxIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldFRhcmdldENv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogfQogI2VuZGlmCiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpc0Rl
Y29kZXJBdmFpbGFibGUoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKKyAgICBpZiAoIWlzRGVjb2RlckF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpm
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4PE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFn
ZSkpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpk
dW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggZDk4ZWMwZTdmNmU1MmNlNTU4OWVkZDk5YjQyYzdhZDYzY2Vk
ZjAxZC4uYTZmNGFiMTNkZWVmZGEzNjUyYmI5MzNjYjJlMjYyYTVmY2I2MDMyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
aW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShSZWZQdHI8TmF0
aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KQEAgLTEyNSwx
MyArMTI1LDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRUYXJn
ZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogI2VuZGlmCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAKIHByaXZh
dGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFscGhhT3B0
aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICBJbWFnZVNvdXJjZShOYXRpdmVJbWFn
ZVB0ciYmKTsKKyAgICBJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4K
ICAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hl
ZFZhbHVlID0gbnVsbHB0cik7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAgICAgdm9pZCBlbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZWQoRW5jb2RlZERhdGFTdGF0dXMpOwogCi0gICAgdm9pZCBzZXRO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICB2b2lkIHNldE5hdGl2ZUltYWdlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZU1ldGFkYXRhQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHIm
Jiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNv
ZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CisgICAgdm9p
ZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0
SW5kZXhBc3luYyhQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgc3RydWN0IElt
YWdlRnJhbWVSZXF1ZXN0OwogICAgIHN0YXRpYyBjb25zdCBpbnQgQnVmZmVyU2l6ZSA9IDg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggN2FhYTFlZmIzYTVlMzUzNjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uNTk1NjdkMGMzOTkz
MmIwZTdiMTdmYjY1YzcyZTc2ZGZhN2YxOTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uYTA1NzhhZTAz
ZTcwN2M4NTU2OTY0YTUzNmU5YWI2NGE1M2U4NWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5n
IE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29y
a1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlhMzQzMTE0
MDM4YjBiOTEuLjdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRS
ZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTNkY2FiMzVhYzhjNWE5ODFkZGQ5YTMyMDg4
ODg0ZmQ0YWEyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICBpZiAoIXBs
YXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpKTsKK30KKworTmF0aXZl
SW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQorICAg
IDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThl
NWIuLjM3ZWI2NTI1ODQ4MGM2MDk0ODNkZWQ1MjdiYTMzZjkwNGM1YjUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3
LDMwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHIm
Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1
cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQogCi19CisgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1JbWFnZVNpemUobV9wbGF0Zm9ybUlt
YWdlKTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdl
SGFzQWxwaGEobV9wbGF0Zm9ybUltYWdlKTsgfQorICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3Io
bV9wbGF0Zm9ybUltYWdlKTsgfQorCisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpIHsgY2xlYXJQ
bGF0Zm9ybUltYWdlU3ViaW1hZ2VzKG1fcGxhdGZvcm1JbWFnZSk7IH0KKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTQ3ODVlMzJmNjk3MTYzMTVmMGI0MjI4MWY1NDg3OTdmNzZlYjdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENv
bG9yOworY2xhc3MgSW50U2l6ZTsKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQ
dHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNUMkQpCit1c2luZyBQ
bGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlmIFVTRShDQUlSTykK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PjsKKyNlbGlm
IFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPFNoYXJlZEJpdG1h
cD47CisjZW5kaWYKKworV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJik7Citib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJik7CitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdl
U3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIw
N2Y4NmYzOTMxNzhmNGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNl
Nzk3ZmQ4ZmIyZDZhYWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShOYXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhh
NWY1ODcwYTM1MzU3M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2
NjRhMjQxOTQ5M2U5NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkx
NmY5MGFiZDA3NTNhMTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQw
ZDM0ODRiMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTU2Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJl
dHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsK
ICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTlj
MWVhNi4uMjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJh
bWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoKTsKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
UHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRl
b1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBm
Mjk0ODgxNmVkZGU3OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQw
NDlkNTA0MTZkNjUyNDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEx
MjcsNyArMTEyNyw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAg
ICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkg
OiBudWxscHRyKTsKIH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9G
dWxsc2NyZWVuTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRh
dGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyAr
MjI5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNv
bmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0
b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAt
MjMxNCw4ICsyMzE0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdl
LmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCks
IGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0
IGltYWdlUmVjdCh7IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0
LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFn
ZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFu
IGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1
dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwog
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdi
ZjdhNzY3MzMwYTY3MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQz
ZjgwOTEwZjZiYTI5ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIx
NSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
OwogICAgIGJvb2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJl
dGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9y
bWVyOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVz
c2lvblNlc3Npb247CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2
YzI2NTgwNTljNjExYWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0
NDA4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0
dXJuIG1fbGFzdEltYWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkK
ICAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAg
bV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYy
Niw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBA
IC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5
YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4
NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAg
IHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsK
KyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3
Y2I0Li45YTUzNmRiOTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9G
dWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3Vy
cmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVm
PihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
LT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28K
ICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlh
U2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFn
ZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAg
ICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9
ICptX3ZpZGVvVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0g
dmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNm
b3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2Zi
M2NmODBiZjc1ODUuLmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02
MywxMCArNjMsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0
cikgZmluYWw7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFj
NmQxYTZlNjU2YjgwODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2Ey
YWY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5MYXllci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQ
dHIgY3VycmVudEltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJy
ZW50SW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxs
c2NyZWVuTGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMo
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggNTJkOWIxZTg3YzgwMzRkNmY3ODk2MDZjMzc3NjI1MmJmYzVkNGM1My4uY2Jk
ZjgyMWQ4NjUxZDUyNmU1YmQwOGZhMzIzZDA5ZGQxOWI2NzQxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJ
bWFnZSgpCiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUg
aW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYg
dGhlIGxheWVyIHNpemUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDg4NWY3OTlmNmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVk
MTI0ZDQ3OWU2ZGZmYWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3Mg
SW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9y
IG1fY29udGVudHNTb2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRp
bmdDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOwogICAgIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlv
bnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNm
b3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMz
N2YxY2FiOTZhN2ZiNzNmNWJmNDM5YmEuLjk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2Nm
ZDdhOWE1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAj
aW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJh
d2luZ1N0eWxlIHsKIAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZs
b2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNv
bnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8v
IEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28g
d2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxh
eWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFk
b3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
IHsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0
ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hh
ZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQg
ZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJ
bWFnZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0
byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpKQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2Uu
Z2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkp
KTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZv
cm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qo
bGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291
cmNlIGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5z
YXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3ZDdhMGE1MGU5YzE5MDY2ZGQ5
M2RlNTk2MWQ2NjkxYS4uM2RkOTAxMzRkMTQ1YjNhNzA2ZWE1NTU0YWQyMDI4OTJhOTgxZTQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIGNsZWFyUmVjdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291
cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVk
X2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRl
eHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3Im
LCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93
U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9p
ZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNv
bnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3Jp
ZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1h
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhmMGM3
MDc2ODIwZDA2YTU1YmE1YzU1ODI0OGMzLi42ODc4MTA2M2I5MjIxMDlkMGYwZDU4ODY0ZDVjNjI4
NmUwODAxODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQgKzEy
MywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9y
bUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRl
LnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28gd2Ugc2hv
dWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjY2LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4MSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3Vy
ZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENhaXJvOjpk
cmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJlOTBmMDU4
YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwg
dHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdl
MkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhh
IGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBp
eGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBiZSBjaGFu
Z2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHkuCiAgICAg
ICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQgaW4g
d2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBmYTA5YjgxM2VhNDM1MTY2MGFl
YzU2MTMxMTNiMzNlYTg5NjYzMDI1Li5kNzhkZTZhYzEwODQyZmEwYmI2OTUyYmZhZDkwYjAwYTg3
ZDllN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Mywy
MSArMjgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlCiB7CiAgICAgaWYgKGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7
CiAgICAgICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICAg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwor
ICAgICAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2
ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0
byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFs
cGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3Jt
SW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZh
Y2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBDYWlybzo6ZHJh
d1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNr
bmVzcykKQEAgLTQyMyw3ICs0MjMsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y2xpcEJvdW5kcygpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKaW5kZXggOGE5MzdkYTIzOWQ2ZDZjZGQwYTA0OGNjY2Q4MzY3OTEwNWQ5N2NhYy4uMzFh
MGY1NDAwZWU4NGUwOGIwYzVkZDRmOGU1MmYxOTczNTM1ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuY3BwCmluZGV4IGFjNGIxZjc5MDc2ODRjYTZkYjg2MjcyMTM5OTdkNGI1NmE4MjBl
OGYuLjY2ZTBiOGY0ZWI1NzIwZWJiNjM3MGEwYzU0OWIzZDJiNmEyNDhhMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QKICAgICBjb25zdCBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRl
c3RDb250ZXh0LnN0YXRlKCk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25z
LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRl
c3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUo
ZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBv
cHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0K
IAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAm
Y29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAg
ICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
aW1hZ2UuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVz
dENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9y
bUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xv
clNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAK
aW5kZXggNGYxZjc1NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uOTMxMDhkMDRl
YzliMTFiZjBlNTQyNTc2ZmYzZDc5OTM0YjgwN2I4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJl
dHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcs
MTggQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1
cmZhY2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3Bh
aW50KGNyLmdldCgpKTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShjb3B5KSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250
Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0
dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZhY2UuZ2V0KCkpKTsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1
cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QK
IHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3Vy
ZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFH
RSAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9f
Q09OVEVOVF9DT0xPUl9BTFBIQSkKQEAgLTEwMCw3ICsxMDAsOCBAQCBOYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2Uo
KSBjb25zdAogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
Ojp0b0JHUkFEYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvIHN1cmZhY2UgPSBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UoKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3Vy
ZmFjZS5nZXQoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBhNjlkNWVlMGZmNjNmNzc5
NTgyNWRjNjc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBj
YmY1ZWIyNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQu
aApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQg
OiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNv
ZXJjZVRvSW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFj
ZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZh
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
NWMwZjgxY2IzNDE5MGNiMzczYmQ4NDM0MTU4YjRkMDMzMDFhYjA0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKLQotI2lmIFVTRShD
QUlSTykKLQotI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlIDxj
YWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUludFNpemUgbmF0aXZlSW1hZ2VTaXpl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICByZXR1cm4gaW1hZ2UgPyBjYWly
b1N1cmZhY2VTaXplKGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKLX0KLQotYm9vbCBuYXRpdmVJ
bWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICByZXR1cm4g
IWltYWdlIHx8IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJP
X0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBpZiAoIWltYWdlIHx8IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yKCk7Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShpbWFnZS5nZXQoKSkgIT0g
Q0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAg
IHVuc2lnbmVkKiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiB1bnByZW11
bHRpcGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7Ci19Ci0KLXZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12b2lkIGNsZWFy
TmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQotewotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApp
bmRleCBjZTUyNzgwNjBhMGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi41NjBmNzQ3YThm
YjY0ODFiZTRhMzAxODU4NTAwYWE5ZmExNjBmNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDEx
ICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVy
bjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2Fpcm9f
cGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVy
bl9jcmVhdGVfZm9yX3N1cmZhY2UobmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7
CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2VyIHNwYWNlIGl0c2Vs
ZgogICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgobV9wYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ODMxYzQwMGVjZjE4ODhhMmQzMjc1ODA3MGFmNDRkMDZjNWMxODA1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNh
aXJvLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCisj
aW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6
ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAg
ICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKSA6IEludFNpemUo
KTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxwaGEoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UpCit7CisgICAgcmV0dXJuICFpbWFnZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250
ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBwbGF0
Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRT
aXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisg
ICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdl
LmdldCgpKSk7CisgICAgcmV0dXJuIHVucHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9y
OjpBUkdCIHsgKnBpeGVsIH0pKTsKK30KKwordm9pZCBjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFn
ZXMoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhN2RiZTZl
NmJlNWY1NjI1MmMzYzcwYjEyODgwZTNiNjQ0YmE0Yzk5Li5mZTlhZDM3NjczMzA3ODY1ODQwYTNm
YzAwM2Q1YTAxNmYwODZmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yNzcsNyArMjc3LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2Rh
dGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IFJl
dGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC00NDQsMjMgKzQ0
NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBp
bWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3Jp
ZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQg
aCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJ
bWFnZUdldEhlaWdodCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IGltYWdlLnNpemUoKTsKICAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAg
ICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWIt
aW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5n
IG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAv
LyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGlj
aCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAg
QVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7
CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAog
ICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2Ug
aGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAv
LyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5p
c20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBD
R0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdl
dFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBp
bWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3Bh
Y2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBD
RyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2Fy
ZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ug
c2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0
byBmaXQuCkBAIC01MDksNyArNTA5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9
CiAKICAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0
LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5h
dGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0g
YnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBp
bWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxw
dHI7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAg
IC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFz
IGFuIGFscGhhIG1hc2sgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkx
MjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3ZTQzYzA0ZC4uNjYxYTAzY2M0YTBkYTNlZDNhOTdjYzk4
ZjNlYzUzNjUxZTNhMjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMzOCw4ICszMzgs
OSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9j
Z0ltYWdlLmdldCgpKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2Nn
SW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IG1fY2dJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChp
bWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wgaQogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRo
ZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3Qg
Y29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2Uu
Z2V0KCkpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9y
U3BhY2UoaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xv
clNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3Bh
Y2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFw
Q29udGV4dDsKQEAgLTM2MiwyMiArMzYzLDI2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAK
ICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0Js
ZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShi
aXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1h
Z2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1h
Z2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBOb3cg
ZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIGNvcHkg
ZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7Ci0gICAg
ICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJ
bWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0
bWFwQ29udGV4dC5nZXQoKSkpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsK
ICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVy
Q29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENH
SW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBpZiAoIW1fY2dJbWFn
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRz
UGVyQ29tcG9uZW50KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJ
bWFnZUdldEJpdHNQZXJQaXhlbChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25l
bnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8g
Yml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdl
dEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9
IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNv
dXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVk
IGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBu
b3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5n
OwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3
aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dpdGNo
IChDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQog
ICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0
ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNvdXJj
ZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0lt
YWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGlt
YWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
PihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNpZ25lZCBz
cmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VH
ZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9
IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGlu
ZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBp
ZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsK
QEAgLTUyOSw4ICs1MzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgICAgICBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQ
aXhlbHMsIGRhdGFTaXplLCAwKSk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGNnSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAot
ICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKKyAgICAgICAgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8v
IENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVk
IG9uCiAgICAgLy8gdGhlIHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0
IHRoZSBjb3JyZWN0CkBAIC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28K
ICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNs
YXRlKDAsIC1pbWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0g
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpDb3B5IH0pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VTaXpl
LCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBv
c2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFm
YTVjMTdiMy4uOGM1YWJmN2M5M2U3OTcxM2Y3MTNhNmRiZGU5YmMwMTdmMjFmODliYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtNzQsMTcgKzc0LDE3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFn
ZSwgY29uCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYm
IGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAgICBp
ZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVj
ZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGltYWdlID0gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCBiYWNrZW5kU2l6ZSkpOwogICAgIGVsc2UgewogICAgICAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53
aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCks
IHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFn
ZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7
CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFn
ZSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPElt
YWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAog
ewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1h
Z2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShjb3B5QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2Nh
bGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0
ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUp
KQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFj
a2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVz
dENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5k
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBA
IC0xMzgsNyArMTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tl
bmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9
IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsK
IAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IGltYWdlOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJh
eTsKIAogICAgIGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU4LDEw
ICsxNTgsMTAgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRv
Q0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKIAogICAgICAgICBpbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFy
cmF5RGltZW5zaW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53
aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwg
a0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpIHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7
CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0
Zm9ybUltYWdlKCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3Nh
cnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlt
YWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAq
IGJhY2tlbmRTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250
ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwg
YmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCmluZGV4IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjZjMDMz
YzYzODM4YWZlMWEwZjYyN2Q2YjQ0YTE1NDZmM2ZlZWU3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAKQEAgLTEwNywxNyArMTA3LDE3IEBAIEdyYXBoaWNzQ29udGV4dCYg
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAq
bV9jb250ZXh0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAor
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRj
aCAoY29weUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICBy
ZXR1cm4gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkp
KSk7CiAKICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShh
ZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCks
IG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAg
ICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBt
X2RhdGFQcm92aWRlci5nZXQoKSwKLSAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0lu
dGVudERlZmF1bHQpKTsKKyAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3YTU0
OTczMTA4Mjg1Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2ViOGIz
ZDFhZDg4ZDBhYjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4OTcx
MGFlODM3ZmJmOWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApA
QCAtMTM1LDE0ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpiYWNrZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1hdDo6
QkdSQTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpOwor
ICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSk7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFjZTo6
c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpKTsK
IH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFkanVz
dGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFn
ZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9D
RkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0YTkw
NDBjYzc0MGZiLi5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0
ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRy
YXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2YmVh
ODc0NDVhYmEwYy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNHOjpm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAg
ICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNH
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMp
CiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
b3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUwNmRk
ZjZiM2IuLjhiYTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxp
bmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDlj
YjY0NmE1YmFkZWJkYWRjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNH
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
TmF0aXZlSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2lu
Y2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQotewotICAgIHJldHVybiBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6ZSgpOwotfQotCi1i
b29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewot
ICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0
KCkpOwotICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qp
ICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7Ci19Ci0KLUNvbG9yIG5hdGl2ZUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAg
ICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkK
LSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAv
LyBSR0JBCi0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
KSk7Ci0KLSAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwot
Ci0gICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5k
TW9kZUNvcHkpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7Ci0KLSAgICBpZiAoIXBpeGVsWzNd
KQotICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7Ci0KLSAgICByZXR1cm4g
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFszXSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCi17Ci0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQot
ICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKGltYWdlLmdldCgpKTsK
LSNlbmRpZgotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2MjRmNjI3M2Mz
YjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYwNzg3
ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVy
bjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNl
VHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBw
YXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCisgICAg
UGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0Zm9ybUltYWdl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBp
biBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAg
Ly8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhl
bCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVy
biBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwor
ICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdl
dCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsK
IAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0
ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28K
ICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3LDEwICs4NCwx
MCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVh
dFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJu
IHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4g
cGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNr
cyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNl
Q2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdD
b25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlT
dGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxi
YWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OTAxYzBiNDViZDNlODgz
MGI1NGU0YzliOTA0MDMyM2NjZmYzOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENHKQor
CisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRTaXplIHBsYXRmb3JtSW1hZ2VTaXpl
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIHJldHVybiBpbWFnZSA/IElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpIDogSW50U2l6ZSgpOworfQorCitib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBDR0ltYWdlQWxwaGFJbmZvIGlu
Zm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKGltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gKGluZm8g
Pj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFnZUFs
cGhhRmlyc3QpOworfQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9y
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgcGxh
dGZvcm1JbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBD
b2xvcigpOworCisgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQorICAgIGF1dG8g
Yml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAx
LCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAgaWYgKCFi
aXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIENHQ29udGV4dFNl
dEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAx
LCAxKSwgaW1hZ2UuZ2V0KCkpOworCisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJu
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrOworCisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRC
eXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworfQorCit2b2lk
IGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSkKK3sKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworI2VuZGlmCit9CisK
K30KKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAwMmFkYTBkMWIxOTI0NzEzZmFlNTg0ZWVhMTA3ZDlk
YTM0MmRkNzA0Li4zOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0x
NzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdl
IGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBbQ0lJbWFn
ZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQoKV07
CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlO
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8Q0lJ
bWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJp
eChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJ
bWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApp
bmRleCAxYzliN2ExNDFkNDJiZTZjYjVjYTk3Njg4ODFhNzE1YWY4MWFkNTIxLi5jN2VkZDc1OGQ5
OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBmMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggODJiMGNlMTk3YzEyY2U4NGQzMTc0
MWE2OWNkZTFhNDIyYTFkM2Q1Ny4uMmY3NmVjYWY2ZjgzNzdlYjRiZGNhNjMxNzkyYmU3MzAwNzlm
NGRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMzQ2LDcgKzEzNDYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZh
bHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
blJlY3Q7IH0KQEAgLTEzNjAsNyArMTM2MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgUmVmPE5h
dGl2ZUltYWdlPiBtX2ltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTEz
ODAsNyArMTM4MCw3IEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxEcmF3TmF0aXZl
SW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8TmF0aXZlSW1hZ2VQdHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlZjxOYXRpdmVJ
bWFnZT4+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCBmMTQyOWQ4M2E5MzVlYmQ1MWE2ODk1NzVlMDU4ODdlYjBiNTEzNzhk
Li5iZjNjYjM0MDE0MWQzZWY3YTAxNmU0ZTllZWM1N2NhZWVhZGRhY2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBS
ZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWMKICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZl
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGY5NTFjZmFhMmNhY2M5NmQ0YzFhMThhMjVmYTU4
OTYwNzkyMjQ2ZDQuLjMzNTM1OTkzMjIwMGRjNGQzYjU3MmExZGIxZDkzNjU5ZmE3MjQxZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTA2LDcgKzEwNiw3IEBA
IHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdl
OjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggZGM5OTRiNzMxZmE4
OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJiN2Q1N2E5MTY1MTRl
NjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
QEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSksIHByZXNlbnRhdGlv
blNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0CisgICAg
UGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1h
Z2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1faW1hZ2Ut
PmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlKCku
bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2b2lkIGRyb3BJbWFn
ZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHVuc2lnbmVk
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2Ft
cGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
aW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3ZC4uNTg2OWQ4Yzg2
YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFs
bG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmluYWwgeyByZXR1cm4g
aW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5ZDhiYjliMjJlMTEw
ZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUzNmEwYWEwMDVhMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAogICAgIHJldHVybiBt
X3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCps
YXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3ZGJjNDk5YjUxZGFl
Yi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2LDcgKzIxNiw3IEBA
IHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUVu
YWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4OTE0ZGEzYTM5NzAx
ZmRkZDZhNjYxLi43MzgwZWJmNDc2NjAxY2QwZDhkZmMzNmJmNDg4YTE4MDI0N2MwOGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAK
QEAgLTU2LDcgKzU2LDEwIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1
ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIHJldHVybiBzdXJmYWNlID8gY2Fpcm9TdXJm
YWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDgxMzZjMWZmZjQ1Yjlh
MzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmMyNDc5NWY1MDlhMzM2ZWYwZDdiMTcxZDI2NjQ0
NmNhYWVmMjEwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSWNvbjo6SWNvbihj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsK
IH0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25G
b3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJY29uOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
CiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKIAogICAgIGNvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6SGln
aCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0ltYWdlLmdldCgpLCBzaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShtX2NnSW1h
Z2UsIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDY5MDhmMTA3NjMyZTg5
MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLmNhZDliYjI3NTNlMzRlZTE5NWJhZTViNTU4Njc1
M2MxMjY4MGYzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcgQEAgUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gSW1hZ2U6Om51bGxJ
bWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJl
c2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4mIG5hdGl2ZUltYWdlcykKK1Jl
dGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3Qg
VmVjdG9yPFJlZjxOYXRpdmVJbWFnZT4+JiBuYXRpdmVJbWFnZXMpCiB7CiAgICAgLy8gSWYgbmF0
aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMgaW1hZ2Ug
ZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0byBD
R0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhhbmRs
ZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODksNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBC
aXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0
cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbmF0aXZl
SW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdl
KGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CisgICAgICAgIENHSW1h
Z2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXpl
KGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZGF0YTsKQEAgLTEyOCw3ICsxMjgsNyBA
QCBSZXRhaW5QdHI8TlNJbWFnZT4gQml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSgpCiAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGRh
dGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBuYXRpdmVJbWFnZSB9KTsKKyAgICBhdXRvIGRhdGEg
PSB0aWZmUmVwcmVzZW50YXRpb24oeyBtYWtlUmVmKCpuYXRpdmVJbWFnZSkgfSk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdl
QnVmZmVyUGlwZS5jcHAKaW5kZXggYjAwNzk5ZmU3ZDIyMTRjNTUwYTgzYTM3YWYxODg3YTI1MDlm
MmU2NC4uOWYxMTI0ZmVhNzA3NjZlNmUxYzY0YmRiNWM3YzYzYjBhZTlhNDU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2b2lk
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+
JiYgYnVmZmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJ
bWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZmZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBz
aXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0gICAg
ICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxwaGEo
bmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1
cmU6Ok5vRmxhZyk7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5h
dGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJp
dG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNFKENBSVJPKQotICAgICAgICAgICAgICAgICAg
ICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KElu
dFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJp
ZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggOGJjNWQyN2JlNjM1ZWZkZDVhN2QxZjZj
NDczZjI4ZDg4ZjI5NjU4YS4uN2IyOTlhNWY0NzE5N2U5YjBiMDcyMmI2MzQ4MTQ1YmIwYTY4MzFj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTU1NCwxNCArNTU0LDE0IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KIAotdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5h
bCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBD
YWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkg
PSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxh
eSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBh
cmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAg
ICAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIp
LCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCks
IGFyZzw1PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0
cykgb3ZlcnJpZGUKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAK
ICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNz
Q29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUlt
YWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAg
ICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRm
b3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86
OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTU5Miw4ICs1OTIsOCBA
QCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogICAgIH07CiAKICAgICBVTlVTRURfUEFSQU0oc3Bh
Y2luZyk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZN
b3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJ
bWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykK
QEAgLTEwNzcsOCArMTA3Nyw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSCiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS5nZXQo
KSksIGRlc3RSZWN0KSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIGRlc3RSZWN0KSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAppbmRleCA2OTFlNzQxODAwM2U1NzU4YTYwNDRmM2M5NzkxYjMxMDhhZDM3YzJm
Li42NmVhZGU4NWRiMWI1MTgxM2ZhYjNiNzU2NjNmZGFlY2FkZjY2MmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3
ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6
SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQw
N2YxNTE0MjQxODBjOGFiNWQwYzkuLmE2MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2
ZjQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY28KIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0g
ICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNTksNyArMTU5LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKElt
YWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFy
KiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlID0gZnJhbWVJbWFnZS5nZXQoKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBm
cmFtZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJm
YWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMmFiZjQzODJkMzAwZjRlMWQzMzIxOTMxZWE5OWRhNDQ0
ZmExZTM4Zi4uNDA2MzNhMDE5ZGNkZDMwN2UyMTA4ZDc1OTZmOGRlNjBhYzkzMGFlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBA
IFJlZjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZh
Y3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzCiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNs
aWVudCYgY2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCkKLSAg
ICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9D
aGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVy
V2lkdGgoMCkKQEAgLTI5NCwyMiArMjkzLDIyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdl
KSB7CiAgICAgICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdl
IGhhcyBjaGFuZ2VkLgotICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24g
dGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkg
dG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1h
a2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1h
Z2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAg
ICAgICAgLy8gVGhpcyBhc3N1bXB0aW9uIGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAg
ICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAg
ICAgIGF1dG8gbmV3TmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1h
Z2VQdHIpCisgICAgICAgIGlmIChuZXdOYXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0ciA9IG5ld05hdGl2ZUltYWdlUHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZSA9IG5ld05hdGl2ZUltYWdlOwogICAgICAgICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQog
ICAgICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZSgpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNU
b0ltYWdlKGltYWdlKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRz
U2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAg
ICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3Np
dGVkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAxNWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0
Li41OGY0ZjM2NWQyNTczNDc3MjkzMjdhZmJjYWQxOGM3YzE0YzNlZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0xNTUsNyAr
MTU2LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAg
UmVmUHRyPFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQdHI8VGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludCBt
X2NoYW5nZU1hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQ1MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgzNzhmY2Zk
NGQ4MGQ5NTMuLjcxMzM5MjRjOTFiOTI3ZjkxMDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC0xMzgsNyArMTM4LDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1f
cGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRl
UGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigq
dGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmly
ZWQpCiAgICAgLCBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVD
cmVhdGlvblRpbWVyRmlyZWQpCiB7CkBAIC01ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIAogdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1h
Z2UpCiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAobV9jb21w
b3NpdGVkSW1hZ2UgPT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0
aXZlSW1hZ2VQdHIpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRyOworICAgIGlmIChtX2NvbXBvc2l0ZWRJ
bWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBt
X2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5hdGl2ZUltYWdlUHRyOworICAgIG1fY29tcG9z
aXRlZE5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2U7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRD
b250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0
OSwxMSArODQ4LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0
ZWRCYWNraW5nU3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIC8vIERldGVybWluZSBp
bWFnZSBiYWNraW5nIHByZXNlbmNlIGFjY29yZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBz
b3VyY2UuCi0gICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKSB7CisgICAgaWYgKG1f
Y29tcG9zaXRlZE5hdGl2ZUltYWdlKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFn
ZSk7CiAgICAgICAgIGF1dG8mIGltYWdlID0gKm1fY29tcG9zaXRlZEltYWdlOwogICAgICAgICB1
aW50cHRyX3QgaW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmaW1hZ2UpOwot
ICAgICAgICB1aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ci5nZXQoKSk7CisgICAgICAgIHVpbnRwdHJf
dCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlc3Bh
d24gdGhlIEltYWdlQmFja2luZyBvYmplY3QgaWYgdGhlIHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdl
ZC4KICAgICAgICAgaWYgKG1fbmljb3NpYS5pbWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlZThmNTc4
NzlhZGE2YzkxZjAzOTkxOTJlZjk1YzkyNGVjZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2
NmIwMjQyMzVkMzcyNGE2MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAg
ICB9IG1fbmVlZHNEaXNwbGF5OwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFn
ZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlOwogCiAgICAgVGltZXIg
bV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyPiBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDg4MzVmODhkMWJiY2QyMDNjMzI1NjJkYTI0MTRjYmMyN2I2ZmIw
ZjguLjUyNWExNjM0MWViZDVmZTY0MTlkODJkODBhMDQzMDRkYmE3MjJkODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9w
ZXJhdGlvbnMuY3BwCkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGwK
IH0KIAogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5h
bEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFs
QWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3Jt
SW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1h
cCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBiaXRtYXBTaXpl
KGltYWdlKTsKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKQEAgLTgxMywx
MCArODEzLDEwIEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkpOwotICAg
IGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0
YXRlKTsKKyAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1h
cC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxw
aGEsIHNoYWRvd1N0YXRlKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxv
YXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJh
d1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
SUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFnZS0+R2V0U2l6
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKaW5kZXggNzRhMTAzNjcwOWYzODU1Y2U4ZDU0Zjc1ZWNj
MzZmMzFkODYzMmM1YS4uNWQxOTYwODBjZGU0NTUwNzA1YzM5N2VmOTljOTZjODQ5Njg3OTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtMTI4LDggKzEyOCw4IEBAIHZvaWQgY2xlYXJSZWN0KFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0ds
eXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBT
dHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGb250JiwgZG91YmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlwaHMsIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9yPERXUklU
RV9HTFlQSF9PRkZTRVQ+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0LCBjb25zdCBT
aGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBm
bG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0aChQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2Um
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYsIENPTVB0cjxJRDJEMUJpdG1hcD4mJiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFj
OGVkOTc0ZWM5OS4uM2E2OGRjM2FhMDE1NTM2ODQ2NGY1MTcyMzVlYzBhMzE5ZjdkNTdlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVz
dG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IENPTVB0cjxJ
RDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmlu
ZGV4IGM1M2Q4YmY4NWMwOTkzODgyOTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMuLjg4YTY1ZjdiYmVj
M2VhMTRlNWRlNDY2NGM0OGMxMDA2MWVkYmUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuY3BwCkBAIC0yODMsMTAgKzI4MywxMCBAQCBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChn
cmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZh
Y3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBzdGF0ZSA9
IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKKyAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFn
ZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOTVlYjM3MGI3
NWJhZGUwMzlkNmY5NDg3MmFlYWY0Y2YxZTVlNTNjYy4uYzE5N2I0ODljMjkyNmNhNjU4ZDczNWU3
ZTEzM2Y5MjE4MGZmYzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApA
QCAtNzEsNyArNzEsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6
OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIy
ZTY5N2I2NGU4MWM1Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUlt
YWdlUHRyIGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFw
KCZiaXRtYXApOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+
IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51
bGxwdHIpOwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUlt
YWdlUHRyJiYgYml0bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3Jt
Q29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0
Zm9ybUltYWdlUHRyJiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNh
bFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBt
X3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1h
cFJlbmRlclRhcmdldD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFw
VGFyZ2V0KTsKQEAgLTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAK
ICAgICB9CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUoV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3Jv
cHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdl
dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJl
bmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNp
emUmIGJvdW5kcykKIHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJ
bWFnZVNpemUoaW1hZ2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
SUQyRDFCaXRtYXBSZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFn
ZVB0ciBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29s
dXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsK
KyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0
ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCks
IHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcs
MTEgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9J
bWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUlt
YWdlKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
Yml0bWFwVGFyZ2V0LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29s
dXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRh
cmdldCogcmVuZGVyVGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0
KQogewogICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3
ZGMyNjEuLjFkNTc0YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZs
dXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRp
b24pIG92ZXJyaWRlOwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJ
bWFnZVB0ciBtX2JpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0ZjkzYjlk
NGU5MjEzM2Q1NTNjZDNhNGIuLjZkYWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2RhNDM3MjJjOGQ0MTZm
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKICAgICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFr
ZXMgb3duZXJzaGlwIG9mIHRoaXMuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkp
KTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShjZ0ltYWdl
KSkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY2dJbWFnZSkpOwog
fQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25z
dCBJbnRTaXplKiBzaXplKQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYm
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndp
ZHRoKCkpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAg
ICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc3JjU2l6ZSkgewogICAgICAgICAg
ICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21w
b3NpdGVPcCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCBkNGVhZmM1OTlhMDBmMjM5NTc4OTJlM2NhYTJl
ODVlYmNlMzgwNWMwLi4yY2VjOTlkYzcyOWZlNjVlMDg1NGVlZTcyZGZjNGVkN2FmMDk1MjNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCkBAIC05MywxNyArOTMsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQK
IHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFn
ZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoIW5hdGl2ZUltYWdlIHx8
IG5hdGl2ZUltYWdlLT5zaXplKCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQo
KSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNyY1NpemUud2lkdGgoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBt
X2N1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAg
ICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lk
dGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAgICAgICBt
X2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQorICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisgICAg
ICAgIG1fY3VycmVudEZyYW1lID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBj
b21wb3NpdGVPcCB9KTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBz
aXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgwNmQzNDc3
ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVy
VGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZl
RGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmlu
ZGV4IDc2ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNhZmQ2OTU0
YzU3ZGViMzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0
SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBj
b25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3Qy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VE
aXJlY3QyRC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZjc4YzIzOGYxOGY5
OWJjNTA5YzFlMzA5MTgzZmNhZjhhNDhjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05h
dGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0KLSNpbmNsdWRlICJDb2xvci5oIgot
I2luY2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgot
I2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKLSNpbmNsdWRlIDxkMmQxLmg+Ci0j
aW5jbHVkZSA8d2luY29kZWMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgSVdJ
Q0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSgpCi17Ci0gICAgc3RhdGljIElXSUNJbWFn
aW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkgPSBudWxscHRyOwotICAgIGlmICghaW1hZ2luZ0Zh
Y3RvcnkpIHsKLSAgICAgICAgSFJFU1VMVCBociA9IENvQ3JlYXRlSW5zdGFuY2UoQ0xTSURfV0lD
SW1hZ2luZ0ZhY3RvcnksIG51bGxwdHIsIENMU0NUWF9JTlBST0NfU0VSVkVSLCBJSURfUFBWX0FS
R1MoJmltYWdpbmdGYWN0b3J5KSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFNVQ0NFRURFRCho
cikpOwotICAgIH0KLQotICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKLX0KLQotSW50U2l6ZSBu
YXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIFVJTlQg
d2lkdGggPSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQotICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsKLX0KLQot
Ym9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsK
LSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEMkQxX1BJWEVM
X0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwotICAgIHJldHVy
biBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKLX0KLQot
Q29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0KLSAgICByZXR1cm4gQ29sb3IoKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Ci17Ci0gICAgYXV0byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KTsKLQotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQg
aXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUg
PSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29v
cmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQg
dG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7Ci0gICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKLSAgICAg
ICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNT
aXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAgYXV0byYg
c3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSgq
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSNp
ZiBDQUNIRV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIHN1YmltYWdlQ2FjaGUo
KS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsKLSNlbmRpZgotfQotCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdlRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtSW1h
Z2VEaXJlY3QyRC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVhODZiZmZhYWY4MzdjODYwZmI0YWVkNDNkOTI2
YjYxY2ZhYTI2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9QbGF0Zm9ybUltYWdlRGlyZWN0MkQuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiRGlyZWN0MkRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oIgorI2luY2x1ZGUgPGQyZDEuaD4K
KyNpbmNsdWRlIDx3aW5jb2RlYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgSVdJQ0lt
YWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7CisgICAgaWYgKCFpbWFnaW5n
RmFjdG9yeSkgeworICAgICAgICBIUkVTVUxUIGhyID0gQ29DcmVhdGVJbnN0YW5jZShDTFNJRF9X
SUNJbWFnaW5nRmFjdG9yeSwgbnVsbHB0ciwgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsIElJRF9QUFZf
QVJHUygmaW1hZ2luZ0ZhY3RvcnkpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVE
KGhyKSk7CisgICAgfQorCisgICAgcmV0dXJuIGltYWdpbmdGYWN0b3J5OworfQorCitJbnRTaXpl
IHBsYXRmb3JtSW1hZ2VTaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAg
IFVJTlQgd2lkdGggPSAwOworICAgIFVJTlQgaGVpZ2h0ID0gMDsKKyAgICBpZiAoIWltYWdlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsK
K30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFzQWxwaGEoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
aW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
RDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBpbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKTsK
KyAgICByZXR1cm4gcGl4ZWxGb3JtYXQuYWxwaGFNb2RlICE9IEQyRDFfQUxQSEFfTU9ERV9JR05P
UkU7Cit9CisKK0NvbG9yIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFn
ZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOwor
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiBDb2xvcigpOworfQorCit2b2lk
IGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisjaWYgQ0FDSEVfU1VCSU1BR0VTCisgICAg
aWYgKGltYWdlKQorICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQo
KSk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0N1cnNvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3Rr
LmNwcAppbmRleCA4N2Y4NGNhODRjNTRmNDI0MjJmYjQ5N2M3OTVmMjYzNTFkNjZkNWMwLi5lZGVk
N2U4ZGQyM2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcApAQCAtNjMsMTAgKzYzLDExIEBAIHN0YXRpYyBHUmVm
UHRyPEdka0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIGhvdFNwCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhv
dFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9u
ZXdfZnJvbV90ZXh0dXJlKHRleHR1cmUuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZl
Y3RpdmVIb3RTcG90LnkoKSwgZmFsbGJhY2tDdXJzb3IoKS5nZXQoKSkpOwogI2Vsc2UKLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBk
ZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdk
a19jdXJzb3JfbmV3X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBzdXJm
YWNlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsK
ICNlbmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJ
bWFnZUd0ay5jcHAKaW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNmOWUwM2Ez
Mi4uYWVlY2ZjZjUyMjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
RHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1h
Z2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4
MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVl
ZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1J
bWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewog
ICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBp
bWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVt
cHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMz
YmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xv
clByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVh
NjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUy
MWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVs
cy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZh
ZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5
LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAg
ICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSks
IElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAg
IFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtd
KFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1
cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAg
ICAgfQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFu
c2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUs
IHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBb
dGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1l
ZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1w
bGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmlu
ZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0
OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUg
PSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8
TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVy
ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVs
cGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2
ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAx
NGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24p
CiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1h
Z2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVm
ZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29u
ZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5j
cmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCku
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShw
bGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkp
OwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2
ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMw
NGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRp
dmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwg
a0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250
ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1h
Z2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRT
ZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0
KCkpOworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fp
cm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcAppbmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li4wNDE3
NjZiNzJjNTIwMzI4Yjc0Y2U1OWM2OTg4YTRjNmI0NDI1YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIs
OSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIElt
YWdlT3JpZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAx
LjApOwogICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAg
ICBpZiAoc3VyZmFjZSkgeworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKG5hdGl2ZUltYWdlICYmICFuYXRpdmVJbWFnZS0+
aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CiAgICAgICAgIC8vIERyYXcgdGhlIGltYWdlLgogICAgICAgICBjYWlyb19zZXRf
c291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UuZ2V0KCksIDAuMCwgMC4wKTsKICAgICAgICAgY2Fp
cm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CmluZGV4IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIuLjExMWE0YjJj
MzU1YzA3Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFp
bnRJbmZvJiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0
LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFk
Z2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogCi0gICAgQ0lJ
bWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZl
SW1hZ2UoKS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdl
V2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsK
IAogICAgIC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0
aCBpbiB0aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAgIFJldGFpblB0
cjxDR1BhdGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0
KGFic29sdXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8g
MiwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggNjU5Y2RiNTNhYzU2YTYyMGIwMzkxODM2N2FmYzI1ZDE2MTc1ZmFlZC4uYTg5MjQ5NmY5YmMw
MDhjZTk2NDRkZTY2ZTJmYzhkY2M4ZWNkNmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0lt
YWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXQKIH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2
ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMg
b3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFn
ZSBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0
KikKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0lt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQog
I2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0
aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0
YXJnZXRDb250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAgICBpZiAoIW1f
cGFnZSB8fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKaW5kZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQyOC4uMjgyNWY5
ZDM4OThkOGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y2hlZHVsZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9
IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2Vu
ZGlmCiAjaWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5h
bDsKICNlbmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0dXJuIG1fcGFn
ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNkNjVmNWU4MzFi
MzFhZjM2NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFn
ZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2Nv
bnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25z
dCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNW
R0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBlNjQ0Zjdh
Y2YzMGVjMjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUwNTNjNTkyMjU3
MzcwZjJiOGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihT
VkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29u
dGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyODVlZDVjMzdlZjc2ODExNDQ1ODAzNTVj
OWFhNDIzYWIxODVjMTNhLi4xZmI3MzNkNWMxNTg5MDFmNjFhMzY2MzkxZGYzZjkwMjNhNzY5NzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOCw3ICsy
MTgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
ICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0cicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZScsCiAgICAgICAgICdXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1NzgxOTJk
Zjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBmNjUxOTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJl
ZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCBy
ZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDYzZTkx
YzI4MTYwNzkxNWJiMDRmOTQyNjIyM2YxNzZlOTcwNjVkMS4uMTU3MTNkNWNlOTJkMjljMTQ5Mzc3
NWMyM2ViMWNkZWQ2NmM3ZGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDExICsxMTAwLDEyIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYg
aW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2
ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIGltYWdlKQogewotICAgIGF1dG8gaW1hZ2VTaXpl
ID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5z
aXplKCk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCiAgICAgZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4
dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTExNyw2
MyArMTExOCwzMCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShE
ZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitPcHRpb25hbDxS
ZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFwaGlj
c0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CiAgICAg
aWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3Jh
cGhpY3NDb250ZXh0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8gYml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0byBpbWFn
ZSA9IGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBuYXRpdmVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxO
YXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Ci17Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7Ci0gICAgZW5jb2RlciA8PCBoYXNJbWFn
ZTsKLQotICAgIGlmIChoYXNJbWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2UoZW5jb2Rl
ciwgaW1hZ2UpOwotfQotCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Ci17Ci0gICAgaW1hZ2UgPSBudWxscHRyOwotCi0gICAgYm9vbCBoYXNJbWFnZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFoYXNJbWFnZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZGVjb2Rl
TmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0
aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQotewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1h
Z2UpOwotfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi1ib29sIEFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQotewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29k
ZXIsIGltYWdlKTsKKyAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwogfQogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNiNDk2YjA5
YjkyYjhlMy4uNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05h
dGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhh
bmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNkNWY2OTg4YjIxMTU4OGRhN2RkYjRm
ZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2ZTc0MzMxNzdiOTAzZGUwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTE4
NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJvdmlkZXJE
YXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lkKgogCiBSZWZQdHI8SW1hZ2U+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAgICBpZiAoIXBsYXRmb3JtSW1hZ2Up
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVh
dGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9
IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxl
Qml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IGIzODc5YTAwNDRlNjgxOWU4YjVmOTZmY2RiZDczNDVh
OTUwYzI2MjQuLjBmMzBkOTRhNzE0OTkyZjgxN2FhM2NmODViZTBjMzFiYjk1M2ZkMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJE
LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAgICAgYXV0
byYgcGxhdGZvcm1Db250ZXh0ID0gKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zIHsgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0
YXRlLmJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbigpLCBzdGF0ZS5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5IH07Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlv
bnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBEaXJl
Y3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBt
X3NpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGly
ZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIENPTVB0cjxJRDJEMUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNlMSogZGlyZWN0
WERldmljZSwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1
ODg2N2ViMmEwZmM0ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLjMxYzM4ZjM2MTNiMzZiNTFkZWMwZmVk
YTFiN2JjMTc3NzlkZjBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zCiAgICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRh
YmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3Jp
dGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1JbWFnZVB0ciYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyAr
NTYyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFt
X2xvYWRlZEljb25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlj
b25EYXRhID0gdGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFn
ZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAg
IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQ
dHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxv
d0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFz
ZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDE0ICs1ODcsMTQgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChp
Y29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVs
bHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFn
ZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKICAg
ICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0
byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1h
Z2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkpLCB0cnVl
KSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5m
aXJzdDsKQEAgLTYyMiwxMyArNjIyLDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1h
Z2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0
Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAg
IGlmIChpY29uRGF0YVNpemUpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBFbmNvZGVk
RGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmly
c3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN0YXJ0Q2xlYXJMb2FkZWRJY29u
c1RpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5oCmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLmUy
MjUyYTAwMDBkMmJiZTViNmY2OWNkMjI3MWQwMGExMjVjNTc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJM
QW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCwgYm9vbCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYs
IEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcg
KzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2Nr
IG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFp
cjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
LCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNM
b2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9p
Y29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEw
YWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uOGVmMWNlNDEyNzM2YThlZWQzYzZhYTE2YzAz
MmIzM2FkYjliZjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGlj
IFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFVzZURyYWdJbWFnZVRvQ3JlYXRl
UHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCBlMWIzOWY1NDJkZDM5ODA2YmZlYjk1M2ZkZDY0MjU2NWM5NGE5MWE4Li43
ODM0ZWVmMjQwYTBmNWRhMDEwNjQ3YzliODVkODMzNzhmZGJlYTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTc1NDYsNyArNzU0Niw3IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpl
eHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgaWYgKCFf
ZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVuc2VsZWN0
ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAg
ICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29udGVudFNuYXBz
aG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0
ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3NjksMTEgKzc3NjksMTEgQEAgc3RhdGlj
IFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdl
KQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNnSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKV0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGgg
Y3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuCkBA
IC04MDM0LDcgKzgwMzQsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVz
T2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdl
Rm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVu
c2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7Cisg
ICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhb
W1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgICAg
IGF1dG8gc25hcHNob3RWaWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0
aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgICAg
ICBbc25hcHNob3RWaWV3IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rp
b25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgYWRk
U3VidmlldzpzbmFwc2hvdFZpZXcuZ2V0KCldOwpAQCAtMTAwODUsNyArMTAwODUsMTIgQEAgc3Rh
dGljIFVJTWVudSAqbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhVSVZpZXdD
b250cm9sbGVyICpwcmV2aWV3VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxp
bmtJbmRpY2F0b3IuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0
aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRv
cmVsZWFzZV07CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24u
bGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW1tbVUlJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0Zv
clByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9s
bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAK
aW5kZXggZTc2YzA2MzhjN2RhMmEwNGYxZTA4OWJjNGQ0OTBmMjI0Yjg3ZDIxNi4uYzNiZWVmNWQx
NDBiNzI0MzhkYzc1MDU2MDNhZTlhNGNkZTJhMTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtOTYsMTQgKzk2LDE0IEBAIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShX
VEZNb3ZlKGhhbmRsZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAor
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShDRykKLSAg
ICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7CiAjZWxpZiBVU0UoRElS
RUNUMkQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJu
IG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDA1YzEw
OWNkMjAyNmQxNWY4MGViODMyYWQ5ZjFiN2JhMzNiYjk1NTcuLjllMjRhYjk5ZWJjNjc1Y2UyMDFh
NTkzOTcyOGM2MTlkYmE1OTVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9j
b250ZXh0OyB9CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2
ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwg
V2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9u
OjpObykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGNhMDI1
MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0OTcwMmNjNTU0
N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTgxMSw3ICs4MTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggNWY4NWRmODUxOWUxYTMxZTYyODNkYThmYjAwOGExMzViMjEzZTM0My4uMGQ3NTUyZjQ5M2Yw
NzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZv
aWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBH
Q0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCA4MWNiMzFiODVmZjI2ODUxMDBiOTQyZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3NjBlMmRmNmJl
M2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2Vs
bGVkKQogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9y
KEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+
bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRp
dmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgQVNTRVJUKENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKIAogICAgIENHQml0bWFwSW5mbyBpbWFnZUlu
Zm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2Njc0YmYxNGFjMDEyMGMzNWZkZjNhZGY2Li43YWEw
MDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRjMjI2ZjI3Mjc0OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1MzYsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChF
dmVudFRhcmdldCogdGFyZ2V0KQogCiAgICAgaWYgKHRleHRJbmRpY2F0b3IpIHsKICAgICAgICAg
aWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKQotICAgICAg
ICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS5hdXRvcmVsZWFzZSgpOworICAg
ICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgp
LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKCEqY2dJbWFnZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgxNzY5OTY3NWVjZmJiOWMyMzY3
OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2M2IxMzY3NWFjZGRlMzE3Yjlm
MzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzEs
MTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAgICBXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9u
KCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNhY2hlZFJlc291
cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2Um
IGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNv
dXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hl
ZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdl
KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNh
Y2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGFhN2JkNDhj
YzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlmMWY3OGM5My4uZDEwNDNmOTU2YzQxMjVkYmFjZjYyNGRk
MjRiYmJkNjNkNmRiYzllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtODQ2LDE0ICs4NDYsMTQgQEAgcHJpdmF0ZToKICAgICBfdGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9yRGF0YS50ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVmKCk7CiAgICAgX2NvbnRlbnRJ
bWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsK
ICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAg
ICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdo
dC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBfY29udGVudEltYWdlV2l0aEhp
Z2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmlu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudElt
YWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2
ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9u
VXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2
ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0
b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7
CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJ
bWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9
IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25S
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="commit-queue"
          id="430141"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413518</attachid>
            <date>2020-11-06 22:20:22 -0800</date>
            <delta_ts>2020-11-06 23:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106222020.patch</filename>
            <type>text/plain</type>
            <size>253451</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uZDllNmI3NzJjYjMxNWMyZTFmZGUzMzEzMDNjNDAy
ZmQ3YzkyMjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRl
eHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0
Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpu
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRp
dmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0xheWVy
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93SW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3Jt
SW1hZ2VTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0Fs
cGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRHZGtQaXhidWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29u
OjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xp
cFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIw
MjAtMTEtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBmb3IgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9NYWMvYWNjZXNza2V5Lmh0bWwg
aW4gaXNvbGF0ZWQgdHJlZSBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWE0YzM3ZGViNDUyOTA4ZDUxOWFi
NTA4YmMwMGRhYWQ3ZmQyNjQ2Li45MGIyMzJmNzIwMzI5ZTU3YmQ2MmI5MWE2MDA5OWJlZGRmMmQw
ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0
aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQg
TmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjplbmNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2
ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvcklt
YWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1h
Z2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJl
c2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTExLTA2ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBbaU9TXSBX
ZWJBdXRobiBwcm9jZXNzIGRvZXNuJ3Qgc3RhcnQgb24gaU9TIGRldmljZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBlZDc0NDg4MDFmZDRlNWRiMTE2ODFkYzI2ZWU2ZDAxMzI3MDEw
MTkxLi42NzNhMWRhNmJjODJkNTQwMDU3OTBlZTdlNDJkYjljNTg2MzNmYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFw
c2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAg
ICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRl
eHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTExLTA0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUgaW50
ZXJuYWwgR1BVIHJlbmRlcmluZyBmbGFncyBmcm9tIFdlYlBhZ2UgdG8gV2ViUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggYTQzYzIwNTgxNjVlODQ1OTNmODk0YzZhY2JlNjg0MmUyYmNhNWYz
Ny4uZDdkNDUxMTdmZWUyMGRiMjM5MzVjN2M2YmJkOTg0YmVmMmFjZDc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAxNTJlNTdkNzdkNmIyMmFkM2Nk
ZDMwZGM0MmU2MTgwZjE3NGE4YTguLjdmY2I3MGYxMTJhOTJiNjQzMGRmM2QwN2U3YjY0NDk0YzBm
ZWQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtOTAsOSArOTAs
OSBAQCBpZiAoJHtVU0VfRElSRUNUMkR9KQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGlyZWN0MkQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRp
dmVJbWFnZURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERp
cmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJE
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFEaXJlY3Qy
RC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFseXplckhlbHBlci5j
cHAKIApAQCAtMTQ0LDEwICsxNDQsMTAgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRS
ZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLSAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDhkOTI0OTFhMDg1MzBlY2EyZTk2ZjRkYzFlNjJkMzI1YjE2
ZTQ3NWMuLmVkNmFjYjMxY2JhNWQ3MjkxYTVkMDhmODVhNDcxMzYwNzAwNDA3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTUsMTAgKzI5NSwxMCBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRTaXplQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
Zjc0M2RkYTViNzkwZGVlZjVmYTU0ZWJhNWU1MThjMzBkYWNmN2U4Ni4uMDEwNDE5ZmQ0ZmQ1NGI5
NjEzMWQ1ZDJmNmQ1MWMxYmIxYmNkMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDEsNiArMTk0
MSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFkMzNhOTU1MTky
ZDkwNzZlYjNkOGMxNjJjZmUzODYyMmRmYjE4Yy4uNjcyZGNlMzZjNzFiMWQ1ZDk5NzEzZTkxYjkz
MjQwM2M5M2YxYThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMzcsMTAgKzMzNywx
MCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFn
ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzZlNDI1M2Y4NDZkZWRlN2Y5MGJi
NThjZDY1ZDYyOWQ3YmVjNzY1Li45YTM2Nzg4Zjk4MjU4ZWNjOWFjM2RiZDkyZDMyMThlYjMxNzE5
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTU4LDcgKzIxNTgsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURD
N0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEy
NTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNB
RTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjgsNyArNzQyOCw3IEBACiAJCTM3NkRDQ0UwMTNCNEY5NjYw
MDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc3QTNBOEYx
NUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1JbWFnZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NTEsNiArOTk1MSw3IEBACiAJCTcy
NEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NjZGMDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjEsNyArOTk2Miw3IEBACiAJCTcyNjZGMDI4MjI0MzEy
MDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdB
bmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYxNjEsMTEgKzI2MTYyLDExIEBACiAJCQkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgKi8sCiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuY3BwICovLAogCQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmggKi8sCi0JCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cu
Y3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cuY3BwICovLAog
CQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIy
NzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlC
Mjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovLAogCQkJCTFG
QzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLywK
IAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
ICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENHLmNwcCAqLywKQEAgLTI2NDA1LDggKzI2NDA2LDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFB
MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0
MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIz
MTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKKwkJCQk3MjUy
Mzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAotCQkJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMjY0MTUsNiArMjY0MTYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAv
KiBQYXR0ZXJuLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQ
bGF0Zm9ybUxheWVyLmggKi8sCkBAIC0zMzQzMiw3ICszMzQzNCw2IEBACiAJCQkJQTgxODcyMjMw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0
aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5
MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY1Nyw2
ICszMzY1OCw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1
MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE1ZGFiMWY0NjRhMWU3MzIxZjQ2NTgz
YmI5NmE4ZGQwYWVhMWYxMjYuLmJlOWIxOTU0NjQ1MWQyM2RhMzNiNTkyZmU4YjQ3ZWYzZGI2YWMy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1l
bnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBIVE1M
VmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBs
YXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKaW5kZXggZWZmZjNmNjZlODEzYjc3ODY5ODBjYWJjYTM1MTBiMTIwZGI2MDQw
Mi4uM2QxOTRiMDc5MGI3NzA5MzUwZTRmODQ2YWQ5NWM5YjRiYTljZjNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAg
ICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJs
ZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDY2MzE2
ZmIwY2Q1M2E2ZjA3OTUzMjkyMGNmMDQyYzJlNjEzMDU1MDAuLjE4MGI5YjkxYzAwMzQ4NjUyMTcz
YzM0NzczNmQxZDFmYWYyOTI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjM1LDgg
KzE2MzUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGNoZWNrT3JpZ2luKCZ2aWRl
byk7CiAKICNpZiBVU0UoQ0cpCi0gICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7Ci0gICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIGlmIChhdXRvIGltYWdlID0gdmlkZW8ubmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBk
c3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0
KSkKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXggMTdi
YTUxZmUwZTZjZTcxZDhjOWM1OGEwYjA3MzgyZjY2Y2VmYmUwOC4uNjFmODIzZmViMzAzZmVhZDM4
ZTEyNTRkZmJlMTA5YzYwZTNhZDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGJvb2wgaW5k
aWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24oY29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9y
KQogCiAgICAgRmxvYXRTaXplIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6ZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2UoKS0+c2l6ZSgpOwogICAgIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6
ZS5zY2FsZSgxIC8gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50Q3Jv
c3NmYWRlKCpfdGV4dEluZGljYXRvcikpCiAgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAg
IGVsc2UKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmlt
YXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdAogc3RhdGlj
IFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0
aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9y
KQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRzIl07Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
b250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZToo
X19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlv
biBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0
aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nv
dXJjZXNDYWlyby50eHQKaW5kZXggNWYwMTQ5NGYzY2ExZTMxZDc0N2JmN2M3YWZiNzZhZDBjZDdm
NjcwYi4uY2Y5YTE5Njk5YjhhOTVjNzQxMjAxZmQxNmM3MWI5NWFjMGFlOGYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNSw4ICszNSw4IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIzYjVjZjg5NDc2NjA0YzQzZDlmNDg1Nzc2
MmU1NTMyNzgzZmRhMTcuLmExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogewogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zb3VyY2UoSW1hZ2VTb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkpCiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGlu
Z1N0YXR1cyBkZWNvZGkKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2Rp
bmdTdGF0dXM7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGlmICghZnJhbWVIYXNGdWxsU2l6
ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpIHsKICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdM
ZXZlbCB3YXMgJWQsIHJlc2FtcGxpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lU3Vic2FtcGxp
bmdMZXZlbEF0SW5kZXgoaW5kZXgpKSk7CkBAIC0xNDIsMTcgKzE0MiwxNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBp
bmRleCwgU3Vic2FtcAogICAgIHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29u
dGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQobV9jdXJyZW50RnJhbWUsIFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIApAQCAtMTcxLDE4ICsxNzEsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWMKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBj
b3JyZWN0ZWRTaXplRmxvYXQpOwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0KEZsb2F0UG9pbnQo
KSwgc291cmNlU2l6ZSk7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0p
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHNvdXJjZVNp
emUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0pOwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAj
aWYgVVNFKENHKQotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChpLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRD
b250ZXh0KTsKLSAgICAgICAgaWYgKGltYWdlICYmIG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgPT0g
c2l6ZSkKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc2l6ZSkKICAgICAg
ICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIE5hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljCiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAot
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkK
K1ZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2Vz
KCkKIHsKLSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGltYWdlczsKKyAgICBWZWN0b3I8UmVm
PE5hdGl2ZUltYWdlPj4gaW1hZ2VzOwogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAo
YXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChpKSkKLSAgICAgICAg
ICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChtYWtl
UmVmKCppbWFnZSkpOwogICAgIH0KIAogICAgIHJldHVybiBpbWFnZXM7CkBAIC0yMTEsMTAgKzIx
MSwxMCBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorc3RhdGlj
IGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1
cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJz
YW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBJbnRTaXplIHN1
YnNhbXBsZWRJbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCkBAIC0yNDYsNyArMjQ2
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsID0gbV9hbGxvd1N1YnNhbXBsaW5nID8gc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9y
KGNvbnRleHQsIHNjYWxlRmFjdG9yRm9yRHJhd2luZykgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0OwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1
YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40Zild
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7
CiAgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwpAQCAtMzIyLDkgKzMyMiw5
IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlv
bnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmll
bnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJj
ZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCAzYjY4OTA2NzgzNTY5YjAxY2FiYTEyZmQ2MDFhZDU2MTk4NGIxN2I1Li45YzU5ZTdhZWRjMDJl
NmJhODc1NjhhMjVmZWFjZDYyY2U4YTlhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTUzLDcgKzUzLDExIEBAIGNsYXNzIFRpbWVy
OwogCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0
Zm9ybUltYWdlKSksIG9ic2VydmVyKSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1h
Z2U+IGNyZWF0ZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpdG1hcEltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBvYnNlcnZlcikpOwogICAgIH0K
QEAgLTEzNSwyMyArMTM5LDIzIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OwotICAgIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNw
ZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
LSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8UmVmPE5h
dGl2ZUltYWdlPj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KTsKICAgICB2b2lkIGRlY29kZShGdW5jdGlv
bjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdl
KE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmLCBJbWFnZU9ic2VydmVy
KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgpOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAg
Ly8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlz
IHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUg
YW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0xOTgsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4m
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVj
dG9yPFJlZjxOYXRpdmVJbWFnZT4+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgY2xlYXJUaW1lcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDIyM2Q5ZGMxODNkMDNlM2Y0Y2MzNTFmNGRhNmY2Zjg5M2YwYWI1
ZWYuLjg1NDAyMTVmNjIzN2NjMGEzZDYyNWUzMmZhOTY3ZGY5YTYyZWMyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2JhY2tl
bmQgPyBtX2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpIDogMDsKICAgICB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2Fz
dDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzMGI4ODQ5MTliMmM2MDQ1Zjc5
OTZjMTlhMTViYWY2MzliYzUyNjllLi4wMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRm
ODdiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBiMzVhYzY0ZmE4YjlmZmUwYzk0NDg1ZTk3
M2YyNGMyYWEwZjM0OTAuLmM1ZDA1N2NkYWQ0YjY1ZTg0N2U5ZTZmZmQwOWY2N2VmZDU3ZjYyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNB
bmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5n
LCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lk
dGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4
IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZj
NmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1h
bGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA2ZTIyMmMwMmYyZDlhZTM2
NDA2MWI3M2Q5YzM3Yjc3YjI5YjAzYjQ2Li45ZDQ0MGQwNTNiMDc4MGQ4ZDQyNWI2NmViOTUxMGQ2
MWRjOGVjZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGI1OTYwYWQ1ZmY3YzRkYTU2ZGY0
ZjVhNGE3OWFkZDk4ODQxMzZkN2QuLmJiMzljNmM4OGUxNDBiNDdmNDIyMDEwNzM2ZjFlNTZjNzll
NDNkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFn
ZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNJbWFnZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3Vh
cmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSWNvbihjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mKTsKKyAgICBJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFD
KQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggNGI5YmVlZDg2NTdlZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2
YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1l
ZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1
NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJm
M2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFn
ZUJhY2tpbmdTdG9yZShvdGhlcikpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5
MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNiYzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1
NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JT
cAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5r
SW50b05hdGl2ZUltYWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5MjA0YWQxMGE4MTA2ODA2ZGU5MjZmMmVlZmZjMTYzNGM3
NzAwZTZlLi41Mzg0NmM1OWNiNWVjNDAwN2Q1NDQwYTQxNTYxN2Y4ZjE4NzgwZjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VC
dWZmZXI+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUlt
YWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJl
c29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3
Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFn
ZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3
YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdjMDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmUKICAgICByZXR1cm4gYmFja2VuZFNpemU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNi
NTg3MjU2N2YwODgzYjViZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMuLmVkM2Y4YjViY2Y1OGU0Mjc4
NTY3ZDE4NmZiNjVjODQwMTYyN2M4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlv
bnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsMTMg
Kzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAgdmly
dHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lu
a0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDcxMDRkMDcxOTRmMzgxNTliMzNiZWE2
YWFlZDg4NWQ3MDliZDk4MTcuLmFhYTUxYmRkY2UwNGZkODVlOWVhNjFkMzgyY2MzYjExZWU2ZTIw
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVBbGxv
d1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
Y3BwCmluZGV4IDgzYjc4YjZlYzAwNmZjNTQ3NzQ1MmZmZDA4MTUyN2IyZGQ5MTYxODQuLmNjM2I2
MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHVu
c2lnbmVkIEltYWdlRnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
cyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKIAotICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
bV9uYXRpdmVJbWFnZSk7CisgICAgbV9uYXRpdmVJbWFnZS0+Y2xlYXJTdWJpbWFnZXMoKTsKICAg
ICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICBtX2RlY29kaW5nT3B0aW9ucyA9IERlY29k
aW5nT3B0aW9ucygpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgQ29sb3IgSW1hZ2VGcmFtZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoIWhhc05hdGl2ZUltYWdlKCkgfHwg
bV9zaXplICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAg
cmV0dXJuIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fbmF0aXZlSW1hZ2UpOwor
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4
IDU0YTljOWRmMzNiNGQzM2IxMjc1ZjkxNDZmZjg4NDJlMzdjMDAwNzEuLmFhNzNhZTM2Mzg5ZWMy
ZmFjNDIxZWMzNWMzZTZjNjcxODExZTdiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNp
emUoKS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSA6IDA7IH0KICAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNh
bXBsaW5nTGV2ZWw7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CiAKICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgRGVjb2RpbmdTdGF0dXMgbV9kZWNvZGluZ1N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX25hdGl2
ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKICAgICBTdWJz
YW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmOGUy
MDI4YzNjM2IzZjYxNmM2YTEzNzhhOTRlZmRmYzRlNWIxOTQ5Li4xNDgwMjFjZWVlNDU1YWViYjMw
NWRmZjM1NjEzZWM0NzQzM2Y1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShCaXRtYXBJbWFnZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvCiB7CiB9CiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkp
CiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEltYWdl
U291cmNlOjpncm93RnJhbWVzKCkKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhuZXdTaXplKTsKIH0K
IAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID09IDEp
OwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbMF07CkBAIC0yNDUsOCArMjQ1LDgg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKICAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7
CiAKICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRl
OwotICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2ZUltYWdl
KTsKLSAgICBmcmFtZS5tX2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFtZS5tX25h
dGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5zaXpl
KCk7CisgICAgZnJhbWUubV9oYXNBbHBoYSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPmhhc0FscGhh
KCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyBk
ZWNvZGluZ1N0YXR1cykKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bgogCiAgICAgaWYgKGZyYW1lLm1fZGVjb2RpbmdPcHRpb25zLmhhc1NpemVGb3JEcmF3aW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKGZyYW1lLmhhc05hdGl2ZUltYWdlKCkpOwotICAgICAgICBmcmFt
ZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubmF0aXZlSW1hZ2UoKSk7CisgICAgICAg
IGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm5hdGl2ZUltYWdlKCktPnNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZnJhbWUubV9zaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgp
KTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKQEAgLTI5Myw3ICsy
OTMsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJ
bWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBNb3ZlIHRoZSBuZXcgaW1hZ2UgdG8gdGhlIGNhY2hlLgotICAgIGZyYW1lLm1fbmF0aXZlSW1h
Z2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKICAgICBmcmFtZS5tX2Rl
Y29kaW5nT3B0aW9ucyA9IGRlY29kaW5nT3B0aW9uczsKICAgICBjYWNoZU1ldGFkYXRhQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC0zMDEsNyAr
MzAxLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZl
SW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNl
ZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2
b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1J
bWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSwgc2l6CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAg
IC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lCi0gICAgY2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKKyAgICBjYWNoZVBs
YXRmb3JtSW1hZ2VBdEluZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKICAgICBMT0coSW1h
Z2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4g
Y2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaW5kZXgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBpbWFnZSB3aXRoIHRoZSByZWFk
aW5lc3Mgb2YgdGhlIG5ldyBmcmFtZSBOYXRpdmVJbWFnZS4KQEAgLTM2Miw4ICszNjIsOCBAQCB2
b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAg
ICAgc3RhcnRpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIC8v
IEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4KLSAgICAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vi
c2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7Ci0gICAgICAgICAg
ICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBwcm90
ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgs
IGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRp
b25zKTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUltYWdlKQogICAgICAgICAgICAgICAgIExP
RyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMg
YmVlbiBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNl
VVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtkZWNvZGluZyBmb3IgZnJhbWUgJWxkIGhhcyBmYWlsZWRdIiwgX19GVU5DVElPTl9f
LCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1
ZXN0LmluZGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0
QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcChtaW5EZWNvZGluZ0R1
cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1lKSk7CiAKICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3JlYXRpb24gdGhyZWFk
IHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50IHRocmVh
ZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHByb3RlY3Rl
ZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5p
c29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVS
ZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1vdmUo
cGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUg
ZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgog
ICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09IHByb3Rl
Y3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHBy
b3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJv
dGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLnJl
bW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdC5p
bmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGlu
Z09wdGlvbnMsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ1N0YXR1cyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhXVEZNb3Zl
KHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1w
bGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVj
b2RpbmdTdGF0dXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQg
d2lsbCBub3QgY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291
cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTQ1NCw5ICs0NTQsOSBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJjZTo6ZnJh
bWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogICAgICAgICBp
ZiAoZnJhbWUuaGFzRnVsbFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMg
aW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWxWYWx1ZSk7CisgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1fZGVjb2Rl
ci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7
CiAgICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25l
LgotICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKTsKKyAgICAgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTY5NywxOSArNjk3LDIxIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldFRhcmdldENv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogfQogI2VuZGlmCiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpc0Rl
Y29kZXJBdmFpbGFibGUoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKKyAgICBpZiAoIWlzRGVjb2RlckF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpm
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4PE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFn
ZSkpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpk
dW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggZDk4ZWMwZTdmNmU1MmNlNTU4OWVkZDk5YjQyYzdhZDYzY2Vk
ZjAxZC4uYTZmNGFiMTNkZWVmZGEzNjUyYmI5MzNjYjJlMjYyYTVmY2I2MDMyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
aW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShSZWZQdHI8TmF0
aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KQEAgLTEyNSwx
MyArMTI1LDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRUYXJn
ZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogI2VuZGlmCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAKIHByaXZh
dGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFscGhhT3B0
aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICBJbWFnZVNvdXJjZShOYXRpdmVJbWFn
ZVB0ciYmKTsKKyAgICBJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4K
ICAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hl
ZFZhbHVlID0gbnVsbHB0cik7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAgICAgdm9pZCBlbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZWQoRW5jb2RlZERhdGFTdGF0dXMpOwogCi0gICAgdm9pZCBzZXRO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICB2b2lkIHNldE5hdGl2ZUltYWdlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZU1ldGFkYXRhQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHIm
Jiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNv
ZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CisgICAgdm9p
ZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0
SW5kZXhBc3luYyhQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgc3RydWN0IElt
YWdlRnJhbWVSZXF1ZXN0OwogICAgIHN0YXRpYyBjb25zdCBpbnQgQnVmZmVyU2l6ZSA9IDg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggN2FhYTFlZmIzYTVlMzUzNjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uNTk1NjdkMGMzOTkz
MmIwZTdiMTdmYjY1YzcyZTc2ZGZhN2YxOTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uYTA1NzhhZTAz
ZTcwN2M4NTU2OTY0YTUzNmU5YWI2NGE1M2U4NWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5n
IE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29y
a1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlhMzQzMTE0
MDM4YjBiOTEuLjdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRS
ZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTNkY2FiMzVhYzhjNWE5ODFkZGQ5YTMyMDg4
ODg0ZmQ0YWEyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICBpZiAoIXBs
YXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpKTsKK30KKworTmF0aXZl
SW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQorICAg
IDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThl
NWIuLjM3ZWI2NTI1ODQ4MGM2MDk0ODNkZWQ1MjdiYTMzZjkwNGM1YjUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3
LDMwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHIm
Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1
cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQogCi19CisgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1JbWFnZVNpemUobV9wbGF0Zm9ybUlt
YWdlKTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdl
SGFzQWxwaGEobV9wbGF0Zm9ybUltYWdlKTsgfQorICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3Io
bV9wbGF0Zm9ybUltYWdlKTsgfQorCisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpIHsgY2xlYXJQ
bGF0Zm9ybUltYWdlU3ViaW1hZ2VzKG1fcGxhdGZvcm1JbWFnZSk7IH0KKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTQ3ODVlMzJmNjk3MTYzMTVmMGI0MjI4MWY1NDg3OTdmNzZlYjdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENv
bG9yOworY2xhc3MgSW50U2l6ZTsKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQ
dHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNUMkQpCit1c2luZyBQ
bGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlmIFVTRShDQUlSTykK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PjsKKyNlbGlm
IFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPFNoYXJlZEJpdG1h
cD47CisjZW5kaWYKKworV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJik7Citib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJik7CitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdl
U3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIw
N2Y4NmYzOTMxNzhmNGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNl
Nzk3ZmQ4ZmIyZDZhYWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShOYXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhh
NWY1ODcwYTM1MzU3M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2
NjRhMjQxOTQ5M2U5NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkx
NmY5MGFiZDA3NTNhMTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQw
ZDM0ODRiMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTU2Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJl
dHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsK
ICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTlj
MWVhNi4uMjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJh
bWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoKTsKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
UHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRl
b1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBm
Mjk0ODgxNmVkZGU3OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQw
NDlkNTA0MTZkNjUyNDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEx
MjcsNyArMTEyNyw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAg
ICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkg
OiBudWxscHRyKTsKIH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9G
dWxsc2NyZWVuTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRh
dGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyAr
MjI5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNv
bmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0
b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAt
MjMxNCw4ICsyMzE0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdl
LmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCks
IGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0
IGltYWdlUmVjdCh7IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0
LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFn
ZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFu
IGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1
dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwog
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdi
ZjdhNzY3MzMwYTY3MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQz
ZjgwOTEwZjZiYTI5ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIx
NSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
OwogICAgIGJvb2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJl
dGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9y
bWVyOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVz
c2lvblNlc3Npb247CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2
YzI2NTgwNTljNjExYWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0
NDA4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0
dXJuIG1fbGFzdEltYWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkK
ICAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAg
bV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYy
Niw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBA
IC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5
YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4
NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAg
IHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsK
KyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3
Y2I0Li45YTUzNmRiOTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9G
dWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3Vy
cmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVm
PihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
LT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28K
ICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlh
U2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFn
ZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAg
ICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9
ICptX3ZpZGVvVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0g
dmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNm
b3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2Zi
M2NmODBiZjc1ODUuLmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02
MywxMCArNjMsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0
cikgZmluYWw7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFj
NmQxYTZlNjU2YjgwODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2Ey
YWY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5MYXllci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQ
dHIgY3VycmVudEltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJy
ZW50SW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxs
c2NyZWVuTGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMo
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggNTJkOWIxZTg3YzgwMzRkNmY3ODk2MDZjMzc3NjI1MmJmYzVkNGM1My4uY2Jk
ZjgyMWQ4NjUxZDUyNmU1YmQwOGZhMzIzZDA5ZGQxOWI2NzQxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJ
bWFnZSgpCiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUg
aW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYg
dGhlIGxheWVyIHNpemUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDg4NWY3OTlmNmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVk
MTI0ZDQ3OWU2ZGZmYWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3Mg
SW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9y
IG1fY29udGVudHNTb2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRp
bmdDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOwogICAgIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlv
bnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNm
b3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMz
N2YxY2FiOTZhN2ZiNzNmNWJmNDM5YmEuLjk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2Nm
ZDdhOWE1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAj
aW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJh
d2luZ1N0eWxlIHsKIAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZs
b2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNv
bnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8v
IEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28g
d2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxh
eWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFk
b3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
IHsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0
ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hh
ZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQg
ZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJ
bWFnZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0
byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpKQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2Uu
Z2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkp
KTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZv
cm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qo
bGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291
cmNlIGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5z
YXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3ZDdhMGE1MGU5YzE5MDY2ZGQ5
M2RlNTk2MWQ2NjkxYS4uM2RkOTAxMzRkMTQ1YjNhNzA2ZWE1NTU0YWQyMDI4OTJhOTgxZTQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIGNsZWFyUmVjdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291
cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVk
X2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRl
eHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3Im
LCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93
U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9p
ZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNv
bnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3Jp
ZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1h
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhmMGM3
MDc2ODIwZDA2YTU1YmE1YzU1ODI0OGMzLi42ODc4MTA2M2I5MjIxMDlkMGYwZDU4ODY0ZDVjNjI4
NmUwODAxODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQgKzEy
MywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9y
bUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRl
LnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28gd2Ugc2hv
dWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjY2LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4MSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3Vy
ZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENhaXJvOjpk
cmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJlOTBmMDU4
YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwg
dHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdl
MkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhh
IGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBp
eGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBiZSBjaGFu
Z2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHkuCiAgICAg
ICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQgaW4g
d2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBmYTA5YjgxM2VhNDM1MTY2MGFl
YzU2MTMxMTNiMzNlYTg5NjYzMDI1Li5iNGU5MTE0ZTdmYzY3NTcyZmYzZmFiMjljZmY0NjU3Njlh
OGRhYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Mywy
MSArMjgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlCiB7CiAgICAgaWYgKGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7
CiAgICAgICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICAg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwor
ICAgICAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1
dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5h
bHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9y
bUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRl
c3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJm
YWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCkBAIC00MjMsNyArNDIzLDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNsaXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNs
aXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCmluZGV4IDhhOTM3ZGEyMzlkNmQ2Y2RkMGEwNDhjY2NkODM2NzkxMDVkOTdjYWMuLjMx
YTBmNTQwMGVlODRlMDhiMGM1ZGQ0ZjhlNTJmMTk3MzUzNWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxl
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQ
YXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2ZGI4NjI3MjEzOTk3ZDRiNTZhODIw
ZThmLi43ZGExNzBlNTk5MGJlMTg1OTBlOTFkNGQxY2FhN2QwZTMxMDNmODE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGluYXRpb25Db250ZXh0U3RhdGUgPSBk
ZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBk
ZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRl
KGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpk
ZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBo
YSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENv
bnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAg
ICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVm
NzZkZmM0YzhlZjdiODUuLjkzMTA4ZDA0ZWM5YjExYmYwZTU0MjU3NmZmM2Q3OTkzNGI4MDdiODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
NjQsNyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5
dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJl
aGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tp
bmdTdG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAg
ICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCks
IDAsIDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJu
IGNvcHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkp
OwogICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVy
biBtX3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1ha2VSZWZQ
dHIobV9zdXJmYWNlLmdldCgpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3I7CiAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudCht
X3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyAr
MTAwLDggQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
YWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0
byBzdXJmYWNlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAg
ICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGltYWdlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAy
MjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5z
aWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjMGY4MWNiMzQxOTBjYjM3M2JkODQzNDE1OGI0ZDAz
MzAxYWIwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb09wZXJhdGlv
bnMuaCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dENhaXJvLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17
Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRT
aXplKCk7Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuICFpbWFnZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250
ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotfQotCi1Db2xvciBuYXRp
dmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Ci17Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUo
MSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAg
ICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9j
YXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0
KCkpKTsKLSAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFS
R0IgeyAqcGl4ZWwgfSkpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggY2U1Mjc4MDYwYTBkZjVjMTBmZDEyOGY5NmRm
ODkzYWY4NmEwMmNmMS4uNTYwZjc0N2E4ZmI2NDgxYmU0YTMwMTg1ODUwMGFhOWZhMTYwZjc4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
YXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
ICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRl
cm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBz
cGFjZSBhbmQgdXNlciBzcGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0
b0NhaXJvTWF0cml4KG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1h
Z2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1NWNlMmI2NWU2M2MzZjk1MWI4NWFhNDcwYmI0N2Vh
MDc3OGE0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5j
bHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VT
aXplKGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFz
QWxwaGEoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgcmV0dXJuICFpbWFn
ZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05U
RU5UX0NPTE9SOworfQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9y
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgcGxh
dGZvcm1JbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBD
b2xvcigpOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAg
ICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gdW5wcmVt
dWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOworfQorCit2
b2lkIGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJikK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGE3ZGJlNmU2YmU1ZjU2MjUyYzNjNzBiMTI4ODBlM2I2NDRi
YTRjOTkuLmZlOWFkMzc2NzMzMDc4NjU4NDBhM2ZjMDAzZDVhMDE2ZjA4NmZhOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVz
dG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1L
bm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ0NCwyMyArNDQ0LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLnByZVRyYW5zZm9ybWVkTmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1h
Z2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFn
ZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmICh0aWxl
UmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZTsK
KyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVj
b2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBz
aG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25s
eSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFn
ZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7
Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBn
YXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFn
ZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZp
Y2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lk
dGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0
KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0g
aW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVp
Z2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0
byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJl
cGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0
LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KQEAgLTUwOSw3ICs1MDksOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0
aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpOwotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGltYWdlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMg
dG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5N2VjYTgxYmJkYmM0ZTA1NjdlNDNj
MDRkLi42NjFhMDNjYzRhMGRhM2VkM2E5N2NjOThmM2VjNTM2NTFlM2EyOWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faW1h
Z2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIG1faW1hZ2VI
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgbV9p
bWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVp
Z2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdlV2lk
dGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ3LDcg
KzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgLy8gc28sIHJlLXJlbmRlciBp
dCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAvLyBj
b2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3IgdGhl
CiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENH
SW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZS5nZXQoKSk7CiAgICAgQ0dD
b2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsK
ICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0OwpAQCAtMzYyLDIyICszNjMsMjYg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29u
dGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVy
cG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9j
Z0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgaW1h
Z2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFn
ZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KLSAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1h
Z2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgICAg
IG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVy
Q29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsK
LSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1h
Z2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIHNpemVfdCBiaXRz
UGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UuZ2V0KCkpOwor
ICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKGltYWdlLmdl
dCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25lbnQg
IT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0
c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25l
bnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAgQ0dC
aXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2Uu
Z2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0gZmFsc2U7CiAgICAgLy8gVGhlc2Ug
Y291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBvbmUgbGFyZ2Ugc3dpdGNoCiAgICAg
Ly8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBzbyB0aGF0IHdlIGZhaWwgZmFzdCBp
ZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICBt
X2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAgQWxwaGFGb3JtYXQgYWxwaGFGb3Jt
YXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1f
Y2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2Uu
Z2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAg
ICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBtX2FscGhhT3AgPSBBbHBo
YU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwxNCBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3JtYXQ6Ok51bUZv
cm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdl
LmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlE
YXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3Bp
eGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERh
dGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFja0FsaWdubWVudCA9IDA7Ci0gICAg
c2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZS5nZXQo
KSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdl
LmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4
ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRkaW5nKSB7CiAgICAgICAgIHNyY1Vu
cGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTI5LDggKzUzNCw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvCiAgICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93Qnl0
ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCi0gICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0LAorICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBj
YW52YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFj
ayB0byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKQEAgLTU0Myw3ICs1NDgs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25R
dWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShj
Z0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1YjIw
ZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBmMWZhNWMxN2IzLi44YzVhYmY3YzkzZTc5NzEzZjcx
M2E2ZGJkZTliYzAxN2YyMWY4OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03NCwx
NyArNzQsMTcgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb24KICAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJ
bWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24g
cHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGlt
YWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRT
aXplKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGJhY2tlbmRTaXpl
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQo
KSkpKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMg
UmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFp
blB0cjxDR0ltYWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2Nh
bGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxz
ZQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVj
dFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5n
U3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUo
bWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdl
dCgpLCBqcGVnVVRJKCkpKSB7CkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aQogCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJy
YXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAz
MiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CiAgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1
dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewotICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgaW1hZ2Ug
PSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUo
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZmZlZjY2MzMwZDFmYmUyNmM0
YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uNmMwMzNjNjM4MzhhZmUxYTBmNjI3ZDZiNDRhMTU0NmYz
ZmVlZTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTA3LDE3
ICsxMDcsMTcgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNl
IENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlCYWNr
aW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoCisgICAgICAg
IHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAg
ICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xv
clNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAotICAgICAg
ICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICAgICAg
MCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5
YmQ3ZjFiYWI0N2ZmN2M3OTc0MzQ4MzNjMjdhNTQ5NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2Rk
ZjA2M2M0YTg2NDhmZGZmYWNlN2NmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHAKaW5kZXggZGJjM2I3ZWI4YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAz
MC4uYTlkNTQ4NWEyNjFiNWEwZGY1M2QyYjg5NzEwYWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZv
cm1hdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNv
bnN0CiAgICAgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewotICAgIHJldHVy
biBtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUobV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KCkKIHsKLSAgICByZXR1cm4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJm
YWNlKSk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50
b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlv
blNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQot
ICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2Vu
ZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0
Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMy
MzA5NGVhNzk1YzVkMjQ4M2M4ODQ0MDMxMjRhOTA0MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIw
MWZmYzBmYjU3N2NmYjgyYmZlYzY5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQ
dHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4
OTBhMDcxODEwOTIzZjc1YmEwZTIyOTNjNDZiZWE4NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcy
OTdlOWIxMDI5NDM3MGExZTI3NTA2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcg
QEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkg
KiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1Bs
YXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKIHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VE
ZWNvZGVyICVwIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1
MTEzNTk1MWNkMWI1MzhiZGRmMWVjZTU0NTA2ZGRmNmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFm
OGU5YTE5MDU3MzEzZDU1MTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5h
bDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi0jaWYgVVNFKENH
KQotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGltYWdlID8gSW50
U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSkgOiBJbnRTaXplKCk7Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0g
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7Ci0gICAgcmV0dXJuIChpbmZvID49IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZp
cnN0KTsKLX0KLQotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VT
aXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQot
ICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICBhdXRvIGJpdG1hcENvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9m
KHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKLQotICAgIGlmICghYml0bWFwQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
Yml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdl
LmdldCgpKTsKLQotICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgIHJldHVybiBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjazsKLQotICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+
KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2
ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSNpZiBDQUNI
RV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8v
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1YWIxN2Q1ZTMxOTZkNGEu
LjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNjMsMTAg
KzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0dGVyblRyYW5zZm9ybS5z
Y2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAs
IC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1h
Z2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgp
KQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsK
KyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
dGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0
dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVh
dGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQg
YWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNp
bmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJl
aW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEg
PDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVm
IHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAg
Q0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFr
UmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwog
CiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIHBh
dHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwotICAgIHJldHVybiBDR1Bh
dHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhT
dGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRl
cm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFu
dFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDU5MDFjMGI0NWJkM2U4ODMwYjU0ZTRjOWI5MDQwMzIzY2NmZjM4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRm
b3JtSW1hZ2VDRy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVk
ZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKKyNpbmNs
dWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ludFNpemUgcGxhdGZvcm1JbWFnZVNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1h
Z2UpCit7CisgICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7Cit9CisK
K2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhhKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
KQoreworICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1h
Z2UuZ2V0KCkpOworICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZExhc3QpICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7Cit9CisKK0NvbG9yIHBsYXRm
b3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1h
Z2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBwbGF0Zm9ybUltYWdlU2l6ZShpbWFnZSkgIT0gSW50
U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICB1bnNpZ25lZCBjaGFy
IHBpeGVsWzRdOyAvLyBSR0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMyQmlnKSk7CisKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVy
biBDb2xvcigpOworCisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0
KCksIGtDR0JsZW5kTW9kZUNvcHkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBp
ZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CisK
KyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAv
IHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBp
eGVsWzNdLCBwaXhlbFszXSk7Cit9CisKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2Vz
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworI2lmIENBQ0hFX1NVQklNQUdFUwor
ICAgIGlmIChpbWFnZSkKKyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFn
ZShpbWFnZS5nZXQoKSk7CisjZW5kaWYKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDAy
YWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdkOWRhMzQyZGQ3MDQuLjM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5QdHI8Q0lJ
bWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhp
YyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1h
Z2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRvd25jYXN0
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2Uo
KV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1h
Z2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VX
aXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgmIGVmZmVj
dCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDFjOWI3YTE0MWQ0MmJlNmNiNWNhOTc2
ODg4MWE3MTVhZjgxYWQ1MjEuLmM3ZWRkNzU4ZDk4ZmUxOTI3YWM1MjM2NTRlMWRmNDY5MzhhMGYy
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ2Myw3ICs0NjMs
NyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK0Ry
YXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwg
bV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCA4MmIwY2UxOTdjMTJjZTg0ZDMxNzQxYTY5Y2RlMWE0MjJhMWQzZDU3Li4yZjc2ZWNh
ZjZmODM3N2ViNGJkY2E2MzE3OTJiZTczMDA3OWY0ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTEzNDYsNyArMTM0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQpAQCAtMTM2MCw3ICsxMzYwLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxE
cmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1faW1hZ2U7CiAgICAgRmxv
YXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgdm9pZCBEcmF3TmF0
aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gRHJhd05hdGl2ZUltYWdlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1h
Z2U7CisgICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+
PiBpbWFnZTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGYxNDI5ZDgzYTkz
NWViZDUxYTY4OTU3NWUwNTg4N2ViMGI1MTM3OGQuLmJmM2NiMzQwMTQxZDNlZjdhMDE2ZTRlOWVl
YzU3Y2FlZWFkZGFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIGFwcGVu
ZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBw
ZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
Zjk1MWNmYWEyY2FjYzk2ZDRjMWExOGEyNWZhNTg5NjA3OTIyNDZkNC4uMzM1MzU5OTMyMjAwZGM0
ZDNiNTcyYTFkYjFkOTM2NTlmYTcyNDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcAppbmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4MDNhZGMyOGY0ZjI3MWVmZjU4OWI3
Li5jMGFhZTNhN2Q0OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2ZDdkNmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIH0KIAotICAgIE5hdGl2
ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAg
ICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgfQogICAgIHZvaWQgZHJvcEltYWdlKCkgeyBtX2ltYWdlID0gbnVsbHB0cjsgfQog
CkBAIC0xNzksNyArMTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKICAgICByZXR1cm4g
KGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewog
ICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2ZTJlYTA3OTdiZDNjZmQzZTlkNDUw
MDg0OTY4ZThkMzMzOTU5YTdkLi41ODY5ZDhjODZhNDE5NGQzZTM4OGVjOTIwZTUyNTdlNzgyNjkx
YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgp
OyB9CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9CiAg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggYzRjZTEyZGI3MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1ZTY3OTIxOC4uZjFmODdmYmUzZWE0
NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUsNyArMzIxNSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBvdXRw
dXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0
eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4ODY2
N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4wYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2
MDYyZTczNzkwOGFkMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBvdmVycmlkZTsKLSAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZpZGVvVHJhY2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGNk
NTBhMWU4NmMyMzEyNmZkYjg5MTRkYTNhMzk3MDFmZGRkNmE2NjEuLjczODBlYmY0NzY2MDFjZDBk
OGRmYzM2YmY0ODhhMTgwMjQ3YzA4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtNTYsNyArNTYsMTAgQEAgUmVmPEltYWdl
PiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKIAogR2RrUGl4
YnVmKiBCaXRtYXBJbWFnZTo6Z2V0R2RrUGl4YnVmKCkKIHsKLSAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBzdXJmYWNlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBhdXRv
IG5hdGl2ZUltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5h
dGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAg
ICAgcmV0dXJuIHN1cmZhY2UgPyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlLmdldCgp
KSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KaW5kZXggODEzNmMxZmZmNDViOWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4u
YzI0Nzk1ZjUwOWEzMzZlZjBkN2IxNzFkMjY2NDQ2Y2FhZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
KQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8
SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZp
bGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6
Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQ
dHImIGltYWdlKQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNjgsNyArNjgsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9h
dFBvaW50KCksIHNpemUpOwogCiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpIaWdoKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShtX2NnSW1hZ2UuZ2V0KCksIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBjb250
ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1fY2dJbWFnZSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KaW5kZXggNjkwOGYxMDc2MzJlODkwMThjYTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4u
Y2FkOWJiMjc1M2UzNGVlMTk1YmFlNWI1NTg2NzUzYzEyNjgwZjM3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNzQsNyArNzQs
NyBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpu
YW1lKQogICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiB9CiAKLVJldGFpblB0cjxDRkRh
dGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2
ZUltYWdlUHRyPiYgbmF0aXZlSW1hZ2VzKQorUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1h
Z2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmPE5hdGl2ZUltYWdlPj4mIG5h
dGl2ZUltYWdlcykKIHsKICAgICAvLyBJZiBuYXRpdmVJbWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdl
IGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQogICAg
IC8vIEV2ZW4gdGhvdWdoIHRoZSBjYWxsIHRvIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhIHdpbGwgZmFpbCBhbmQgd2UnbGwgaGFuZGxlIGl0IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4
OSw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRp
b24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKLSAgICAg
ICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUlt
YWdlLmdldCgpLCAwKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGlu
YXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIDApOwogCiAg
ICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJl
dHVybiBkYXRhOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBCaXRtYXBJ
bWFnZTo6c25hcHNob3ROU0ltYWdlKCkKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZGF0YSA9IHRpZmZSZXByZXNlbnRhdGlvbih7IG5h
dGl2ZUltYWdlIH0pOworICAgIGF1dG8gZGF0YSA9IHRpZmZSZXByZXNlbnRhdGlvbih7IG1ha2VS
ZWYoKm5hdGl2ZUltYWdlKSB9KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCBiMDA3OTlm
ZTdkMjIxNGM1NTBhODNhMzdhZjE4ODdhMjUwOWYyZTY0Li45ZjExMjRmZWE3MDc2NmU2ZTFjNjRi
ZGI1YzdjNjNiMGFlOWE0NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHAKQEAgLTEwOSwxMSArMTA5LDE0IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9
IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUobV9pbWFnZUJ1ZmZlcikp
OwotICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZl
SW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9
IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVz
ZXQoc2l6ZSwgbmF0aXZlSW1hZ2VIYXNBbHBoYShuYXRpdmVJbWFnZSkgPyBCaXRtYXBUZXh0dXJl
OjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBV
U0UoQ0FJUk8pCi0gICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFn
ZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdl
RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEoc3VyZmFjZSkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT51cGRhdGVD
b250ZW50cyhpbWFnZURhdGEsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIEludFBvaW50KCks
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApp
bmRleCA4YmM1ZDI3YmU2MzVlZmRkNWE3ZDFmNmM0NzNmMjhkODhmMjk2NThhLi43YjI5OWE1ZjQ3
MTk3ZTliMGIwNzIyYjYzNDgxNDViYjBhNjgzMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTU0LDE0ICs1NTQs
MTQgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb24KICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJh
dGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewogICAgICAg
ICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKICAgICAgICAgdm9pZCBl
eGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5
KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCks
IGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwg
YXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTcyLDcgKzU3Miw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUp
OwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9w
dGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdO
YXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAK
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQpAQCAtNTkyLDggKzU5Miw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAg
ICAgfTsKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0
aW9ucykpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSkKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+
KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVz
dFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAtMTA3Nyw4ICsxMDc3LDggQEAgdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBGbG9hdFIKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
Ci0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLmdldCgpKSwgZGVzdFJlY3QpKTsKKyAgICBpZiAoYXV0
byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAg
ICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4obmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDY5MWU3NDE4MDAz
ZTU3NThhNjA0NGYzYzk3OTFiMzEwOGFkMzdjMmYuLjY2ZWFkZTg1ZGIxYjUxODEzZmFiM2I3NTY2
M2ZkYWVjYWRmNjYyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6Oklt
YWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNv
cmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAKaW5kZXggODI2ZDJkYTViZGVlYjY3OTVmZDA3ZjE1MTQyNDE4MGM4YWI1ZDBjOS4uYTYxMTA5
MmVjOTE0NzAwOTIyNjBkOGIwNGI3Y2EzNTFjNzZmNDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVu
dHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogewogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgYXV0byBmcmFtZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBjbwogICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0YTsKIAogI2lmIFVTRShDQUlS
TykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLmdldCgpOworICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICBieXRlc1BlckxpbmUgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAjZWxpZiBVU0UoRElSRUNU
MkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAyYWJm
NDM4MmQzMDBmNGUxZDMzMjE5MzFlYTk5ZGE0NDRmYTFlMzhmLi40MDYzM2EwMTlkY2RkMzA3ZTIx
MDhkNzU5NmY4ZGU2MGFjOTMwYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUmVmPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3MKIAog
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKFR5
cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBHcmFwaGlj
c0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQ
dHIoMCkKICAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5nZXMpCiAgICAgLCBtX25lZWRzRGlzcGxh
eShmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQpAQCAtMjk0LDIyICsyOTMsMjIg
QEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdlKElt
YWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgLy8gTWFrZSB0aGUgZGVj
aXNpb24gYWJvdXQgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGNoYW5nZWQuCi0gICAgICAgIC8vIFRo
aXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBO
YXRpdmVJbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFu
Z2VkLgorICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2lu
dGVyIGVxdWFsaXR5IG9uIGEgUGxhdGZvcm1JbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxs
IGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgogICAgICAgICAvLyBUaGlzIGFzc3VtcHRpb24gaXMg
dHJ1ZSBmb3IgdGhlIEdUSysgcG9ydC4KLSAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZl
SW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAg
aWYgKCFuZXdOYXRpdmVJbWFnZVB0cikKKyAgICAgICAgYXV0byBuZXdOYXRpdmVJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBpZiAoIW5ld05hdGl2
ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChuZXdOYXRpdmVJbWFn
ZVB0ciA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cikKKyAgICAgICAgaWYgKG5ld05hdGl2
ZUltYWdlID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbmV3TmF0aXZlSW1hZ2VQdHI7
CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmV3TmF0aXZlSW1hZ2U7CiAgICAg
ICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAgICAgICAgICBtX2NvbXBvc2l0ZWRJbWFn
ZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
Y29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOwogICAgICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2FsZShwYWdlU2NhbGVGYWN0b3IoKSAqIGRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2Ug
PSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IG51bGxwdHI7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDNiM2E0ODMzMDE1
YzVjNzljZDZlNmM5MzBlMmI1NzdmNDE0ZjQxNTQuLjU4ZjRmMzY1ZDI1NzM0NzcyOTMyN2FmYmNh
ZDE4YzdjMTRjM2VlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCIKQEAgLTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIFRleHR1
cmVNYXBwZXJMYXllciBtX2xheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
TGF5ZXI+IG1fYmFja2Ryb3BMYXllcjsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBv
c2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50IG1fY2hhbmdlTWFzazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDUy
YzVkYjA3NzYwZWY3Y2YxNWYwOWMyODM3OGZjZmQ0ZDgwZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEw
MWFiMDk2Y2FiMzY2MjcwYzQ0ODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNiBAQCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVy
VHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50
KGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwg
bV9jb29yZGluYXRvcigwKQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAg
ICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdFBlbmRpbmdU
aWxlQ3JlYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4
NSwxMiArNTg0LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoYm9vbCBzaG93KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZVB0ciA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgOiBudWxscHRyOwotICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9PSBuYXRpdmVJbWFnZVB0cikKKyAgICBhdXRvIG5hdGl2
ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51
bGxwdHI7CisgICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlID09IG5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZSA9IGltYWdlOwotICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0g
bmF0aXZlSW1hZ2VQdHI7CisgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFn
ZTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAg
bm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwpAQCAtODQ5LDExICs4NDgsMTEgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogICAgIG1fbmljb3NpYS5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQg
PSB0cnVlOwogCiAgICAgLy8gRGV0ZXJtaW5lIGltYWdlIGJhY2tpbmcgcHJlc2VuY2UgYWNjb3Jk
aW5nIHRvIHRoZSBjb21wb3NpdGVkIGltYWdlIHNvdXJjZS4KLSAgICBpZiAobV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIpIHsKKyAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAg
ICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgYXV0byYgaW1hZ2UgPSAq
bV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgICAgIHVpbnRwdHJfdCBpbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KCZpbWFnZSk7Ci0gICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFn
ZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyLmdldCgpKTsKKyAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSk7CiAKICAgICAgICAgLy8gUmVzcGF3biB0aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBp
ZiB0aGUgdW5kZXJseWluZyBpbWFnZSBjaGFuZ2VkLgogICAgICAgICBpZiAobV9uaWNvc2lhLmlt
YWdlQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IGVlOGY1Nzg3OWFkYTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNl
MTNlNDEuLjlmMGUxNDk2YmRjYzVkMmRiNmE5ZTY2YjAyNDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0gbV9uZWVkc0Rpc3BsYXk7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2U7CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAg
ICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRp
bmdUaWxlQ3JlYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKaW5kZXggODgzNWY4OGQx
YmJjZDIwM2MzMjU2MmRhMjQxNGNiYzI3YjZmYjBmOC4uNTI1YTE2MzQxZWJkNWZlNjQxOWQ4MmQ4
MGEwNDMwNGRiYTcyMmQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKQEAgLTgwNCw3ICs4MDQs
NyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQogCiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBv
cmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQg
Z2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRv
IG5hdGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2UpOwogICAgIENPTVB0cjxJRDJEMUJp
dG1hcD4gZGV2aWNlQml0bWFwOwpAQCAtODEzLDEwICs4MTMsMTAgQEAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1h
cCogaW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBiaXRtYXBT
aXplKGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29u
dGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdQbGF0Zm9ybUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0
LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9h
dCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1
dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRl
eCA3NGExMDM2NzA5ZjM4NTVjZThkNTRmNzVlY2MzNmYzMWQ4NjMyYzVhLi41ZDE5NjA4MGNkZTQ1
NTA3MDVjMzk3ZWY5OWM5NmM4NDk2ODc5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjgs
OCArMTI4LDggQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0
YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rv
cjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRh
bEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4
dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYp
OwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNC
aXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0
Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwor
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0
bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNo
YWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29u
c3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lk
IGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgQ09NUHRyPElEMkQxQml0bWFw
PiYmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1
N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4zYTY4ZGMzYWEwMTU1MzY4
NDY0ZjUxNzIzNWVjMGEzMTlmN2Q1N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRm
b3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBD
T01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhiZjg1YzA5OTM4ODI5MjQ4Zjgy
ZGRkOTFjOWRlMzNjMDc4My4uODhhNjVmN2JiZWMzZWExNGU1ZGU0NjY0YzQ4YzEwMDYxZWRiZTMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTI4MywxMCAr
MjgzLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsK
LSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEs
IERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3TmF0aXZl
SW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcwYjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1
M2NjLi5jMTk3YjQ4OWMyOTI2Y2E2NThkNzM1ZTdlMTMzZjkyMTgwZmZjNDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw3ICs3MSw5IEBAIHB1YmxpYzoKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmlu
ZGV4IDdkMjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3YjY0ZTgxYzVjOTQuLjY1NmNiMTRlNzI4
OGYyM2E4OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwog
ICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgYml0bWFwOwogICAgIEhSRVNVTFQg
aHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1hcCk7CiAgICAgaWYgKCFTVUNDRUVE
RUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmNyZWF0ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHImJiBiaXRtYXApCitJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXApCiAgICAg
OiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KFdURk1vdmUocGxh
dGZvcm1Db250ZXh0KSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmZsdXNoQ29udGV4
dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQ7
CiAgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFy
Z2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQpOwpAQCAtMTMzLDEwICsxMzMsMTAg
QEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAgIH0KIAotICAgIHJldHVybiBpbWFnZTsK
KyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9CiAKLXN0
YXRpYyBOYXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJp
dG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0
IEludFNpemUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElE
MkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogewogICAgIEZsb2F0U2l6
ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgOiBGbG9hdFNpemUo
KTsKIApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIAogUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFBsYXRmb3JtSW1h
Z2VQdHIgaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQotICAgICAgICBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGlt
YWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFn
ZSgpOwogCiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0
bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICByZXR1
cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQsIFdU
Rk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZl
UmVzb2x1dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICByZXR1cm4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQuZ2V0KCksIFdURk1vdmUo
aW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1
dGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpj
b21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CiAgICAgbG9hZERhdGFUb0JpdG1hcElm
TmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXggY2VmMzll
YTc5MjExZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2MS4uMWQ1NzRhZWVjZGI5ZDIyODAyMTRm
MWMwY2FmNWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEltYWdlPiBz
aW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3ZlcnJpZGU7CkBAIC01OSw3ICs1OSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4gbV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdlUHRyIG1fYml0bWFwOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
aW5kZXggNzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTkyMTMzZDU1M2NkM2E0Yi4uNmRhYmYyNDEz
ZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFw
KQogICAgIC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhpcy4KICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdl
OjpjcmVhdGUoV1RGTW92ZShjZ0ltYWdlKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MSw4ICs5
MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0g
ICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAg
ICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAgICAgYXV0byBpbWFn
ZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNp
emUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9j
dXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAg
ICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRo
KCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4
IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWViY2UzODA1YzAuLjJjZWM5OWRjNzI5ZmU2
NWUwODU0ZWVlNzJkZmM0ZWQ3YWYwOTUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDE3ICs5Mywx
NSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFt
ZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKLSAgICAgICAgaWYgKCFz
dXJmYWNlKQorICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPnNpemUoKSAhPSBzcmNT
aXplKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNy
Y1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2Uu
Z2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewotICAgICAg
ICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwotICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBj
b21wb3NpdGVPcCB9KTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1l
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHNpemVfdCBjdXJyZW50
RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOworICAg
ICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndp
ZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOworICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBk
cmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCAy
MWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1
YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250
ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQg
PSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRj
YWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwog
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRGlyZWN0MkRPcGVyYXRpb25z
LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5oIgotI2luY2x1ZGUgPGQyZDEuaD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0
b3J5KCkKLXsKLSAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBpbWFnaW5nRmFjdG9yeSA9
IG51bGxwdHI7Ci0gICAgaWYgKCFpbWFnaW5nRmFjdG9yeSkgewotICAgICAgICBIUkVTVUxUIGhy
ID0gQ29DcmVhdGVJbnN0YW5jZShDTFNJRF9XSUNJbWFnaW5nRmFjdG9yeSwgbnVsbHB0ciwgQ0xT
Q1RYX0lOUFJPQ19TRVJWRVIsIElJRF9QUFZfQVJHUygmaW1hZ2luZ0ZhY3RvcnkpKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlt
YWdpbmdGYWN0b3J5OwotfQotCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgVUlOVCB3aWR0aCA9IDA7Ci0gICAgVUlOVCBoZWlnaHQg
PSAwOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4g
aW1hZ2UtPkdldFBpeGVsU2l6ZSgpOwotfQotCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2Ut
PkdldFBpeGVsRm9ybWF0KCk7Ci0gICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBE
MkQxX0FMUEhBX01PREVfSUdOT1JFOwotfQotCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVs
U29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgaWYgKCFpbWFn
ZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJl
dHVybiBDb2xvcigpOwotCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBDb2xv
cigpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRl
eHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5
IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAg
IEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0K
LSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVk
IGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAg
ICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBpZiAoc3Vic2FtcGxl
ZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0
KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1w
bGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAg
ICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgp
LCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25z
LCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChp
bWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwot
I2VuZGlmCi19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJELmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZWE4NmJmZmFhZjgzN2M4NjBmYjRhZWQ0M2Q5MjZiNjFjZmFhMjY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJl
Y3QyRC5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1J
bWFnZS5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJEaXJlY3QyRE9wZXJhdGlv
bnMuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGll
cy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERp
cmVjdDJELmgiCisjaW5jbHVkZSA8ZDJkMS5oPgorI2luY2x1ZGUgPHdpbmNvZGVjLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogaW1hZ2luZ0Zh
Y3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5
ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdpbmdGYWN0b3J5KSB7CisgICAgICAgIEhSRVNVTFQg
aHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0ltYWdpbmdGYWN0b3J5LCBudWxscHRyLCBD
TFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdTKCZpbWFnaW5nRmFjdG9yeSkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
aW1hZ2luZ0ZhY3Rvcnk7Cit9CisKK0ludFNpemUgcGxhdGZvcm1JbWFnZVNpemUoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgVUlOVCB3aWR0aCA9IDA7CisgICAgVUlOVCBo
ZWlnaHQgPSAwOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBy
ZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6ZSgpOworfQorCitib29sIHBsYXRmb3JtSW1hZ2VIYXNB
bHBoYShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBpZiAoIWltYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1h
dCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOworICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBo
YU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKK30KKworQ29sb3IgcGxhdGZvcm1JbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sK
KyAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAx
KSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworCisg
ICAgcmV0dXJuIENvbG9yKCk7Cit9CisKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2Vz
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCmluZGV4IDg3Zjg0Y2E4NGM1NGY0MjQy
MmZiNDk3Yzc5NWYyNjM1MWQ2NmQ1YzAuLmVkZWQ3ZThkZDIzYWJiMzYwZThkYWI0NDM1ZjMxMjA5
MzhhNWVlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCkBA
IC02MywxMCArNjMsMTEgQEAgc3RhdGljIEdSZWZQdHI8R2RrQ3Vyc29yPiBjcmVhdGVDdXN0b21D
dXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3AKICAgICBJbnRQb2ludCBl
ZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAg
cmV0dXJuIGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX3RleHR1cmUodGV4dHVyZS5nZXQo
KSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpLCBmYWxsYmFja0N1
cnNvcigpLmdldCgpKSk7CiAjZWxzZQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZh
Y2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZh
Y2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
SW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNw
b3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9zdXJmYWNlKGdk
a19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHN1cmZhY2UuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3Qu
eCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSkpOwogI2VuZGlmIC8vIFVTRShHVEs0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA2YTFhNzNmOWQ3
ZmZlMTA4Zjc2ZTliNDNiM2E4ZmI5M2Y5ZTAzYTMyLi5hZWVjZmNmNTIyNzBjNTVkYmFlYmMxMGNl
MTJhZTNiOTFiODNiYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0lt
YWdlR3RrLmNwcApAQCAtODYsNyArODYsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1h
Z2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZnJhY3Rpb24pCiAKIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVu
dGF0aW9uKQogewotICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRm
b3JtSW1hZ2UoKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNo
ZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5j
cHAKaW5kZXggNzNiNTFlYjg1MzY5Y2FlOGY5NzgxNTEwNDFmZWExYzJkZjVhODgzMS4uNzRhNjBj
YjgzNzhlMjFiM2U0MzYyZDE4MjdlNzBiNTFmNWVmNTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29k
ZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICByZXR1cm4g
ZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWws
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
bXV0ZXgpOwogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9y
IHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJh
aWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA4OGM5MGI2ZThhMmQzNGM5MDIyMGRk
YTk2ZDRmY2Y3NTc2MzIwODhmLi4yODMyMjJlYzNiYjM4NTc0NzNhY2I5N2Q3ZTUxMDRmNzJlZDRi
YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJs
aWM6CiAKICAgICBTZWNvbmRzIGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgZmlu
YWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0K
ICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNr
aW5nU3RvcmVDYWlyby5jcHAKaW5kZXggYjgzNWE2OWNiYzQ1YjdiODkyZTBlN2JmYTE5ZmYwMTk5
NWJlY2I1MC4uNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VC
YWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJhY2tpbmdT
dG9yZTo6aW1hZ2UoKSBjb25zdAorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6
aW1hZ2UoKSBjb25zdAogewogICAgIG1fcGl4ZWxzLT5yZWYoKTsKICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVf
Zm9yX2RhdGEoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXgg
OTgxOTRkMTQzZTBkMmNmZDBiOTYxNDBlYmU3NmFmMDMxZmExODFjMi4uM2Y0ZTRkY2Y0MmMwZmE5
M2VmOWFiNjJkZDIyYTk3YzUxMzg3MDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcApAQCAtMjM5LDExICsyMzksMTEgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUoKQogCiAgICAgICAgICAgICByZXR1cm4gSW50U2l6ZShJT1N1
cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgpKSwgSU9TdXJmYWNlR2V0SGVpZ2h0KHN1cmZhY2Uu
Z2V0KCkpKTsKICAgICAgICAgfSwKLSAgICAgICAgW10oUmV0YWluUHRyPENHSW1hZ2VSZWY+IGlt
YWdlKSAtPiBJbnRTaXplIHsKKyAgICAgICAgW10oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkg
LT4gSW50U2l6ZSB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICAgICAgICAgIHJldHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChp
bWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAg
IHJldHVybiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgKTsKIApAQCAtMjYzLDExICsy
NjMsMTEgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogCiAg
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1w
bGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfSwKLSAgICAg
ICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gUmVm
UHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0
aXZlSW1hZ2U+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKICAgICAgICAgICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAg
IHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS5n
ZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9CiAgICAgKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggZmZjMTRiY2E2NWY2MThlMmNhYmU1ZThl
ZWIyZGVkNjQzNzQwZGVmNC4uMGI2YjI0NGE0ODQ5M2QyYTVlYzRkZWIyMzM4MjMzOGFhYWM2Nzhk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiAKIGNsYXNzIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKKyAgICB1c2luZyBEaXNwbGF5RnJh
bWVUeXBlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFpblB0cjxJT1N1
cmZhY2VSZWY+PjsKICAgICBjbGFzcyBDYXB0dXJlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgICAgICA6IHB1YmxpYyBMb2dnZXJIZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZU1hYy5tbQppbmRleCAzZjZjYjZlZDVkZmEzOGMyNmIzNWVkYzc3YzkxOTM5MzVl
NThkMjMwLi5iMDU5YTMyNTFkOGI5NjU3YmE5MDE0YzQ0ZjgwNjNhZjgyN2IxZDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC05MSw4ICs5MSwxMiBAQCB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIoKQogICAg
IGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikKICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVy
Rm9ybWF0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlm
IChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFn
ZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KTsKKwogICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgo
ZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKLSAgICBhdXRvIHNhbXBsZUJ1ZmZl
ciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlQnVmZmVy
LT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBz
YW1wbGVSb3RhdGlvbigpKTsKKyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHNhbXBsZVRp
bWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKaW5kZXggMWRiZWQzNjU0NTZlMjI4M2FkNGUwYWRhYTFiN2M3NWM5Mzc3YzJm
MS4uMzRlZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0xMzksOCArMTM5
LDEwIEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywg
SW1hZ2VPcmllbnRhdGlvbikKICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQs
IHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4dCwgcmVjdCk7CiAgICAg
aWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlKCkpIHsKLSAgICAgICAgQ0dDb250
ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwotICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlLmdldCgpKTsK
KyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9IHNyY0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkpIHsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NH
QmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29u
dGV4dCwgcmVjdCwgcGxhdGZvcm1JbWFnZS5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAgICAg
Q0dDb250ZXh0UmVsZWFzZShkcmF3Q29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDNhNWUwMGJlNjcxOGIxMTg2
Mjk4NjhiYWZiYWM3OTdjZTZmZTA3YjUuLjA0MTc2NmI3MmM1MjAzMjhiNzRjZTU5YzY5ODhhNGM2
YjQ0MjViYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNhaXJvV2luLmNwcApAQCAtMTYyLDggKzE2Miw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBjYWlyb19z
ZXRfc291cmNlX3JnYihjciwgMS4wLCAwLjAsIDEuMCk7CiAgICAgY2Fpcm9fZmlsbF9wcmVzZXJ2
ZShjcik7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1nLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmIChzdXJmYWNlKSB7CisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAo
bmF0aXZlSW1hZ2UgJiYgIW5hdGl2ZUltYWdlLT5pc051bGwoKSkgeworICAgICAgICBhdXRvJiBz
dXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gRHJhdyB0
aGUgaW1hZ2UuCiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZS5n
ZXQoKSwgMC4wLCAwLjApOwogICAgICAgICBjYWlyb19wYWludChjcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDkxYWQ5MGQwNTBkMzkzZWI2YWI1
NTZjNzdmZDEwZTM3NDM3M2ZhMi4uMTExYTRiMmMzNTVjMDdiOTQ5NTk2MjQ2ZGYyMjE3NjM5YWY0
YWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
MTg0MCw3ICsxODQwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3
QmFkZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICBDR1JlY3QgaW5z
ZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0g
YmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24p
OwogICAgIENHUmVjdCBiYWRnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9u
LCBiYWRnZURpbWVuc2lvbik7CiAKLSAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBDSUltYWdl
ICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFn
ZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogCiAgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRv
IGJlIHVzZWQgZm9yIHRoZSBjbGlwcGluZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0
aGUgZHJvcCBzaGFkb3cuCiAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVXaXRoUm91bmRlZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGlt
ZW5zaW9uIC8gMiwgYmFkZ2VEaW1lbnNpb24gLyAyLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA2NTljZGI1M2FjNTZhNjIwYjAzOTE4MzY3
YWZjMjVkMTYxNzVmYWVkLi5hODkyNDk2ZjliYzAwOGNlOTY0NGRlNjZlMmZjOGRjYzhlY2Q2YmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsy
MDksOSBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8g
UGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0
aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFn
ZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBv
aW50ZXIgdHlwZS4KLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikK
IHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyAr
MjI5LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkK
LU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJU
KHRhcmdldENvbnRleHQpOwogICAgIGlmICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNl
YmNiYTRmN2E4ODdiYWM1OWU4ZDI4Li4yODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUw
MDU0NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAg
KzYzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAog
I2lmIFVTRShDQUlSTykKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSog
aW50ZXJuYWxQYWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVm
YzMxZTQ3ZDAyMTUxZDY5MGM1Y2Q2NWY1ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0
ZTkzN2UyMDRiOWNiNzM3OGQyN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihj
b250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21l
bnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0
LCBvcHRpb25zKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29u
dGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKICAgICByZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0
Q29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCmluZGV4IGU2NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJi
MzRhNWMuLjAxYjJmMWJhZmE5NTA1M2M1OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8g
YmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRl
OgogICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRp
YWxGcmFnbWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDI4NWVkNWMzN2VmNzY4MTE0NDU4MDM1NWM5YWE0MjNhYjE4NWMxM2EuLjFmYjczM2Q1YzE1
ODkwMWY2MWEzNjYzOTFkZjNmOTAyM2E3Njk3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtMjE4LDcgKzIxOCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1Rhcmdl
dENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywK
LSAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5h
dGl2ZUltYWdlJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9p
bnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1h
Z2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmlu
ZGV4IGRiMDhjNDMxOGFlODU1YzhiYzU3ODE5MmRmODYxYTgxNWFiMGIyMzkuLmU1NzEzZTMwMWY2
MDI2YmNiNmRiNjIxZjRlZjRiN2UxMGY2NTE5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvY2cvV0tJbWFnZUNHLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS0ltYWdlUmVmIFdLSW1h
Z2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBv
cHRpb25zKQogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoV2ViQ29yZTo6RmxvYXRQb2lu
dCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChyZWN0
KTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VT
aXplLCByZWN0LCByZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdQbGF0Zm9ybUltYWdl
KGltYWdlUmVmLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJ
bWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAppbmRleCBkNjNlOTFjMjgxNjA3OTE1YmIwNGY5NDI2MjIzZjE3NmU5
NzA2NWQxLi4xNTcxM2Q1Y2U5MmQyOWMxNDkzNzc1YzIzZWIxY2RlZDY2YzdkYjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAs
MTEgKzExMDAsMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJ
bWFnZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2ZUltYWdlPiYg
aW1hZ2UpCiB7Ci0gICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwor
ICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIGJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisKICAg
ICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0
KQogICAgICAgICByZXR1cm47CkBAIC0xMTE3LDYzICsxMTE4LDMwIEBAIHN0YXRpYyB2b2lkIGVu
Y29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdl
UHRyJiBuYXRpdmVJbWFnZSkKK09wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29k
ZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE9w
dGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBkZWNvZGVyID4+IGRp
ZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4
dC5oYXNWYWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQudmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwog
ICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICBhdXRvIGltYWdlID0gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwog
ICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Cisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAgIGlmICghbmF0
aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1zdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBib29sIGhhc0ltYWdlID0gISFp
bWFnZTsKLSAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwotCi0gICAgaWYgKGhhc0ltYWdlKQotICAg
ICAgICBlbmNvZGVOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19Ci0KLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKERlY29kZXImIGRl
Y29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBpbWFnZSA9IG51bGxwdHI7Ci0K
LSAgICBib29sIGhhc0ltYWdlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0ltYWdlKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7
Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgZW5jb2RlT3B0
aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGRl
Y29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBtYWtl
UmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBhYmNh
MDI0MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0OTZiMDliOTJiOGUzLi40YTkzMjE1OTEzMGNiN2JjZGU1
NWUyMTFlMTdjNGJlZGVmMTcwNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5k
ZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZVB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBA
IC00MTksOSArNDE5LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwot
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mKTsKKyAgICBzdGF0aWMgT3B0aW9u
YWw8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXgg
OTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4uMzY1MzQ4MjBhZjVhMjI4
M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg1LDExICsxODUsOSBAQCB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNv
bnN0IHZvaWQqCiAKIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgp
CiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFn
ZSgpOwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsK
KyAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggYjM4
NzlhMDA0NGU2ODE5ZThiNWY5NmZjZGJkNzM0NWE5NTBjMjYyNC4uMGYzMGQ5NGE3MTQ5OTJmODE3
YWEzY2Y4NWJlMGMzMWJiOTUzZmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2NhbGVGYWN0b3IsIGNvbnN0IEkKICAgICBhdXRvJiBwbGF0Zm9ybUNvbnRleHQgPSAqY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMg
eyBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKCksIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfTsKLSAgICBEaXJlY3QyRDo6
ZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgbV9zaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZShwbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2Fs
ZWQsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
IH0KIAogQ09NUHRyPElEMkQxQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZURpcmVjdDJE
U3VyZmFjZShJRDNEMTFEZXZpY2UxKiBkaXJlY3RYRGV2aWNlLCBJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKaW5kZXggYmI4OTY1NDU4ODY3ZWIyYTBmYzRlYzg1N2YzNDc1YTRlODI1
YTM1Yy4uMzFjMzhmMzYxM2IzNmI1MWRlYzBmZWRhMWI3YmMxNzc3OWRmMGQ2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC01
NDMsNyArNTQzLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VV
UkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICB9KTsKIH0KIAotdm9p
ZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkws
IEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoTmF0aXZlSW1hZ2VQdHImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25E
YXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dE
YXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQ
bGF0Zm9ybUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdy
aXRlCiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNM
b2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVS
TCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29u
SUQudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25V
UkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRy
LCB7IH0pKTsKKyAgICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwg
c3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwg
eyB9KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9v
bCBjYW5Xcml0ZVRvRGF0YWJhc2UgPSBtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFi
YXNlV3JpdGU6OlllcyAmJiBhbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRl
OjpZZXM7CkBAIC01ODcsMTQgKzU4NywxNCBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2
ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkp
OworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJM
LCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRy
LCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAgICAgICAgaWYgKCFpY29uRGF0YS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0
ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVB
dmFpbGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
cik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIGljb24g
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwpAQCAtNjIyLDEzICs2MjIsMTMgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwogICAg
ICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xv
Y2spOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29u
VVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0
ciwgeyB9KSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0
KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+
KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgaWYgKGljb25EYXRhU2l6ZSkgewogICAgICAg
ICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGljb25EYXRhLCBp
Y29uRGF0YVNpemUpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggOTYxMmY5OWMyY2ZiN2M1
MTM2NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uZTIyNTJhMDAwMGQyYmJlNWI2ZjY5Y2QyMjcxZDAw
YTEyNWM1Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7Ci0gICAgdm9pZCBsb2Fk
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiYpPiYmKTsKKyAgICB2b2lk
IGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYmKT4mJik7CiAg
ICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFy
Kiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9w
YWdlVVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jazsK
LSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyLCBN
b25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpw
YWlyPFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZElj
b25zOwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xvY2s7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBhZGZmYTYyZTQ3N2I3ODM5MzYzYzI1ZTk4MDI5
Li44ZWYxY2U0MTI3MzZhOGVlZDNjNmFhMTZjMDMyYjMzYWRiOWJmNGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
bW0KQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VG
b3JJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBp
ZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
OworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5n
ZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGljIGJv
b2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBE
cmFnU291cmNlU3RhdGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGUxYjM5ZjU0MmRkMzk4
MDZiZmViOTUzZmRkNjQyNTY1Yzk0YTkxYTguLjc4MzRlZWYyNDBhMGY1ZGEwMTA2NDdjOWI4NWQ4
MzM3OGZkYmVhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzU0Niw3ICs3NTQ2LDcgQEAgc3RhdGlj
IE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BT
ZXNzaW9uKGlkIDxVSURyb3AKICAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFn
ZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1
bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOl9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7
CiAgICAgX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcg
YWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdl
dCgpXSk7CiAgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNv
bnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKIApA
QCAtNzc2OSwxMSArNzc2OSwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VG
b3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwot
ICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2Uu
Z2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3IGlu
IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS4KQEAgLTgwMzQsNyArODAzNCw3IEBAIHN0YXRpYyBW
ZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2Vy
dFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkg
c2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVu
dEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6
cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5T
KFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFn
ZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0
YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNd
OwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07
CkBAIC0xMDA4NSw3ICsxMDA4NSwxMiBAQCBzdGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2FjeVBy
ZXZpZXdPckRlZmF1bHRBY3Rpb25zKFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewogICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1h
Z2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKworICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChO
U0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVBy
ZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlNzZjMDYzOGM3ZGEyYTA0ZjFlMDg5
YmM0ZDQ5MGYyMjRiODdkMjE2Li5jM2JlZWY1ZDE0MGI3MjQzOGRjNzUwNTYwM2FlOWE0Y2RlMmEx
MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCkBAIC05NiwxNCArOTYsMTQgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1h
Z2VDb3B5KCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1ha2VD
R0ltYWdlQ29weSgpKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICByZXR1cm4gbnVsbHB0cjsK
ICNlbGlmIFVTRShDQUlSTykKLSAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVDYWly
b1N1cmZhY2UoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEz
M2JiOTU1Ny4uOWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0g
V2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkg
PSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24g
PSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4
NjdlZDU4My4uNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZi
MDA4YTEzNWIyMTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBm
aW5hbDsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBH
Q0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsK
LSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVj
ZDY1MTg3Y2Q0MjgzODEuLjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZy
YW1lKiB3ZWJGcmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBz
dGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAg
ICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENH
SW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKTsKICAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgp
OwogCiAgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGlt
YWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2
NzRiZjE0YWMwMTIwYzM1ZmRmM2FkZjYuLjdhYTAwNGE2MTY5ZWI0MDIwNGRiMjI0ZDZlZGMyMjZm
MjcyNzQ4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM2LDcgKzUzNiw3
IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAKICAgICBp
ZiAodGV4dEluZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGlj
YXRvci0+Y29udGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAg
ICBpZiAoISpjZ0ltYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQppbmRleCBkODE3Njk5Njc1ZWNmYmI5YzIzNjc5MzVjMjJjNTdjNzhhNGEzNGYxLi5mZDA5NmRk
Zjk1MGNiZmU4MTYzYjEzNjc1YWNkZGUzMTdiOWYzMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTE3MSwxMCArMTcxLDE2IEBAIGNsYXNzIERlZmF1bHRT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIgewogICAgIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgaWYgKCFpczxXZWJD
b3JlOjpDYWNoZWRJbWFnZT4oY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxXZWJD
b3JlOjpDYWNoZWRJbWFnZT4oKmNhY2hlZFJlc291cmNlKTsKKworICAgIGF1dG8mIGNhY2hlZElt
YWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAg
ICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAg
ICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+bmF0aXZlSW1h
Z2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogfQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCA0YWE3YmQ0OGNjMTVjNTM1MDQ2Y2Q5NjlmMDQ1YjJhOWYxZjc4
YzkzLi5kMTA0M2Y5NTZjNDEyNWRiYWNmNjI0ZGQyNGJiYmQ2M2Q2ZGJjOWUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NDYsMTQgKzg0NiwxNCBA
QCBwcml2YXRlOgogICAgIF90ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gY3Jl
YXRlTlNBcnJheShpbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0
ZXMpLmxlYWtSZWYoKTsKICAgICBfY29udGVudEltYWdlU2NhbGVGYWN0b3IgPSBpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhIaWdobGlnaHQpCi0gICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9y
RGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgp
IHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07
CisgICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2Nh
bGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKICAg
ICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2Ug
PSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBv
cmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgIF9jb250ZW50SW1hZ2Ug
PSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKIAogICAg
IGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IGluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNl
bGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7
Ci0gICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9j
VUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxl
OnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9j
b250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2Fs
ZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAgICAgICAgICAgICBf
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBp
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413521</attachid>
            <date>2020-11-06 23:40:20 -0800</date>
            <delta_ts>2020-11-09 01:15:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201106234019.patch</filename>
            <type>text/plain</type>
            <size>253944</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlZWE3YTk4OWUxNmZk
ZjMxMDczYjA1MWJmYWFkMzQ2NThhZjlmOC4uZDllNmI3NzJjYjMxNWMyZTFmZGUzMzEzMDNjNDAy
ZmQ3YzkyMjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAyMC0xMS0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAg
ICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRl
eHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0
Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpu
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRp
dmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WaWRl
b0xheWVyTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
VmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50
Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0xheWVy
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93SW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3Jt
SW1hZ2VTdWJpbWFnZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46
OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZUhhc0Fs
cGhhKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6aW1hZ2VGb3JTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRHZGtQaXhidWYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29u
OjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xp
cFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjppbWFnaW5nRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUltYWdlSGFzQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhclBsYXRmb3JtSW1hZ2VTdWJpbWFnZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIw
MjAtMTEtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBmb3IgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9NYWMvYWNjZXNza2V5Lmh0bWwg
aW4gaXNvbGF0ZWQgdHJlZSBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWE0YzM3ZGViNDUyOTA4ZDUxOWFi
NTA4YmMwMGRhYWQ3ZmQyNjQ2Li45MGIyMzJmNzIwMzI5ZTU3YmQ2MmI5MWE2MDA5OWJlZGRmMmQw
ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTExLTA2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0
aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQg
TmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjplbmNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5j
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNo
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZv
clBhZ2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6OnVpSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2
ZXJEZWxheWVkRHJvcFByZXZpZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvcklt
YWdlKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1h
Z2VQbGFjZWhvbGRlcnM6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJl
c2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppc0FsbW9zdFNvbGlkQ29sb3IpOgorCiAyMDIwLTExLTA2ICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBbaU9TXSBX
ZWJBdXRobiBwcm9jZXNzIGRvZXNuJ3Qgc3RhcnQgb24gaU9TIGRldmljZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCBlZDc0NDg4MDFmZDRlNWRiMTE2ODFkYzI2ZWU2ZDAxMzI3MDEw
MTkxLi42NzNhMWRhNmJjODJkNTQwMDU3OTBlZTdlNDJkYjljNTg2MzNmYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDYgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBET00vRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFw
c2hvdEltYWdlOmFuZFJlY3RzOl0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAg
ICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRl
eHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCiAyMDIwLTExLTA0ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUgaW50
ZXJuYWwgR1BVIHJlbmRlcmluZyBmbGFncyBmcm9tIFdlYlBhZ2UgdG8gV2ViUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggYTQzYzIwNTgxNjVlODQ1OTNmODk0YzZhY2JlNjg0MmUyYmNhNWYz
Ny4uZDdkNDUxMTdmZWUyMGRiMjM5MzVjN2M2YmJkOTg0YmVmMmFjZDc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAxNTJlNTdkNzdkNmIyMmFkM2Nk
ZDMwZGM0MmU2MTgwZjE3NGE4YTguLjdmY2I3MGYxMTJhOTJiNjQzMGRmM2QwN2U3YjY0NDk0YzBm
ZWQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtOTAsOSArOTAs
OSBAQCBpZiAoJHtVU0VfRElSRUNUMkR9KQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGlyZWN0MkQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRp
dmVJbWFnZURpcmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERp
cmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJE
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURpcmVjdDJE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFEaXJlY3Qy
RC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1RleHRBbmFseXplckhlbHBlci5j
cHAKIApAQCAtMTQ0LDEwICsxNDQsMTAgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRQb2ludENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRS
ZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLSAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDhkOTI0OTFhMDg1MzBlY2EyZTk2ZjRkYzFlNjJkMzI1YjE2
ZTQ3NWMuLmVkNmFjYjMxY2JhNWQ3MjkxYTVkMDhmODVhNDcxMzYwNzAwNDA3YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTUsMTAgKzI5NSwxMCBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbnRTaXplQ0cuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
Zjc0M2RkYTViNzkwZGVlZjVmYTU0ZWJhNWU1MThjMzBkYWNmN2U4Ni4uMDEwNDE5ZmQ0ZmQ1NGI5
NjEzMWQ1ZDJmNmQ1MWMxYmIxYmNkMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDEsNiArMTk0
MSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmFkMzNhOTU1MTky
ZDkwNzZlYjNkOGMxNjJjZmUzODYyMmRmYjE4Yy4uNjcyZGNlMzZjNzFiMWQ1ZDk5NzEzZTkxYjkz
MjQwM2M5M2YxYThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMzcsMTAgKzMzNywx
MCBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVV0aWxpdGllc0NHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFn
ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYzZlNDI1M2Y4NDZkZWRlN2Y5MGJi
NThjZDY1ZDYyOWQ3YmVjNzY1Li45YTM2Nzg4Zjk4MjU4ZWNjOWFjM2RiZDkyZDMyMThlYjMxNzE5
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTU4LDcgKzIxNTgsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURD
N0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3Rh
dGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEy
NTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2RDU2RTMyNTNB
RTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBQjIz
RTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTc0MjgsNyArNzQyOCw3IEBACiAJCTM3NkRDQ0UwMTNCNEY5NjYw
MDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzcyQjA5NTE2
NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzc3QTNBOEYx
NUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1JbWFnZUNHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4
IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvc2l0aW9uSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzkyOTE3ODE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NTEsNiArOTk1MSw3IEBACiAJCTcy
NEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxMzIyNDFCQ0UyMDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NjZGMDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NjEsNyArOTk2Miw3IEBACiAJCTcyNjZGMDI4MjI0MzEy
MDMwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdB
bmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYxNjEsMTEgKzI2MTYyLDExIEBACiAJCQkJQjI3NTM1MzQwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVDRy5jcHAgKi8sCiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFj
ZVBvb2wuY3BwICovLAogCQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmggKi8sCi0JCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cu
Y3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cuY3BwICovLAog
CQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIy
NzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlC
Mjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBQbGF0Zm9ybUltYWdlQ0cuY3BwICovLAogCQkJCTFG
QzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcCAqLywK
IAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5o
ICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENHLmNwcCAqLywKQEAgLTI2NDA1LDggKzI2NDA2LDggQEAKIAkJCQkwN0I5M0ZGOTIzQjkyQUFB
MDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTMxNEJFM0E0MUIzMTAzRkIwMDE0
MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTMxNEJFM0E1MUIz
MTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKKwkJCQk3MjUy
Mzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAotCQkJCTcyNkQ1NkUxMjUzQUUw
NDMwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMjY0MTUsNiArMjY0MTYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAv
KiBQYXR0ZXJuLmggKi8sCisJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQ
bGF0Zm9ybUxheWVyLmggKi8sCkBAIC0zMzQzMiw3ICszMzQzNCw2IEBACiAJCQkJQTgxODcyMjMw
OTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
ODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0
aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5
MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY1Nyw2
ICszMzY1OCw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1
MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE1ZGFiMWY0NjRhMWU3MzIxZjQ2NTgz
YmI5NmE4ZGQwYWVhMWYxMjYuLmJlOWIxOTU0NjQ1MWQyM2RhMzNiNTkyZmU4YjQ3ZWYzZGI2YWMy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzE1LDcg
KzMxNSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1l
bnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBIVE1M
VmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBs
YXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKaW5kZXggZWZmZjNmNjZlODEzYjc3ODY5ODBjYWJjYTM1MTBiMTIwZGI2MDQw
Mi4uM2QxOTRiMDc5MGI3NzA5MzUwZTRmODQ2YWQ5NWM5YjRiYTljZjNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAg
ICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJs
ZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDY2MzE2
ZmIwY2Q1M2E2ZjA3OTUzMjkyMGNmMDQyYzJlNjEzMDU1MDAuLjE4MGI5YjkxYzAwMzQ4NjUyMTcz
YzM0NzczNmQxZDFmYWYyOTI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjM1LDgg
KzE2MzUsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIGNoZWNrT3JpZ2luKCZ2aWRl
byk7CiAKICNpZiBVU0UoQ0cpCi0gICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7Ci0gICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIGlmIChhdXRvIGltYWdlID0gdmlkZW8ubmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBk
c3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0
KSkKICAgICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5kZXggMTdi
YTUxZmUwZTZjZTcxZDhjOWM1OGEwYjA3MzgyZjY2Y2VmYmUwOC4uNjFmODIzZmViMzAzZmVhZDM4
ZTEyNTRkZmJlMTA5YzYwZTNhZDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGJvb2wgaW5k
aWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24oY29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9y
KQogCiAgICAgRmxvYXRTaXplIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6ZSA9IF90ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2UoKS0+c2l6ZSgpOwogICAgIGNvbnRlbnRzSW1hZ2VMb2dpY2FsU2l6
ZS5zY2FsZSgxIC8gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKCkpOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50Q3Jv
c3NmYWRlKCpfdGV4dEluZGljYXRvcikpCiAgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dElu
ZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAg
IGVsc2UKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5ZnJhbWVBbmlt
YXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdAogc3RhdGlj
IFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0
aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9y
KQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVBbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRlbnRzIl07Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
b250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZToo
X19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlv
biBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0
aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nv
dXJjZXNDYWlyby50eHQKaW5kZXggNWYwMTQ5NGYzY2ExZTMxZDc0N2JmN2M3YWZiNzZhZDBjZDdm
NjcwYi4uY2Y5YTE5Njk5YjhhOTVjNzQxMjAxZmQxNmM3MWI5NWFjMGFlOGYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNSw4ICszNSw4IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIzYjVjZjg5NDc2NjA0YzQzZDlmNDg1Nzc2
MmU1NTMyNzgzZmRhMTcuLmExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogewogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zb3VyY2UoSW1hZ2VTb3VyY2U6
OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkpCiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGlu
Z1N0YXR1cyBkZWNvZGkKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2Rp
bmdTdGF0dXM7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxO
YXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGlmICghZnJhbWVIYXNGdWxsU2l6
ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpIHsKICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdM
ZXZlbCB3YXMgJWQsIHJlc2FtcGxpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lU3Vic2FtcGxp
bmdMZXZlbEF0SW5kZXgoaW5kZXgpKSk7CkBAIC0xNDIsMTcgKzE0MiwxNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBp
bmRleCwgU3Vic2FtcAogICAgIHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29u
dGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdl
dENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFt
ZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQobV9jdXJyZW50RnJhbWUsIFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIApAQCAtMTcxLDE4ICsxNzEsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWMKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBj
b3JyZWN0ZWRTaXplRmxvYXQpOwogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0KEZsb2F0UG9pbnQo
KSwgc291cmNlU2l6ZSk7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0p
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIHNvdXJjZVNp
emUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0pOwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAj
aWYgVVNFKENHKQotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXpl
KGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkK
IHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChpLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRD
b250ZXh0KTsKLSAgICAgICAgaWYgKGltYWdlICYmIG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgPT0g
c2l6ZSkKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc2l6ZSkKICAgICAg
ICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKQEAgLTE5MCwxNCArMTkwLDE0IEBAIE5hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBHcmFwaGljCiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAot
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkK
K1ZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2Vz
KCkKIHsKLSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGltYWdlczsKKyAgICBWZWN0b3I8UmVm
PE5hdGl2ZUltYWdlPj4gaW1hZ2VzOwogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAo
YXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChpKSkKLSAgICAgICAg
ICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChtYWtl
UmVmKCppbWFnZSkpOwogICAgIH0KIAogICAgIHJldHVybiBpbWFnZXM7CkBAIC0yMTEsMTAgKzIx
MSwxMCBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorc3RhdGlj
IGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1
cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJz
YW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBJbnRTaXplIHN1
YnNhbXBsZWRJbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKG9wdGlvbnMub3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gc3Vic2FtcGxlZEltYWdlU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCkBAIC0yNDYsNyArMjQ2
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsID0gbV9hbGxvd1N1YnNhbXBsaW5nID8gc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9y
KGNvbnRleHQsIHNjYWxlRmFjdG9yRm9yRHJhd2luZykgOiBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0OwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1
YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40Zild
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7
CiAgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQo
IW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwpAQCAtMzIyLDkgKzMyMiw5
IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlv
bnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmll
bnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJj
ZVNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29k
aW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCAzYjY4OTA2NzgzNTY5YjAxY2FiYTEyZmQ2MDFhZDU2MTk4NGIxN2I1Li45YzU5ZTdhZWRjMDJl
NmJhODc1NjhhMjVmZWFjZDYyY2U4YTlhNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTUzLDcgKzUzLDExIEBAIGNsYXNzIFRpbWVy
OwogCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0
Zm9ybUltYWdlKSksIG9ic2VydmVyKSk7CisgICAgfQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1h
Z2U+IGNyZWF0ZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpdG1hcEltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBvYnNlcnZlcikpOwogICAgIH0K
QEAgLTEzNSwyMyArMTM5LDIzIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OwotICAgIE5hdGl2ZUltYWdlUHRyIHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCByZXNwZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNw
ZWN0T3JpZW50YXRpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICNpZiBVU0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
LSAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8UmVmPE5h
dGl2ZUltYWdlPj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaW1h
Z2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KTsKICAgICB2b2lkIGRlY29kZShGdW5jdGlv
bjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdl
KE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgQml0bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYmLCBJbWFnZU9ic2VydmVy
KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3NvdXJjZS0+ZnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgpOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAg
Ly8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlz
IHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUg
YW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0xOTgsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gdGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4m
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVj
dG9yPFJlZjxOYXRpdmVJbWFnZT4+Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgY2xlYXJUaW1lcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDIyM2Q5ZGMxODNkMDNlM2Y0Y2MzNTFmNGRhNmY2Zjg5M2YwYWI1
ZWYuLjg1NDAyMTVmNjIzN2NjMGEzZDYyNWUzMmZhOTY3ZGY5YTYyZWMyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVy
LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX2JhY2tl
bmQgPyBtX2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpIDogMDsKICAgICB9CiAKLSAgICBO
YXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAgY29uc3RfY2Fz
dDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAg
ICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzMGI4ODQ5MTliMmM2MDQ1Zjc5
OTZjMTlhMTViYWY2MzliYzUyNjllLi4wMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRm
ODdiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MSw3ICs3
NDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBiMzVhYzY0ZmE4YjlmZmUwYzk0NDg1ZTk3
M2YyNGMyYWEwZjM0OTAuLmM1ZDA1N2NkYWQ0YjY1ZTg0N2U5ZTZmZmQwOWY2N2VmZDU3ZjYyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNzksNyArMzc5LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKQEAgLTY1MCw4ICs2NTEsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgcGxhdGZvcm1EcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7Ci0KICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNB
bmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5n
LCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lk
dGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCmluZGV4
IGJiOWIwYzlmYjFlNjM5ZDk5Zjk4MzdmZTA2ZGYwYWM3MDI5NmM5NzIuLmY0YjUyYWM1YTM3ZTZj
NmFkOTRkYzZhN2JjYTY3NjViZTYwOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0FJUk8pCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2NnSW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2RlY29kZWRJbWFnZTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1h
bGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA2ZTIyMmMwMmYyZDlhZTM2
NDA2MWI3M2Q5YzM3Yjc3YjI5YjAzYjQ2Li45ZDQ0MGQwNTNiMDc4MGQ4ZDQyNWI2NmViOTUxMGQ2
MWRjOGVjZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGI1OTYwYWQ1ZmY3YzRkYTU2ZGY0
ZjVhNGE3OWFkZDk4ODQxMzZkN2QuLmJiMzljNmM4OGUxNDBiNDdmNDIyMDEwNzM2ZjFlNTZjNzll
NDNkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFn
ZS5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNJbWFnZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlMWSktZ3Vh
cmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSWNvbihjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mKTsKKyAgICBJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFD
KQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggNGI5YmVlZDg2NTdlZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2
YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1l
ZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1
NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJm
M2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFn
ZUJhY2tpbmdTdG9yZShvdGhlcikpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5
MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNiYzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1
NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JT
cAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5r
SW50b05hdGl2ZUltYWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAppbmRleCA5MjA0YWQxMGE4MTA2ODA2ZGU5MjZmMmVlZmZjMTYzNGM3
NzAwZTZlLi41Mzg0NmM1OWNiNWVjNDAwN2Q1NDQwYTQxNTYxN2Y4ZjE4NzgwZjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAg
ICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VC
dWZmZXI+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUlt
YWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJl
c29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3
Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFn
ZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2
ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3
YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdjMDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmUKICAgICByZXR1cm4gYmFja2VuZFNpemU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNi
NTg3MjU2N2YwODgzYjViZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMuLmVkM2Y4YjViY2Y1OGU0Mjc4
NTY3ZDE4NmZiNjVjODQwMTYyN2M4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlv
bnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcsMTMg
Kzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAgdmly
dHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0g
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lu
a0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDcxMDRkMDcxOTRmMzgxNTliMzNiZWE2
YWFlZDg4NWQ3MDliZDk4MTcuLmFhYTUxYmRkY2UwNGZkODVlOWVhNjFkMzgyY2MzYjExZWU2ZTIw
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJhbWVBbGxv
d1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOworICAgIHZpcnR1YWwgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUu
Y3BwCmluZGV4IDgzYjc4YjZlYzAwNmZjNTQ3NzQ1MmZmZDA4MTUyN2IyZGQ5MTYxODQuLmNjM2I2
MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHVu
c2lnbmVkIEltYWdlRnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgdW5zaWduZWQgZnJhbWVCeXRl
cyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKIAotICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
bV9uYXRpdmVJbWFnZSk7CisgICAgbV9uYXRpdmVJbWFnZS0+Y2xlYXJTdWJpbWFnZXMoKTsKICAg
ICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICBtX2RlY29kaW5nT3B0aW9ucyA9IERlY29k
aW5nT3B0aW9ucygpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgQ29sb3IgSW1hZ2VGcmFtZTo6c2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoIWhhc05hdGl2ZUltYWdlKCkgfHwg
bV9zaXplICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAg
cmV0dXJuIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fbmF0aXZlSW1hZ2UpOwor
ICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCmluZGV4
IDU0YTljOWRmMzNiNGQzM2IxMjc1ZjkxNDZmZjg4NDJlMzdjMDAwNzEuLmFhNzNhZTM2Mzg5ZWMy
ZmFjNDIxZWMzNWMzZTZjNjcxODExZTdiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgpID8gKHNp
emUoKS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSA6IDA7IH0KICAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNh
bXBsaW5nTGV2ZWw7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CiAKICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgRGVjb2RpbmdTdGF0dXMgbV9kZWNvZGluZ1N0YXR1cyB7IERlY29kaW5nU3RhdHVzOjpJbnZh
bGlkIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX25hdGl2
ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKICAgICBTdWJz
YW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmOGUy
MDI4YzNjM2IzZjYxNmM2YTEzNzhhOTRlZmRmYzRlNWIxOTQ5Li4xNDgwMjFjZWVlNDU1YWViYjMw
NWRmZjM1NjEzZWM0NzQzM2Y1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShCaXRtYXBJbWFnZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvCiB7CiB9CiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkp
CiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEltYWdl
U291cmNlOjpncm93RnJhbWVzKCkKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhuZXdTaXplKTsKIH0K
IAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpID09IDEp
OwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbMF07CkBAIC0yNDUsOCArMjQ1LDgg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSkKICAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7
CiAKICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRl
OwotICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2ZUltYWdl
KTsKLSAgICBmcmFtZS5tX2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFtZS5tX25h
dGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5tX25hdGl2ZUltYWdlLT5zaXpl
KCk7CisgICAgZnJhbWUubV9oYXNBbHBoYSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPmhhc0FscGhh
KCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0YXR1cyBk
ZWNvZGluZ1N0YXR1cykKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bgogCiAgICAgaWYgKGZyYW1lLm1fZGVjb2RpbmdPcHRpb25zLmhhc1NpemVGb3JEcmF3aW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKGZyYW1lLmhhc05hdGl2ZUltYWdlKCkpOwotICAgICAgICBmcmFt
ZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubmF0aXZlSW1hZ2UoKSk7CisgICAgICAg
IGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm5hdGl2ZUltYWdlKCktPnNpemUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZnJhbWUubV9zaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJ
bWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
ZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmIHBs
YXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0
dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgp
KTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKQEAgLTI5Myw3ICsy
OTMsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJ
bWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBNb3ZlIHRoZSBuZXcgaW1hZ2UgdG8gdGhlIGNhY2hlLgotICAgIGZyYW1lLm1fbmF0aXZlSW1h
Z2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKICAgICBmcmFtZS5tX2Rl
Y29kaW5nT3B0aW9ucyA9IGRlY29kaW5nT3B0aW9uczsKICAgICBjYWNoZU1ldGFkYXRhQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC0zMDEsNyAr
MzAxLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZl
SW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICBkZWNvZGVkU2l6ZUluY3JlYXNl
ZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCit2
b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1J
bWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywg
RGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29kZXJBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRp
dmVJbWFnZSwgc2l6CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAg
IC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lCi0gICAgY2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKKyAgICBjYWNoZVBs
YXRmb3JtSW1hZ2VBdEluZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKICAgICBMT0coSW1h
Z2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4g
Y2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaW5kZXgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBpbWFnZSB3aXRoIHRoZSByZWFk
aW5lc3Mgb2YgdGhlIG5ldyBmcmFtZSBOYXRpdmVJbWFnZS4KQEAgLTM2Miw4ICszNjIsOCBAQCB2
b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAg
ICAgc3RhcnRpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIC8v
IEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4KLSAgICAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vi
c2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7Ci0gICAgICAgICAg
ICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBwcm90
ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgs
IGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRp
b25zKTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUltYWdlKQogICAgICAgICAgICAgICAgIExP
RyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMg
YmVlbiBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNl
VVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1
cmw6ICVzIFtkZWNvZGluZyBmb3IgZnJhbWUgJWxkIGhhcyBmYWlsZWRdIiwgX19GVU5DVElPTl9f
LCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1
ZXN0LmluZGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0
QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcChtaW5EZWNvZGluZ0R1
cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1lKSk7CiAKICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3JlYXRpb24gdGhyZWFk
IHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50IHRocmVh
ZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHByb3RlY3Rl
ZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5p
c29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVS
ZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJj
ZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdURk1vdmUo
cGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUg
ZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgog
ICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09IHByb3Rl
Y3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHBy
b3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJv
dGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLnJl
bW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdC5p
bmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGlu
Z09wdGlvbnMsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ1N0YXR1cyk7CisgICAgICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhXVEZNb3Zl
KHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1w
bGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVj
b2RpbmdTdGF0dXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQg
d2lsbCBub3QgY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291
cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTQ1NCw5ICs0NTQsOSBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJjZTo6ZnJh
bWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogICAgICAgICBp
ZiAoZnJhbWUuaGFzRnVsbFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hyb25vdXMg
aW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLgotICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWxWYWx1ZSk7CisgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1fZGVjb2Rl
ci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7
CiAgICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25l
LgotICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKTsKKyAgICAgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZN
b3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTY5NywxOSArNjk3LDIxIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldFRhcmdldENv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogfQogI2VuZGlmCiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBpc0Rl
Y29kZXJBdmFpbGFibGUoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKKyAgICBpZiAoIWlzRGVjb2RlckF2YWls
YWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpm
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4PE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFn
ZSkpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZlSW1hZ2U+
PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVybiBmcmFt
ZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRh
dGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwgKCZJbWFn
ZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpk
dW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggZDk4ZWMwZTdmNmU1MmNlNTU4OWVkZDk5YjQyYzdhZDYzY2Vk
ZjAxZC4uYTZmNGFiMTNkZWVmZGEzNjUyYmI5MzNjYjJlMjYyYTVmY2I2MDMyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
aW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShSZWZQdHI8TmF0
aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KQEAgLTEyNSwx
MyArMTI1LDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRUYXJn
ZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogI2VuZGlmCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAKIHByaXZh
dGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFscGhhT3B0
aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICBJbWFnZVNvdXJjZShOYXRpdmVJbWFn
ZVB0ciYmKTsKKyAgICBJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4K
ICAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hl
ZFZhbHVlID0gbnVsbHB0cik7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAgICAgdm9pZCBlbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZWQoRW5jb2RlZERhdGFTdGF0dXMpOwogCi0gICAgdm9pZCBzZXRO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICB2b2lkIHNldE5hdGl2ZUltYWdlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZU1ldGFkYXRhQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHIm
Jiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNv
ZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CisgICAgdm9p
ZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0
SW5kZXhBc3luYyhQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgc3RydWN0IElt
YWdlRnJhbWVSZXF1ZXN0OwogICAgIHN0YXRpYyBjb25zdCBpbnQgQnVmZmVyU2l6ZSA9IDg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5k
ZXggN2FhYTFlZmIzYTVlMzUzNjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uNTk1NjdkMGMzOTkz
MmIwZTdiMTdmYjY1YzcyZTc2ZGZhN2YxOTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogY29uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uYTA1NzhhZTAz
ZTcwN2M4NTU2OTY0YTUzNmU5YWI2NGE1M2U4NWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MzAsNyArNDMwLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAot
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5n
IE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29y
a1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlhMzQzMTE0
MDM4YjBiOTEuLjdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRS
ZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xP
YmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBi
b29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMTNkY2FiMzVhYzhjNWE5ODFkZGQ5YTMyMDg4
ODg0ZmQ0YWEyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKK3sKKyAgICBpZiAoIXBs
YXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpKTsKK30KKworTmF0aXZl
SW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQorICAg
IDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCmluZGV4IDAzMzQ3NTk2MDdmOGYyMGRlMzEyNDg1OWE2ZjBmMDk0NTFlMThl
NWIuLjM3ZWI2NTI1ODQ4MGM2MDk0ODNkZWQ1MjdiYTMzZjkwNGM1YjUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMjcsMTYgKzI3
LDMwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb2xvcjsKLWNsYXNzIEludFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHIm
Jik7CiAKLVdFQkNPUkVfRVhQT1JUIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJik7Ci12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgeyByZXR1
cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZv
cm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQogCi19CisgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1JbWFnZVNpemUobV9wbGF0Zm9ybUlt
YWdlKTsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybUltYWdl
SGFzQWxwaGEobV9wbGF0Zm9ybUltYWdlKTsgfQorICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3Io
bV9wbGF0Zm9ybUltYWdlKTsgfQorCisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpIHsgY2xlYXJQ
bGF0Zm9ybUltYWdlU3ViaW1hZ2VzKG1fcGxhdGZvcm1JbWFnZSk7IH0KKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZTQ3ODVlMzJmNjk3MTYzMTVmMGI0MjI4MWY1NDg3OTdmNzZlYjdiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENv
bG9yOworY2xhc3MgSW50U2l6ZTsKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQ
dHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0UoRElSRUNUMkQpCit1c2luZyBQ
bGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsKKyNlbGlmIFVTRShDQUlSTykK
K3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PjsKKyNlbGlm
IFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRyPFNoYXJlZEJpdG1h
cD47CisjZW5kaWYKKworV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJik7Citib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJik7CitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdl
U3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIw
N2Y4NmYzOTMxNzhmNGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNl
Nzk3ZmQ4ZmIyZDZhYWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShOYXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1
bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhh
NWY1ODcwYTM1MzU3M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2
NjRhMjQxOTQ5M2U5NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkx
NmY5MGFiZDA3NTNhMTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQw
ZDM0ODRiMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTU2Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJl
dHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsK
ICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTlj
MWVhNi4uMjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJh
bWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoKTsKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZG
UHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRl
b1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBm
Mjk0ODgxNmVkZGU3OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4zYWJiYTkyZTUwOWEyMTQw
NDlkNTA0MTZkNjUyNDAxYzQ2MTg3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEx
MjcsNyArMTEyNyw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAg
ICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkg
OiBudWxscHRyKTsKIH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9G
dWxsc2NyZWVuTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRh
dGVTeW5jaHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyAr
MjI5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
TGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNv
bmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpOwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0
b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAt
MjMxNCw4ICsyMzE0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdl
LmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCks
IGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0
IGltYWdlUmVjdCh7IDAsIDAgfSwgbV9sYXN0SW1hZ2UtPnNpemUoKSk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKm1fbGFzdEltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0
LCBpbWFnZVJlY3QpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBjcmVhdGVkIGFuIEFWQXNzZXRJbWFn
ZUdlbmVyYXRvciBpbiB0aGUgcGFzdCBkdWUgdG8gbV92aWRlb091dHB1dCBub3QgaGF2aW5nIGFu
IGF2YWlsYWJsZQogICAgIC8vIHZpZGVvIGZyYW1lLCBkZXN0cm95IGl0IG5vdyB0aGF0IGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1
dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwog
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZTdi
ZjdhNzY3MzMwYTY3MjdmMDYzMjE2MTRkZTFiMGEzODA3ZjlhYi4uYTBhZjliODc0Y2FlODJhYmQz
ZjgwOTEwZjZiYTI5ZDllMzk0YjUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTIx
NSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICBib29sIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
OwogICAgIGJvb2wgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV9wZXJmb3JtVGFza09ic2VydmVyOwogICAgIFJl
dGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fbGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1fcmdiQ29uZm9y
bWVyOwogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVz
c2lvblNlc3Npb247CiAgICAgRGVxdWU8UmV0YWluUHRyPGlkPj4gbV9zaXplQ2hhbmdlT2JzZXJ2
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDkyNWJmNGUxZjkwYjU0YzQyODY2
YzI2NTgwNTljNjExYWNjMWJiMGUuLjhiYzQ4ZmEzZTMyNDUyNTY3NWQ5ZThjODhkZjlmM2FjMTc0
NDA4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU2NCwxMCArNTY0LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBsb2FkaW5nUHJvZ3Jlc3NlZDsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0
dXJuIG1fbGFzdEltYWdlOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKQEAgLTYwNyw3ICs2MDcsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkK
ICAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCi0gICAg
bV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjI2LDggKzYy
Niw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KHsgMCwgMCB9LCBpbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNv
bnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBA
IC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3Zp
ZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5
YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZhZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4
NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAg
IHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsK
KyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjZ0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVk
aWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEyYWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3
Y2I0Li45YTUzNmRiOTJiMmUwNDJkODc4MTRhOWVlYWFhOTNlZWM4Mzg5OGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyArNzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9G
dWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3Vy
cmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRS
ZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVm
PihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
LT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQ
YWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28K
ICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlh
U2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFn
ZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7CisgICAgRmxvYXRSZWN0IGltYWdlUmVjdCh7IDAs
IDAgfSwgaW1hZ2UtPnNpemUoKSk7CiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAg
ICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9
ICptX3ZpZGVvVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0g
dmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNm
b3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgq
aW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmluZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2Zi
M2NmODBiZjc1ODUuLmI2OWIxMDcwODk2N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02
MywxMCArNjMsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0
cikgZmluYWw7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFj
NmQxYTZlNjU2YjgwODg0NzcwNGQuLmYxMThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2Ey
YWY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5MYXllci5nZXQoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQ
dHIgY3VycmVudEltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJy
ZW50SW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxs
c2NyZWVuTGF5ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMo
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdl
ck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlkZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9J
bmxpbmVMYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggNTJkOWIxZTg3YzgwMzRkNmY3ODk2MDZjMzc3NjI1MmJmYzVkNGM1My4uY2Jk
ZjgyMWQ4NjUxZDUyNmU1YmQwOGZhMzIzZDA5ZGQxOWI2NzQxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJ
bWFnZSgpCiAgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUg
aW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYg
dGhlIGxheWVyIHNpemUgY2hhbmdlcz8KICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDg4NWY3OTlmNmYxMWQ0Zjk1NTFmNTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVk
MTI0ZDQ3OWU2ZGZmYWQ4YzM0NzNkYzk5ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogCiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3Mg
SW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CkBAIC02MDAsOCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9y
IG1fY29udGVudHNTb2xpZENvbG9yOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRp
bmdDb250ZW50c0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0lt
YWdlOwogICAgIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlv
bnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNm
b3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMz
N2YxY2FiOTZhN2ZiNzNmNWJmNDM5YmEuLjk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2Nm
ZDdhOWE1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAj
aW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJh
d2luZ1N0eWxlIHsKIAogc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBsYXllck9yaWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZs
b2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNv
bnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8v
IEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28g
d2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxh
eWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFk
b3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
IHsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0
ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hh
ZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQg
ZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJ
bWFnZUJ1ZmZlciYKIHsKICAgICBzYXZlKHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0
byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpKQotICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2Uu
Z2V0KCksIEZsb2F0UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkp
KTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZv
cm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qo
bGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291
cmNlIGZpbGxTb3VyY2U7CiAgICAgZmlsbFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhOwpAQCAtODYwLDcgKzg2MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291
CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5z
YXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggNTA1YzBhZjQ3ZDdhMGE1MGU5YzE5MDY2ZGQ5
M2RlNTk2MWQ2NjkxYS4uM2RkOTAxMzRkMTQ1YjNhNzA2ZWE1NTU0YWQyMDI4OTJhOTgxZTQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIGNsZWFyUmVjdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291
cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVk
X2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRl
eHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3Im
LCBGb250U21vb3RoaW5nTW9kZSk7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93
U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9p
ZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNv
bnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3Jp
ZW50YXRpb25TaXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1h
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhmMGM3
MDc2ODIwZDA2YTU1YmE1YzU1ODI0OGMzLi42ODc4MTA2M2I5MjIxMDlkMGYwZDU4ODY0ZDVjNjI4
NmUwODAxODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQgKzEy
MywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9y
bUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRl
LnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28gd2Ugc2hv
dWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yNjYsOCArMjY2LDggQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGUKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRl
eHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNjgxLDggKzY4MSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3Vy
ZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFn
ZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIENhaXJvOjpk
cmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHAKaW5kZXggZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJlOTBmMDU4
YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQxNWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGkKICAgICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwg
dHJ1ZSk7CiAgICAgICAgIGlmICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdl
MkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhh
IGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBp
eGVsLAogICAgICAgICAvLyB3aGljaCBpcyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBiZSBjaGFu
Z2VkIGluIHRoZSBmdXR1cmUgYW5kIG5lZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHkuCiAgICAg
ICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQgaW4g
d2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQcmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBmYTA5YjgxM2VhNDM1MTY2MGFl
YzU2MTMxMTNiMzNlYTg5NjYzMDI1Li5iNGU5MTE0ZTdmYzY3NTcyZmYzZmFiMjljZmY0NjU3Njlh
OGRhYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Mywy
MSArMjgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlCiB7CiAgICAgaWYgKGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7
CiAgICAgICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICAg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwor
ICAgICAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1
dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5h
bHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9y
bUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRl
c3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJm
YWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCkBAIC00MjMsNyArNDIzLDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNsaXBCb3VuZHMoKQogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNs
aXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCmluZGV4IDhhOTM3ZGEyMzlkNmQ2Y2RkMGEwNDhjY2NkODM2NzkxMDVkOTdjYWMuLjMx
YTBmNTQwMGVlODRlMDhiMGM1ZGQ0ZjhlNTJmMTk3MzUzNWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxl
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQ
YXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAppbmRleCBhYzRiMWY3OTA3Njg0Y2E2ZGI4NjI3MjEzOTk3ZDRiNTZhODIw
ZThmLi43ZGExNzBlNTk5MGJlMTg1OTBlOTFkNGQxY2FhN2QwZTMxMDNmODE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0CiAgICAgY29uc3QgYXV0byYgZGVzdGluYXRpb25Db250ZXh0U3RhdGUgPSBk
ZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBk
ZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRl
KGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpk
ZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBo
YSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmwKICAgICB9CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENv
bnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAg
ICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVm
NzZkZmM0YzhlZjdiODUuLjkzMTA4ZDA0ZWM5YjExYmYwZTU0MjU3NmZmM2Q3OTkzNGI4MDdiODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
NjQsNyArNjQsNyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5
dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fc3VyZmFjZS5nZXQoKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJl
aGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tp
bmdTdG9yZTogewpAQCAtNzcsMTggKzc3LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAg
ICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCks
IDAsIDApOwogICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJu
IGNvcHk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkp
OwogICAgIH0KIAogICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVy
biBtX3N1cmZhY2U7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1ha2VSZWZQ
dHIobV9zdXJmYWNlLmdldCgpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJm
YWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3I7CiAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9
PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudCht
X3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyAr
MTAwLDggQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpj
YWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0
byBzdXJmYWNlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAg
ICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGltYWdlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAy
MjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYwY2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
IHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5z
aWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjMGY4MWNiMzQxOTBjYjM3M2JkODQzNDE1OGI0ZDAz
MzAxYWIwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb09wZXJhdGlv
bnMuaCIKLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dENhaXJvLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17
Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRT
aXplKCk7Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuICFpbWFnZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250
ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotfQotCi1Db2xvciBuYXRp
dmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Ci17Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUo
MSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAg
ICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9j
YXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0
KCkpKTsKLSAgICByZXR1cm4gdW5wcmVtdWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFS
R0IgeyAqcGl4ZWwgfSkpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggY2U1Mjc4MDYwYTBkZjVjMTBmZDEyOGY5NmRm
ODkzYWY4NmEwMmNmMS4uNTYwZjc0N2E4ZmI2NDgxYmU0YTMwMTg1ODUwMGFhOWZhMTYwZjc4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
YXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
ICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGNhaXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRl
cm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBz
cGFjZSBhbmQgdXNlciBzcGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0
b0NhaXJvTWF0cml4KG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1h
Z2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1NWNlMmI2NWU2M2MzZjk1MWI4NWFhNDcwYmI0N2Vh
MDc3OGE0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5j
bHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6ZSBwbGF0Zm9ybUltYWdlU2l6ZShjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VT
aXplKGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKK30KKworYm9vbCBwbGF0Zm9ybUltYWdlSGFz
QWxwaGEoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgcmV0dXJuICFpbWFn
ZSB8fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05U
RU5UX0NPTE9SOworfQorCitDb2xvciBwbGF0Zm9ybUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9y
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworICAgIGlmICghaW1hZ2UgfHwgcGxh
dGZvcm1JbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBD
b2xvcigpOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAg
ICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gdW5wcmVt
dWx0aXBsaWVkKGFzU1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyAqcGl4ZWwgfSkpOworfQorCit2
b2lkIGNsZWFyUGxhdGZvcm1JbWFnZVN1YmltYWdlcyhjb25zdCBQbGF0Zm9ybUltYWdlUHRyJikK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGE3ZGJlNmU2YmU1ZjU2MjUyYzNjNzBiMTI4ODBlM2I2NDRi
YTRjOTkuLmZlOWFkMzc2NzMzMDc4NjU4NDBhM2ZjMDAzZDVhMDE2ZjA4NmZhOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVz
dG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1L
bm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ0NCwyMyArNDQ0LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLnByZVRyYW5zZm9ybWVkTmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1h
Z2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFn
ZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwogICAgIGlmICh0aWxl
UmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZTsK
KyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVj
b2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBz
aG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25s
eSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFn
ZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7
Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBn
YXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFn
ZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZp
Y2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lk
dGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0
KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0g
aW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVp
Z2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0
byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJl
cGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0
LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KQEAgLTUwOSw3ICs1MDksOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0
aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpOwotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIGltYWdlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKIAogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMg
dG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRHTENHLmNwcAppbmRleCBiYjkxZGVjOTEyMjRkNDE5N2VjYTgxYmJkYmM0ZTA1NjdlNDNj
MDRkLi42NjFhMDNjYzRhMGRhM2VkM2E5N2NjOThmM2VjNTM2NTFlM2EyOWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRHTENHLmNwcApAQCAtMzM4LDggKzMzOCw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBp
CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faW1h
Z2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIG1faW1hZ2VI
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgbV9p
bWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVp
Z2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdlV2lk
dGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ3LDcg
KzM0OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgLy8gc28sIHJlLXJlbmRlciBp
dCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAvLyBj
b2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3IgdGhl
CiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENH
SW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZS5nZXQoKSk7CiAgICAgQ0dD
b2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsK
ICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0OwpAQCAtMzYyLDIyICszNjMsMjYg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29u
dGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVy
cG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9j
Z0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgaW1h
Z2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFn
ZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KLSAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1h
Z2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgICAg
IG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVy
Q29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsK
LSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1h
Z2UuZ2V0KCkpOworICAgIGlmICghbV9jZ0ltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbWFnZSA9IG1fY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIHNpemVfdCBiaXRz
UGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UuZ2V0KCkpOwor
ICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKGltYWdlLmdl
dCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25lbnQg
IT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0
c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25l
bnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAgQ0dC
aXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2Uu
Z2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0gZmFsc2U7CiAgICAgLy8gVGhlc2Ug
Y291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBvbmUgbGFyZ2Ugc3dpdGNoCiAgICAg
Ly8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBzbyB0aGF0IHdlIGZhaWwgZmFzdCBp
ZiB3ZQpAQCAtNDE5LDcgKzQyNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAKICAgICBt
X2FscGhhT3AgPSBBbHBoYU9wOjpEb05vdGhpbmc7CiAgICAgQWxwaGFGb3JtYXQgYWxwaGFGb3Jt
YXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1f
Y2dJbWFnZS5nZXQoKSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2Uu
Z2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAg
ICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBtX2FscGhhT3AgPSBBbHBo
YU9wOjpEb1VubXVsdGlwbHk7CkBAIC00NjMsMTQgKzQ2OCwxNCBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaQogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3JtYXQ6Ok51bUZv
cm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdl
LmdldCgpKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlE
YXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3Bp
eGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERh
dGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIHNyY1VucGFja0FsaWdubWVudCA9IDA7Ci0gICAg
c2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZS5nZXQo
KSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdl
LmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4
ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRkaW5nKSB7CiAgICAgICAgIHNyY1Vu
cGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTI5LDggKzUzNCw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvCiAgICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93Qnl0
ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCi0gICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0LAorICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBj
YW52YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFj
ayB0byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKQEAgLTU0Myw3ICs1NDgs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25R
dWFsaXR5OjpEb05vdEludGVycG9sYXRlKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShj
Z0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCA1YjIw
ZDg5MmVkOGJiY2Y2MDE4MTZhNjM2NzZhMDBmMWZhNWMxN2IzLi44YzVhYmY3YzkzZTc5NzEzZjcx
M2E2ZGJkZTliYzAxN2YyMWY4OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC03NCwx
NyArNzQsMTcgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1h
Z2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb24KICAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJ
bWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29sdXRpb24g
cHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCi0gICAgICAgIGlt
YWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGJhY2tlbmRT
aXplKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGJhY2tlbmRTaXpl
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dp
Y2FsU2l6ZSkpOwogICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dp
Y2FsU2l6ZTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQo
KSkpKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMg
UmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFp
blB0cjxDR0ltYWdlUmVmPgogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2Nh
bGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxz
ZQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgc3JjUmVj
dFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5n
U3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTEzOCw3ICsxMzgsNyBAQCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aQogICAgIGF1dG8gdXRpID0gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUo
bWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkpOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7CiAgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBwcm90ZWN0ZWRQaXhlbEFycmF5OwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdl
dCgpLCBqcGVnVVRJKCkpKSB7CkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aQogCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJy
YXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAz
MiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CiAgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1
dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewotICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgaW1hZ2Ug
PSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUo
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBi
YWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpLCBzUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZmZlZjY2MzMwZDFmYmUyNmM0
YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uNmMwMzNjNjM4MzhhZmUxYTBmNjI3ZDZiNDRhMTU0NmYz
ZmVlZTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTA3LDE3
ICsxMDcsMTcgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICptX2NvbnRleHQ7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNl
IENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpKTsKIAogICAgIGNhc2UgRG9udENvcHlCYWNr
aW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoCisgICAgICAg
IHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAg
ICAgICAgIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIGJ5dGVzUGVyUm93KCksCiAgICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UobV9jb2xv
clNwYWNlKSwgRGVmYXVsdEJpdG1hcEluZm8sIG1fZGF0YVByb3ZpZGVyLmdldCgpLAotICAgICAg
ICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICAgICAg
MCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5
YmQ3ZjFiYWI0N2ZmN2M3OTc0MzQ4MzNjMjdhNTQ5NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2Rk
ZjA2M2M0YTg2NDhmZGZmYWNlN2NmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHAKaW5kZXggZGJjM2I3ZWI4YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAz
MC4uYTlkNTQ4NWEyNjFiNWEwZGY1M2QyYjg5NzEwYWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZv
cm1hdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNv
bnN0CiAgICAgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewotICAgIHJldHVy
biBtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVh
dGUobV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdl
KCkKIHsKLSAgICByZXR1cm4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJm
YWNlKSk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50
b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvCiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlv
blNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQot
ICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2Vu
ZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0
Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMy
MzA5NGVhNzk1YzVkMjQ4M2M4ODQ0MDMxMjRhOTA0MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIw
MWZmYzBmYjU3N2NmYjgyYmZlYzY5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQ
dHIgc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1h
Z2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4
OTBhMDcxODEwOTIzZjc1YmEwZTIyOTNjNDZiZWE4NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcy
OTdlOWIxMDI5NDM3MGExZTI3NTA2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcg
QEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkg
KiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1Bs
YXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKIHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VE
ZWNvZGVyICVwIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1
MTEzNTk1MWNkMWI1MzhiZGRmMWVjZTU0NTA2ZGRmNmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFm
OGU5YTE5MDU3MzEzZDU1MTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5h
bDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotCi0jaWYgVVNFKENH
KQotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJT
dWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGltYWdlID8gSW50
U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSkgOiBJbnRTaXplKCk7Ci19Ci0KLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBpbmZvID0g
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7Ci0gICAgcmV0dXJuIChpbmZvID49IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZp
cnN0KTsKLX0KLQotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIGlmICghaW1hZ2UgfHwgbmF0aXZlSW1hZ2VT
aXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQot
ICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICBhdXRvIGJpdG1hcENvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9m
KHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKLQotICAgIGlmICghYml0bWFwQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
Yml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdl
LmdldCgpKTsKLQotICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgIHJldHVybiBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjazsKLQotICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+
KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKLX0KLQotdm9pZCBjbGVhck5hdGl2
ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSNpZiBDQUNI
RV9TVUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLX0KLQotI2VuZGlmIC8v
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdhYjlmM2RiY2M1YWIxN2Q1ZTMxOTZkNGEu
LjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNjMsMTAg
KzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0dGVyblRyYW5zZm9ybS5z
Y2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAs
IC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1h
Z2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgp
KQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsK
KyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVz
ZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJu
cywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRY
ICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIo
dGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0
dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVh
dGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQg
YWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNp
bmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJl
aW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEg
PDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVm
IHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAg
Q0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFr
UmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwog
CiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIHBh
dHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxsYmFjayB9OwotICAgIHJldHVybiBDR1Bh
dHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhT
dGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRl
cm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFu
dFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDU5MDFjMGI0NWJkM2U4ODMwYjU0ZTRjOWI5MDQwMzIzY2NmZjM4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRm
b3JtSW1hZ2VDRy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVk
ZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKKyNpbmNs
dWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ludFNpemUgcGxhdGZvcm1JbWFnZVNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1h
Z2UpCit7CisgICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7Cit9CisK
K2Jvb2wgcGxhdGZvcm1JbWFnZUhhc0FscGhhKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
KQoreworICAgIENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1h
Z2UuZ2V0KCkpOworICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZExhc3QpICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7Cit9CisKK0NvbG9yIHBsYXRm
b3JtSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1h
Z2UpCit7CisgICAgaWYgKCFpbWFnZSB8fCBwbGF0Zm9ybUltYWdlU2l6ZShpbWFnZSkgIT0gSW50
U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICB1bnNpZ25lZCBjaGFy
IHBpeGVsWzRdOyAvLyBSR0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMyQmlnKSk7CisKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVy
biBDb2xvcigpOworCisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0
KCksIGtDR0JsZW5kTW9kZUNvcHkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBpbWFnZS5nZXQoKSk7CisKKyAgICBp
ZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CisK
KyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAv
IHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBp
eGVsWzNdLCBwaXhlbFszXSk7Cit9CisKK3ZvaWQgY2xlYXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2Vz
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQoreworI2lmIENBQ0hFX1NVQklNQUdFUwor
ICAgIGlmIChpbWFnZSkKKyAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFn
ZShpbWFnZS5nZXQoKSk7CisjZW5kaWYKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDAy
YWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdkOWRhMzQyZGQ3MDQuLjM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5QdHI8Q0lJ
bWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhp
YyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291cmNlSW1h
Z2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9TdXJmYWNlOmRvd25jYXN0
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2Uo
KV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1h
Z2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VX
aXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29sb3JNYXRyaXgmIGVmZmVj
dCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDFjOWI3YTE0MWQ0MmJlNmNiNWNhOTc2
ODg4MWE3MTVhZjgxYWQ1MjEuLmM3ZWRkNzU4ZDk4ZmUxOTI3YWM1MjM2NTRlMWRmNDY5MzhhMGYy
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ2Myw3ICs0NjMs
NyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK0Ry
YXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwg
bV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCA4MmIwY2UxOTdjMTJjZTg0ZDMxNzQxYTY5Y2RlMWE0MjJhMWQzZDU3Li4yZjc2ZWNh
ZjZmODM3N2ViNGJkY2E2MzE3OTJiZTczMDA3OWY0ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTEzNDYsNyArMTM0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQpAQCAtMTM2MCw3ICsxMzYwLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxE
cmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1faW1hZ2U7CiAgICAgRmxv
YXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAg
ICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgdm9pZCBEcmF3TmF0
aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gRHJhd05hdGl2ZUltYWdlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxOYXRpdmVJbWFnZVB0cj4gaW1h
Z2U7CisgICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gaW1hZ2U7CiAgICAgZGVjb2RlciA+
PiBpbWFnZTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGYxNDI5ZDgzYTkz
NWViZDUxYTY4OTU3NWUwNTg4N2ViMGI1MTM3OGQuLmJmM2NiMzQwMTQxZDNlZjdhMDE2ZTRlOWVl
YzU3Y2FlZWFkZGFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIGFwcGVu
ZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBw
ZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
Zjk1MWNmYWEyY2FjYzk2ZDRjMWExOGEyNWZhNTg5NjA3OTIyNDZkNC4uMzM1MzU5OTMyMjAwZGM0
ZDNiNTcyYTFkYjFkOTM2NTlmYTcyNDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcAppbmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4MDNhZGMyOGY0ZjI3MWVmZjU4OWI3
Li5jMGFhZTNhN2Q0OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2ZDdkNmU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIH0KIAotICAgIE5hdGl2
ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAg
ICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgfQogICAgIHZvaWQgZHJvcEltYWdlKCkgeyBtX2ltYWdlID0gbnVsbHB0cjsgfQog
CkBAIC0xNzksNyArMTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKICAgICByZXR1cm4g
KGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewog
ICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2ZTJlYTA3OTdiZDNjZmQzZTlkNDUw
MDg0OTY4ZThkMzMzOTU5YTdkLi41ODY5ZDhjODZhNDE5NGQzZTM4OGVjOTIwZTUyNTdlNzgyNjkx
YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgp
OyB9CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9CiAg
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggYzRjZTEyZGI3MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1ZTY3OTIxOC4uZjFmODdmYmUzZWE0
NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUsNyArMzIxNSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBvdXRw
dXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0
eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4ODY2
N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4wYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2
MDYyZTczNzkwOGFkMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBvdmVycmlkZTsKLSAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZpZGVvVHJhY2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGNk
NTBhMWU4NmMyMzEyNmZkYjg5MTRkYTNhMzk3MDFmZGRkNmE2NjEuLjcwMjg0ZGJlMjcyZTNlMjgy
NDgwNGE5YzdjZGEwNmI3YzRjYjYzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtNTYsMTcgKzU2LDIyIEBAIFJlZjxJbWFn
ZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIEdka1Bp
eGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgcmV0
dXJuIHN1cmZhY2UgPyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlLmdldCgpKSA6IDA7
CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
OworICAgICAgICByZXR1cm4gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZS5nZXQoKSk7
CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAjaWYgVVNFKEdUSzQpCiBHZGtUZXh0
dXJlKiBCaXRtYXBJbWFnZTo6Z2RrVGV4dHVyZSgpCiB7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFz
dXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisg
ICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBB
U1NFUlQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UuZ2V0KCkpID09IENB
SVJPX0ZPUk1BVF9BUkdCMzIpOwogICAgIGF1dG8gd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF93aWR0aChzdXJmYWNlLmdldCgpKTsKICAgICBhdXRvIGhlaWdodCA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggODEzNmMxZmZmNDViOWEzMTc3
YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYzI0Nzk1ZjUwOWEzMzZlZjBkN2IxNzFkMjY2NDQ2Y2Fh
ZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
SWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0
IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpA
QCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0
cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvcklt
YWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogewogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEljb246OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKICAg
ICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogCiAgICAgY29udGV4dC5z
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpIaWdoKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2NnSW1hZ2UuZ2V0KCksIHNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKG1fY2dJbWFnZSwg
c2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggNjkwOGYxMDc2MzJlODkwMThj
YTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4uY2FkOWJiMjc1M2UzNGVlMTk1YmFlNWI1NTg2NzUzYzEy
NjgwZjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbQpAQCAtNzQsNyArNzQsNyBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdl
KCk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYgbmF0aXZlSW1hZ2VzKQorUmV0YWlu
UHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0
b3I8UmVmPE5hdGl2ZUltYWdlPj4mIG5hdGl2ZUltYWdlcykKIHsKICAgICAvLyBJZiBuYXRpdmVJ
bWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vz
bid0IGhhdmUgdmFsaWQgZGF0YQogICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBjYWxsIHRvIENHSW1h
Z2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdpbGwgZmFpbCBhbmQgd2UnbGwgaGFuZGxlIGl0
IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4OSw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1h
cEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBuYXRpdmVJbWFn
ZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVz
dGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLmdldCgpLCAwKTsKKyAgICAgICAgQ0dJbWFnZURl
c3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVz
dGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBkYXRhOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFJl
dGFpblB0cjxOU0ltYWdlPiBCaXRtYXBJbWFnZTo6c25hcHNob3ROU0ltYWdlKCkKICAgICBpZiAo
IW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZGF0YSA9
IHRpZmZSZXByZXNlbnRhdGlvbih7IG5hdGl2ZUltYWdlIH0pOworICAgIGF1dG8gZGF0YSA9IHRp
ZmZSZXByZXNlbnRhdGlvbih7IG1ha2VSZWYoKm5hdGl2ZUltYWdlKSB9KTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcAppbmRleCBiMDA3OTlmZTdkMjIxNGM1NTBhODNhMzdhZjE4ODdhMjUwOWYyZTY0
Li45ZjExMjRmZWE3MDc2NmU2ZTFjNjRiZGI1YzdjNjNiMGFlOWE0NTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTEwOSwxMSArMTA5LDE0IEBAIHZvaWQgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAg
ICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdl
KFdURk1vdmUobV9pbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUg
PSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IW5hdGl2ZUltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdlLT5zaXplKCk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2VIYXNBbHBoYShuYXRp
dmVJbWFnZSkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6
Tm9GbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZl
SW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFw
VGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCi0gICAgICAgICAgICAgICAgICAgIGF1
dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIEludFJlY3QoSW50UG9p
bnQoKSwgc2l6ZSksIEludFBvaW50KCksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShz
dXJmYWNlKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA4YmM1ZDI3YmU2MzVlZmRkNWE3ZDFmNmM0NzNm
MjhkODhmMjk2NThhLi43YjI5OWE1ZjQ3MTk3ZTliMGIwNzIyYjYzNDgxNDViYjBhNjgzMWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcApAQCAtNTU0LDE0ICs1NTQsMTQgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb24KICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDog
UGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4s
IEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJv
OjpTaGFkb3dTdGF0ZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiBy
ZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRp
dmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwx
PigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CisgICAgICAgICAg
ICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFy
ZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJn
PDU+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBv
dmVycmlkZQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKIAogICAg
IFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250
ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+
KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1J
bWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtNTkyLDggKzU5Miw4IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAgICAgfTsKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5n
KTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUo
c3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIElu
dFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpAQCAt
MTA3Nyw4ICsxMDc3LDggQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFIKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENs
aXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLmdldCgpKSwg
ZGVzdFJlY3QpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9J
bWFnZUJ1ZmZlcj4obmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZs
b2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oCmluZGV4IDY5MWU3NDE4MDAzZTU3NThhNjA0NGYzYzk3OTFiMzEwOGFkMzdjMmYuLjY2
ZWFkZTg1ZGIxYjUxODEzZmFiM2I3NTY2M2ZkYWVjYWRmNjYyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFn
ZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggODI2ZDJkYTViZGVlYjY3OTVmZDA3ZjE1
MTQyNDE4MGM4YWI1ZDBjOS4uYTYxMTA5MmVjOTE0NzAwOTIyNjBkOGIwNGI3Y2EzNTFjNzZmNDZm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBjbwogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBO
YXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgYXV0byBmcmFtZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogICAgIGNvbnN0IGNoYXIqIGlt
YWdlRGF0YTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Ug
PSBmcmFtZUltYWdlLmdldCgpOworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1l
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICBpbWFnZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2Up
KTsKICAgICBieXRlc1BlckxpbmUgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3Vy
ZmFjZSk7CiAjZWxpZiBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcAppbmRleCAyYWJmNDM4MmQzMDBmNGUxZDMzMjE5MzFlYTk5ZGE0NDRmYTFl
MzhmLi40MDYzM2EwMTlkY2RkMzA3ZTIxMDhkNzU5NmY4ZGU2MGFjOTMwYWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUmVm
PEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9y
eSogZmFjdG9yeSwgR3JhcGhpY3MKIAogR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50
JiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2hhbmdlTWFzayhOb0NoYW5n
ZXMpCiAgICAgLCBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0
aCgwKQpAQCAtMjk0LDIyICsyOTMsMjIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsK
ICAgICAgICAgLy8gTWFrZSB0aGUgZGVjaXNpb24gYWJvdXQgd2hldGhlciB0aGUgaW1hZ2UgaGFz
IGNoYW5nZWQuCi0gICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0
IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBOYXRpdmVJbWFnZVB0ciBpcyBhIHZhbGlkIHdheSB0byB0
ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgorICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMg
dGhlIGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgUGxhdGZvcm1JbWFnZVB0
ciBpcyBhIHZhbGlkIHdheSB0byB0ZWxsIGlmIHRoZSBpbWFnZSBpcyBjaGFuZ2VkLgogICAgICAg
ICAvLyBUaGlzIGFzc3VtcHRpb24gaXMgdHJ1ZSBmb3IgdGhlIEdUSysgcG9ydC4KLSAgICAgICAg
TmF0aXZlSW1hZ2VQdHIgbmV3TmF0aXZlSW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZVB0cikKKyAgICAgICAg
YXV0byBuZXdOYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChuZXdOYXRpdmVJbWFnZVB0ciA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0
cikKKyAgICAgICAgaWYgKG5ld05hdGl2ZUltYWdlID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyID0gbmV3TmF0aXZlSW1hZ2VQdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
ID0gbmV3TmF0aXZlSW1hZ2U7CiAgICAgICAgIGlmICghbV9jb21wb3NpdGVkSW1hZ2UpCiAgICAg
ICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT5zZXRDb250ZW50c1RvSW1h
Z2UoaW1hZ2UpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+dXBkYXRlQ29udGVudHNTY2Fs
ZShwYWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbnVsbHB0cjsKKyAgICAgICAg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgICAgICBtX2NvbXBvc2l0ZWRJ
bWFnZSA9IG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IDNiM2E0ODMzMDE1YzVjNzljZDZlNmM5MzBlMmI1NzdmNDE0ZjQxNTQuLjU4
ZjRmMzY1ZDI1NzM0NzcyOTMyN2FmYmNhZDE4YzdjMTRjM2VlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTE1NSw3ICsxNTYs
NyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJMYXllciBtX2xheWVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fYmFja2Ryb3BMYXllcjsKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAg
ICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlOwogICAgIFJlZlB0cjxUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50IG1fY2hh
bmdlTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggZDUyYzVkYjA3NzYwZWY3Y2YxNWYwOWMyODM3OGZjZmQ0ZDgw
ZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEwMWFiMDk2Y2FiMzY2MjcwYzQ0ODFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTEzOCw3ICsxMzgsNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9wZW5k
aW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50KGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRhdGVQbGF0
Zm9ybUxheWVyKGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQotICAgICwgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKCp0aGlz
LCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkK
ICAgICAsIG1fcmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0
aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4NSwxMiArNTg0LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkK
IHsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0ciA9IGltYWdlID8gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBudWxscHRyOwotICAgIGlmIChtX2NvbXBvc2l0
ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9PSBuYXRpdmVJ
bWFnZVB0cikKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSA6IG51bGxwdHI7CisgICAgaWYgKG1fY29tcG9zaXRlZEltYWdl
ID09IGltYWdlICYmIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID09IG5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IGltYWdlOwotICAgIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbmF0aXZlSW1hZ2VQdHI7CisgICAgbV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZShpbWFnZSk7CiAgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwpAQCAtODQ5LDEx
ICs4NDgsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIG1fbmljb3NpYS5kZWx0YS5hbmltYXRlZEJh
Y2tpbmdTdG9yZUNsaWVudENoYW5nZWQgPSB0cnVlOwogCiAgICAgLy8gRGV0ZXJtaW5lIGltYWdl
IGJhY2tpbmcgcHJlc2VuY2UgYWNjb3JkaW5nIHRvIHRoZSBjb21wb3NpdGVkIGltYWdlIHNvdXJj
ZS4KLSAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpIHsKKyAgICBpZiAobV9jb21w
b3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZEltYWdlKTsK
ICAgICAgICAgYXV0byYgaW1hZ2UgPSAqbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgICAgIHVpbnRw
dHJfdCBpbWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZpbWFnZSk7Ci0gICAg
ICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyLmdldCgpKTsKKyAgICAgICAgdWludHB0cl90IG5h
dGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICAgICAgLy8gUmVzcGF3biB0
aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBpZiB0aGUgdW5kZXJseWluZyBpbWFnZSBjaGFuZ2VkLgog
ICAgICAgICBpZiAobV9uaWNvc2lhLmltYWdlQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGVlOGY1Nzg3OWFk
YTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNlMTNlNDEuLjlmMGUxNDk2YmRjYzVkMmRiNmE5ZTY2YjAy
NDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0g
bV9uZWVkc0Rpc3BsYXk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwot
ICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2U7CiAKICAgICBUaW1lciBtX2Fu
aW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAgICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5jcHAKaW5kZXggODgzNWY4OGQxYmJjZDIwM2MzMjU2MmRhMjQxNGNiYzI3YjZmYjBmOC4u
NTI1YTE2MzQxZWJkNWZlNjQxOWQ4MmQ4MGEwNDMwNGRiYTcyMmQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQog
CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9y
bUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBo
YSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFn
ZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIG5hdGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1h
Z2UpOwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gZGV2aWNlQml0bWFwOwpAQCAtODEzLDEwICs4
MTMsMTAgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBpbWFnZVNpemUgPSBiaXRtYXBTaXplKGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJh
d05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUp
OworICAgIGRyYXdQbGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdl
dCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwg
c2hhZG93U3RhdGUpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBn
bG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3UGxh
dGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJE
MUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCA3NGExMDM2NzA5ZjM4NTVjZThkNTRmNzVlY2MzNmYz
MWQ4NjMyYzVhLi41ZDE5NjA4MGNkZTQ1NTA3MDVjMzk3ZWY5OWM5NmM4NDk2ODc5NmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dDJET3BlcmF0aW9ucy5oCkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhz
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9r
ZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZv
bnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dM
WVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRv
d1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNv
bnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEJiwgQ09NUHRyPElEMkQxQml0bWFwPiYmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcAppbmRleCA1N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5
NzRlYzk5Li4zYTY4ZGMzYWEwMTU1MzY4NDY0ZjUxNzIzNWVjMGEzMTlmN2Q1N2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3Jl
KCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9y
bURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQx
Qml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXgg
YzUzZDhiZjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4My4uODhhNjVmN2JiZWMzZWEx
NGU1ZGU0NjY0YzQ4YzEwMDYxZWRiZTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5jcHAKQEAgLTI4MywxMCArMjgzLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QK
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBo
aWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9y
LCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3Jh
cGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwor
ICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcwYjc1YmFk
ZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi5jMTk3YjQ4OWMyOTI2Y2E2NThkNzM1ZTdlMTMz
ZjkyMTgwZmZjNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03
MSw3ICs3MSw5IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGls
ZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDdkMjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3
YjY0ZTgxYzVjOTQuLjY1NmNiMTRlNzI4OGYyM2E4OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgYml0bWFwOwogICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJp
dG1hcCk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC05MCw3
ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0
cik7CiB9CiAKLUltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQs
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQ
dHImJiBiaXRtYXApCitJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3Jt
SW1hZ2VQdHImJiBiaXRtYXApCiAgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxh
dGZvcm1Db250ZXh0KFdURk1vdmUocGxhdGZvcm1Db250ZXh0KSkKICAgICAsIG1fY29udGV4dChX
VEZNb3ZlKGNvbnRleHQpKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmZsdXNoQ29udGV4dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVu
ZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQ7CiAgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJn
ZXQpOwpAQCAtMTMzLDEwICsxMzMsMTAgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAg
IH0KIAotICAgIHJldHVybiBpbWFnZTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShX
VEZNb3ZlKGltYWdlKSk7CiB9CiAKLXN0YXRpYyBOYXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJ
RDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVy
VGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdl
U2l6ZShpbWFnZSkgOiBGbG9hdFNpemUoKTsKIApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGlj
IFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJE
MUJpdG1hcFJlbmRlclRhcmcKIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJl
c29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRy
IGltYWdlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlv
blNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgZWxzZQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwogCiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSBy
ZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpKTsKICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChiaXRtYXBUYXJnZXQsIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVz
b2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBA
QCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdl
KFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2Uo
KTsKICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRt
YXBUYXJnZXQuZ2V0KCksIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlv
blNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0
KiByZW5kZXJUYXJnZXQpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7
CiAgICAgbG9hZERhdGFUb0JpdG1hcElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmgKaW5kZXggY2VmMzllYTc5MjExZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2
MS4uMWQ1NzRhZWVjZGI5ZDIyODAyMTRmMWMwY2FmNWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBD
b3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikg
b3ZlcnJpZGU7CkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdl
UHRyIG1fYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggNzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTky
MTMzZDU1M2NkM2E0Yi4uNmRhYmYyNDEzZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNH
V2luLmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdl
OjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAgIC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBv
d25lcnNoaXAgb2YgdGhpcy4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFk
b3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7
CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShjZ0ltYWdlKSk7CiB9CiAK
IGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IElu
dFNpemUqIHNpemUpCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7
CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUlt
YWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgo
KSkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBz
aXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0
ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWVi
Y2UzODA1YzAuLjJjZWM5OWRjNzI5ZmU2NWUwODU0ZWVlNzJkZmM0ZWQ3YWYwOTUyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKQEAgLTkzLDE3ICs5MywxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewog
ICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKLSAgICAgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0
aXZlSW1hZ2UtPnNpemUoKSAhPSBzcmNTaXplKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS53aWR0aCgpKSkgewotICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3Vy
cmVudEZyYW1lOwotICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgp
LCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKLSAgICAgICAgICAgIG1fY3Vy
cmVudEZyYW1lID0gY3VycmVudEZyYW1lOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
CisgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKKyAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBpOworICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBv
c2l0ZU9wIH0pOworICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUg
d2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcAppbmRleCAyMWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5
NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNv
ZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXgg
NzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRjYWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdk
ZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRl
eChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0
IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVj
dDJELmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1
MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5j
bHVkZSAiRGlyZWN0MkRPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5j
bHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oIgotI2luY2x1ZGUgPGQyZDEuaD4KLSNpbmNs
dWRlIDx3aW5jb2RlYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBJV0lDSW1h
Z2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgSVdJQ0ltYWdpbmdG
YWN0b3J5KiBpbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7Ci0gICAgaWYgKCFpbWFnaW5nRmFjdG9y
eSkgewotICAgICAgICBIUkVTVUxUIGhyID0gQ29DcmVhdGVJbnN0YW5jZShDTFNJRF9XSUNJbWFn
aW5nRmFjdG9yeSwgbnVsbHB0ciwgQ0xTQ1RYX0lOUFJPQ19TRVJWRVIsIElJRF9QUFZfQVJHUygm
aW1hZ2luZ0ZhY3RvcnkpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGltYWdpbmdGYWN0b3J5OwotfQotCi1JbnRTaXplIG5hdGl2
ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgVUlOVCB3aWR0
aCA9IDA7Ci0gICAgVUlOVCBoZWlnaHQgPSAwOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICByZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6ZSgpOwotfQotCi1ib29s
IG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAg
IGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEQyRDFfUElYRUxfRk9S
TUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7Ci0gICAgcmV0dXJuIHBp
eGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhBX01PREVfSUdOT1JFOwotfQotCi1Db2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCi17Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IElu
dFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLQotICAgIHJldHVybiBDb2xvcigpOwotfQotCi12b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsK
LSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
Ci0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBz
bWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0
aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBh
ZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUp
LCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0
ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0
YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotI2lmIENB
Q0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNs
ZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1JbWFnZURp
cmVjdDJELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWE4NmJmZmFhZjgzN2M4NjBmYjRhZWQ0M2Q5MjZiNjFj
ZmFhMjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1BsYXRmb3JtSW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNp
bmNsdWRlICJEaXJlY3QyRE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCisjaW5jbHVkZSA8ZDJkMS5oPgorI2lu
Y2x1ZGUgPHdpbmNvZGVjLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIElXSUNJ
bWFnaW5nRmFjdG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQoreworICAgIHN0YXRpYyBJV0lDSW1hZ2lu
Z0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIWltYWdpbmdGYWN0
b3J5KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBDb0NyZWF0ZUluc3RhbmNlKENMU0lEX1dJQ0lt
YWdpbmdGYWN0b3J5LCBudWxscHRyLCBDTFNDVFhfSU5QUk9DX1NFUlZFUiwgSUlEX1BQVl9BUkdT
KCZpbWFnaW5nRmFjdG9yeSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7Cit9CisKK0ludFNpemUgcGxh
dGZvcm1JbWFnZVNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgVUlO
VCB3aWR0aCA9IDA7CisgICAgVUlOVCBoZWlnaHQgPSAwOworICAgIGlmICghaW1hZ2UpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6ZSgpOworfQor
Citib29sIHBsYXRmb3JtSW1hZ2VIYXNBbHBoYShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSkKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBEMkQx
X1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOworICAg
IHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsK
K30KKworQ29sb3IgcGxhdGZvcm1JbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgcmV0dXJuIENvbG9yKCk7Cit9CisKK3ZvaWQgY2xl
YXJQbGF0Zm9ybUltYWdlU3ViaW1hZ2VzKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAo
aW1hZ2UpCisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGltYWdlLmdldCgpKTsK
KyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q3Vyc29yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3Bw
CmluZGV4IDg3Zjg0Y2E4NGM1NGY0MjQyMmZiNDk3Yzc5NWYyNjM1MWQ2NmQ1YzAuLmVkZWQ3ZThk
ZDIzYWJiMzYwZThkYWI0NDM1ZjMxMjA5MzhhNWVlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DdXJzb3JHdGsuY3BwCkBAIC02MywxMCArNjMsMTEgQEAgc3RhdGljIEdSZWZQdHI8
R2RrQ3Vyc29yPiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgaG90U3AKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3Bv
dChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19m
cm9tX3RleHR1cmUodGV4dHVyZS5nZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2
ZUhvdFNwb3QueSgpLCBmYWxsYmFja0N1cnNvcigpLmdldCgpKSk7CiAjZWxzZQotICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVy
bWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1
cnNvcl9uZXdfZnJvbV9zdXJmYWNlKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIHN1cmZhY2Uu
Z2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSkpOwogI2Vu
ZGlmIC8vIFVTRShHVEs0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdl
R3RrLmNwcAppbmRleCA2YTFhNzNmOWQ3ZmZlMTA4Zjc2ZTliNDNiM2E4ZmI5M2Y5ZTAzYTMyLi5h
ZWVjZmNmNTIyNzBjNTVkYmFlYmMxMGNlMTJhZTNiOTFiODNiYWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtODYsNyArODYsNyBAQCBEcmFn
SW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwg
ZmxvYXQgZnJhY3Rpb24pCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uKQogewotICAgIHJldHVybiBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzNiNTFlYjg1MzY5Y2FlOGY5NzgxNTEw
NDFmZWExYzJkZjVhODgzMS4uNzRhNjBjYjgzNzhlMjFiM2U0MzYyZDE4MjdlNzBiNTFmNWVmNTBj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIFNl
Y29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBp
bmRleCkgY29uc3QKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdl
UHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAg
TG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwogICAgIC8vIFplcm8taGVpZ2h0IGltYWdl
cyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUgYW4gZW1wdHkg
aW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRl
eCA4OGM5MGI2ZThhMmQzNGM5MDIyMGRkYTk2ZDRmY2Y3NTc2MzIwODhmLi4yODMyMjJlYzNiYjM4
NTc0NzNhY2I5N2Q3ZTUxMDRmNzJlZDRiYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
QEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBTZWNvbmRzIGZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggYjgzNWE2OWNi
YzQ1YjdiODkyZTBlN2JmYTE5ZmYwMTk5NWJlY2I1MC4uNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5
YzU0YWZiZTJhMDBmNTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAorUGxhdGZvcm1JbWFn
ZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAogewogICAgIG1fcGl4ZWxzLT5y
ZWYoKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggOTgxOTRkMTQzZTBkMmNmZDBiOTYxNDBlYmU3NmFmMDMx
ZmExODFjMi4uM2Y0ZTRkY2Y0MmMwZmE5M2VmOWFiNjJkZDIyYTk3YzUxMzg3MDY2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMjM5LDExICsyMzksMTEg
QEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogCiAgICAgICAg
ICAgICByZXR1cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdldCgpKSwgSU9T
dXJmYWNlR2V0SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKICAgICAgICAgfSwKLSAgICAgICAgW10o
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBJbnRTaXplIHsKKyAgICAgICAgW10oUmVm
UHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gSW50U2l6ZSB7CiAgICAgICAgICAgICBpZiAoIWlt
YWdlKQogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgICAgIHJldHVybiBJ
bnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+c2l6ZSgpOwogICAgICAgICB9
CiAgICAgKTsKIApAQCAtMjYzLDExICsyNjMsMTEgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUNvY29hOjplbWl0RnJhbWUoKQogCiAgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFT
YW1wbGU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5j
cmVhdGVNZWRpYVNhbXBsZShpbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwogICAgICAg
ICB9CiAgICAgKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXgg
ZmZjMTRiY2E2NWY2MThlMmNhYmU1ZThlZWIyZGVkNjQzNzQwZGVmNC4uMGI2YjI0NGE0ODQ5M2Qy
YTVlYzRkZWIyMzM4MjMzOGFhYWM2NzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7
CiAKIGNsYXNzIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdU
Rjo6VmFyaWFudDxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
PjsKKyAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxOYXRp
dmVJbWFnZT4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKICAgICBjbGFzcyBDYXB0dXJlcgog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICA6IHB1YmxpYyBMb2dnZXJIZWxwZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAzZjZjYjZlZDVk
ZmEzOGMyNmIzNWVkYzc3YzkxOTM5MzVlNThkMjMwLi5iMDU5YTMyNTFkOGI5NjU3YmE5MDE0YzQ0
ZjgwNjNhZjgyN2IxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tCkBAIC05MSw4ICs5MSwxMiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1
cGRhdGVTYW1wbGVCdWZmZXIoKQogICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbikKICAg
ICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNy
ZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwogCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2VCdWZmZXIt
PmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKwogICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygp
KTsKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZU1lZGlhU2FtcGxlKGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5nZXQo
KSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsKKyAgICBhdXRvIHNhbXBs
ZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHBsYXRm
b3JtSW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CiAg
ICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMWRiZWQzNjU0NTZlMjI4
M2FkNGUwYWRhYTFiN2M3NWM5Mzc3YzJmMS4uMzRlZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2
MDk2YmM2NWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCkBAIC0xMzksOCArMTM5LDEwIEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBDR0NvbnRleHRT
ZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChk
cmF3Q29udGV4dCwgcmVjdCk7CiAgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2ZUlt
YWdlKCkpIHsKLSAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dC
bGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQs
IHJlY3QsIHNyY0ltYWdlLmdldCgpKTsKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9
IHNyY0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkpIHsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEJs
ZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgcGxhdGZvcm1JbWFnZS5nZXQoKSk7
CisgICAgICAgIH0KICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29udGV4dCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3Bw
CmluZGV4IDNhNWUwMGJlNjcxOGIxMTg2Mjk4NjhiYWZiYWM3OTdjZTZmZTA3YjUuLjMzMGYwNGY1
MmRhMjdmYjE2OThmMmYyMGIyNmM0MGU5NDQ1YjIyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApAQCAtMTYyLDggKzE2Miw4IEBA
IERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VP
cmllbnRhdGlvbikKICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMS4wLCAwLjAsIDEuMCk7
CiAgICAgY2Fpcm9fZmlsbF9wcmVzZXJ2ZShjcik7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
IChzdXJmYWNlKSB7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpIHsKKyAgICAgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIERyYXcgdGhlIGltYWdlLgogICAgICAgICBj
YWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UuZ2V0KCksIDAuMCwgMC4wKTsKICAg
ICAgICAgY2Fpcm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCmluZGV4IDQ5MWFkOTBkMDUwZDM5M2ViNmFiNTU2Yzc3ZmQxMGUzNzQzNzNmYTIu
LjExMWE0YjJjMzU1YzA3Yjk0OTU5NjI0NmRmMjIxNzYzOWFmNGFiN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZv
aWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgUGFpbnRJbmZvJiBwYWluCiAgICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0
TWFrZShyZWN0LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9m
ZnNldCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKICAgICBDR1JlY3QgYmFkZ2VS
ZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwog
Ci0gICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1h
Z2UubmF0aXZlSW1hZ2UoKS5nZXQoKV07CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUlt
YWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpXTsKIAogICAgIC8vIENyZWF0ZSBhIGNpcmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xp
cHBpbmcgcGF0aCBpbiB0aGUgYmFkZ2UsIGFzIHdlbGwgYXMgdGhlIGRyb3Agc2hhZG93LgogICAg
IFJldGFpblB0cjxDR1BhdGhSZWY+IGNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJv
dW5kZWRSZWN0KGFic29sdXRlQmFkZ2VSZWN0LCBiYWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGlt
ZW5zaW9uIC8gMiwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggNjU5Y2RiNTNhYzU2YTYyMGIwMzkxODM2N2FmYzI1ZDE2MTc1ZmFlZC4uYTg5
MjQ5NmY5YmMwMDhjZTk2NDRkZTY2ZTJmYzhkY2M4ZWNkNmJiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDksOSArMjA5LDkgQEAgSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXQKIH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2Yg
dGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCisv
LyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBO
YXRpdmVJbWFnZSBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1OYXRpdmVJ
bWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KikKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIE5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqKQogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCi1OYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQor
UmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIEFTU0VSVCh0YXJnZXRDb250ZXh0KTsKICAg
ICBpZiAoIW1fcGFnZSB8fCAhdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmgKaW5kZXggZDdhYThkZDEzMWFmZTM4ZjVjZWJjYmE0ZjdhODg3YmFjNTllOGQy
OC4uMjgyNWY5ZDM4OThkOGYyNGI3NDE3ODA0NWU4YmRhOThlMDA1NDQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTYzLDEwICs2MywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzY2hlZHVsZVN0YXJ0QW5pbWF0aW9uKCk7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3ND
b250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZp
bmFsOwogI2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxs
cHRyKSBmaW5hbDsKICNlbmRpZgogICAgIAogICAgIFBhZ2UqIGludGVybmFsUGFnZSgpIHsgcmV0
dXJuIG1fcGFnZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggZWFlZmMzMWU0N2QwMjE1MWQ2OTBjNWNk
NjVmNWU4MzFiMzFhZjM2NS4uMDAyOGQ3NmRmNTkzZTMxOTRiNGU5MzdlMjA0YjljYjczNzhkMjdl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAg
ICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJT
aXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZl
SW1hZ2U+IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1faW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdldENvbnRleHQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRl
eCBlNjQ0ZjdhY2YzMGVjMjI0ZGY4NTE1ZDg3ZjcyYzJhZTFiYjM0YTVjLi4wMWIyZjFiYWZhOTUw
NTNjNTkyMjU3MzcwZjJiOGYyZjU3OTRhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZl
LgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNv
bnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwg
ZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyODVlZDVjMzdlZjc2ODEx
NDQ1ODAzNTVjOWFhNDIzYWIxODVjMTNhLi4xZmI3MzNkNWMxNTg5MDFmNjFhMzY2MzkxZGYzZjkw
MjNhNzY5NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTIxOCw3ICsyMTgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0cicsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZScsCiAgICAgICAg
ICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4
YmM1NzgxOTJkZjg2MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0Yjdl
MTBmNjUxOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0lt
YWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2Uo
Q0dJbWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXpl
LCByZWN0LCByZWN0KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggZDYzZTkxYzI4MTYwNzkxNWJiMDRmOTQyNjIyM2YxNzZlOTcwNjVkMS4uMTU3MTNkNWNlOTJk
MjljMTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDExICsxMTAwLDEyIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFn
ZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIGltYWdlKQogewotICAgIGF1dG8g
aW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9
IGltYWdlLT5zaXplKCk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCiAgICAgZW5jb2RlciA8PCAhIWdyYXBo
aWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTExNyw2MyArMTExOCwzMCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8
PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRp
dmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitP
cHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVh
dGVHcmFwaGljc0NvbnRleHQ7CiAgICAgZGVjb2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRl
eHQ7CiAgICAgaWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlk
Q3JlYXRlR3JhcGhpY3NDb250ZXh0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAg
YXV0byBpbWFnZSA9IGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZW5jb2Rl
T3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCi17Ci0gICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7Ci0gICAgZW5jb2RlciA8
PCBoYXNJbWFnZTsKLQotICAgIGlmIChoYXNJbWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1h
Z2UoZW5jb2RlciwgaW1hZ2UpOwotfQotCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCi17Ci0gICAgaW1hZ2UgPSBudWxscHRyOwotCi0gICAgYm9vbCBoYXNJbWFnZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFoYXNJbWFnZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1
cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwotfQotCi12b2lkIEFyZ3VtZW50
Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5j
b2RlciwgaW1hZ2UpOwotfQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi1ib29sIEFy
Z3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0
aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUlt
YWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwog
fQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYx
OWNiNDk2YjA5YjkyYjhlMy4uNGE5MzIxNTkxMzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9w
dGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJp
Y3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3Jl
OjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYp
OwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1h
Z2U+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2U+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRp
dmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDk1OWRhODNkNWY2OTg4YjIxMTU4
OGRhN2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0ODIwYWY1YTIyODNjNmU2YTA2ZTc0MzMxNzdiOTAz
ZGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKQEAgLTE4NSwxMSArMTg1LDkgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRh
UHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCBjb25zdCB2b2lkKgogCiBSZWZQdHI8
SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewotICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKLSAgICBpZiAoIXBsYXRm
b3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIEJpdG1hcElt
YWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgaWYgKGF1dG8gcGxhdGZv
cm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkpCisgICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
U2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IGIzODc5YTAwNDRlNjgxOWU4YjVmOTZm
Y2RiZDczNDVhOTUwYzI2MjQuLjBmMzBkOTRhNzE0OTkyZjgxN2FhM2NmODViZTBjMzFiYjk1M2Zk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1h
cERpcmVjdDJELmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJ
CiAgICAgYXV0byYgcGxhdGZvcm1Db250ZXh0ID0gKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7
CiAKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zIHsgc3RhdGUuY29tcG9zaXRlT3Bl
cmF0b3IsIHN0YXRlLmJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbigpLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH07Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2Fs
ZWQsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
KyAgICBEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBtX3NpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zLCBzdGF0ZS5h
bHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIENPTVB0cjxJRDJEMUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNl
MSogZGlyZWN0WERldmljZSwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4
IGJiODk2NTQ1ODg2N2ViMmEwZmM0ZWM4NTdmMzQ3NWE0ZTgyNWEzNWMuLjMxYzM4ZjM2MTNiMzZi
NTFkZWMwZmVkYTFiN2JjMTc3NzlkZjBkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zCiAgICAgfSk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2Fk
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUg
YWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRy
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0Rh
dGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGxhdGZvcm1JbWFnZVB0ciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBA
IC01NjIsNyArNTYyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xvYWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2xvYWRlZEljb25zLmNvbnRhaW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGljb25EYXRhID0gdGhpcy0+aWNvbkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAg
ICAgICAgICAgICAgICBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxO
YXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRm
b3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNl
ID0gbV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxs
b3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDE0ICs1
ODcsMTQgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZElj
b25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3Rvbmlj
VGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxh
dGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93
KCkpKTsKICAgICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAg
ICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0
YSkpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5maXJzdDsKQEAgLTYyMiwxMyArNjIyLDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpz
ZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgewogICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2NrKTsKLSAgICAgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8
TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2Vf
cGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAg
ICAgICAgICAgIGlmIChpY29uRGF0YVNpemUpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0
RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkg
PCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN0YXJ0Q2xlYXJM
b2FkZWRJY29uc1RpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5oCmluZGV4IDk2MTJmOTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4
ZTAzOWIuLmUyMjUyYTAwMDBkMmJiZTViNmY2OWNkMjI3MWQwMGExMjVjNTc3NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hl
Y2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCwgYm9vbCk+JiYpOwotICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYmKT4mJik7CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBt
X2RiOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsK
ICAgICBMb2NrIG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6cGFpcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9h
ZGVkSWNvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9h
ZGVkSWNvbnNMb2NrOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4gbV9pY29uSURGb3JJY29uVVJMU3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4
ZmNlNDcwYzEwYWRmZmE2MmU0NzdiNzgzOTM2M2MyNWU5ODAyOS4uOGVmMWNlNDEyNzM2YThlZWQz
YzZhYTE2YzAzMmIzM2FkYjliZjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEg
QEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdl
KQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBj
Z0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFVzZURyYWdJbWFn
ZVRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlMWIzOWY1NDJkZDM5ODA2YmZlYjk1M2ZkZDY0MjU2NWM5
NGE5MWE4Li43ODM0ZWVmMjQwYTBmNWRhMDEwNjQ3YzliODVkODMzNzhmZGJlYTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTc1NDYsNyArNzU0Niw3IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3Zp
ZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVyc0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAg
ICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFs
bG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9u
VXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0
TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29u
dGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdl
OnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxl
Y3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFtZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2Vs
ZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKQEAgLTc3NjksMTEgKzc3NjksMTEg
QEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBh
dXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0
aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJ
SW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJu
IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVy
Z2VkIHdpdGggY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuCkBAIC04MDM0LDcgKzgwMzQsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNp
emU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1lbnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29u
dGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYt
Pl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlv
blVwXSk7CisgICAgICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0g
YWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNo
b3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7
CiAgICAgICAgIGF1dG8gc25hcHNob3RWaWV3ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9j
XSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0p
OwogICAgICAgICBbc25hcHNob3RWaWV3IHNldEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhv
dXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3Rl
ZFNlbGYgYWRkU3VidmlldzpzbmFwc2hvdFZpZXcuZ2V0KCldOwpAQCAtMTAwODUsNyArMTAwODUs
MTIgQEAgc3RhdGljIFVJTWVudSAqbWVudUZyb21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9u
cyhVSVZpZXdDb250cm9sbGVyICpwcmV2aWV3VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9y
bWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdl
dCgpXSBhdXRvcmVsZWFzZV07CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5m
b3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAg
aWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
W1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRp
b25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIg
Kiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAKaW5kZXggZTc2YzA2MzhjN2RhMmEwNGYxZTA4OWJjNGQ0OTBmMjI0Yjg3ZDIxNi4u
YzNiZWVmNWQxNDBiNzI0MzhkYzc1MDU2MDNhZTlhNGNkZTJhMTFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtOTYsMTQgKzk2LDE0
IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVT
RShDRykKLSAgICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVy
biBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7CiAjZWxp
ZiBVU0UoRElSRUNUMkQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCi0g
ICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmlu
ZGV4IDA1YzEwOWNkMjAyNmQxNWY4MGViODMyYWQ5ZjFiN2JhMzNiYjk1NTcuLjllMjRhYjk5ZWJj
Njc1Y2UyMDFhNTkzOTcyOGM2MTlkYmE1OTVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAqbV9jb250ZXh0OyB9CiAKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0
aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4g
Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+
IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tp
bmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9C
R1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0
OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKaW5kZXggNWY4NWRmODUxOWUxYTMxZTYyODNkYThmYjAwOGExMzViMjEzZTM0My4uMGQ3
NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgYm9vbCBjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwog
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCA4MWNiMzFiODVmZjI2ODUxMDBiOTQyZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3
NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wg
d2FzQ2FuY2VsbGVkKQogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RT
b2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IGJpdG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0
bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgQVNTRVJUKENH
SW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKIAogICAgIENHQml0bWFwSW5m
byBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2Njc0YmYxNGFjMDEyMGMzNWZkZjNh
ZGY2Li43YWEwMDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRjMjI2ZjI3Mjc0OGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1MzYsNyBAQCBpZCA8RE9NRXZlbnRUYXJn
ZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogCiAgICAgaWYgKHRleHRJbmRpY2F0b3IpIHsK
ICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgp
KQotICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS5hdXRvcmVsZWFz
ZSgpOworICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZv
cm1JbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKCEqY2dJbWFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgxNzY5OTY3NWVj
ZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2M2IxMzY3NWFj
ZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1t
CkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRl
ciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAgICBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNh
Y2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpj
YWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNv
cmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2Uu
aGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZElt
YWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
NGFhN2JkNDhjYzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlmMWY3OGM5My4uZDEwNDNmOTU2YzQxMjVk
YmFjZjYyNGRkMjRiYmJkNjNkNmRiYzllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQpAQCAtODQ2LDE0ICs4NDYsMTQgQEAgcHJpdmF0ZToKICAgICBfdGV4
dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9y
RGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVmKCk7CiAgICAg
X2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2Fs
ZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0
aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBfY29udGVudElt
YWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhD
R0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0
aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0
KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0
KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmll
bnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2
ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgX2NvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNl
bGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAg
fQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413566</attachid>
            <date>2020-11-09 01:15:25 -0800</date>
            <delta_ts>2020-11-09 13:41:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201109011524.patch</filename>
            <type>text/plain</type>
            <size>240939</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyNDk3MDFlZTk2OGE2
ODE4YjQzNWM4NWU4NDdkNjhmNzlhODA2MC4uMjUwNjhmMzc1ZmU1MGRiNjcwNGU4OTIyMWVlNjI3
YWZkYTU4OWQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxMSBAQAorMjAyMC0xMS0wOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gYXJvdW5k
IE5hdGl2ZUltYWdlUHRyIHdoaWNoIGlzIG5vdworICAgICAgICByZW5hbWVkIFBsYXRmb3JtSW1h
Z2VQdHIuIFRoZSBnb2FsIGlzIHRvIGNvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlCisgICAg
ICAgIFBsYXRmcm9tSW1hZ2VQdHIgaW4gV2ViS2l0IHJlZ2FyZGxlc3MgaWYgaXQgaXMgcmV0YWlu
ZWQgb3V0c2lkZSBXZWJLaXQKKyAgICAgICAgb3Igbm90LiBJbiBmdXR1cmUgcGF0Y2hlcywgZGVs
ZXRpbmcgdGhlIE5hdGl2ZUltYWdlIHdpbGwgYmUgb2JzZXJ2ZWQgYnkKKyAgICAgICAgUmVtb3Rl
UmVzb3VyZUNhY2hlIHN1Y2ggdGhhdCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgR1BVUCBj
YWNoZSB3aGVuCisgICAgICAgIHRoZSBvYmplY3QgaXMgZGVzdHJveWVkIGluIFdlYlAuCisKKyAg
ICAgICAgVGhlIG5ldyBzdHJ1Y3R1cmFsIGhpZXJhcmNoeSBvZiB0aGUgYml0bWFwIGltYWdlIGlz
IHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgLSBDYWNoZWRJbWFnZSAocmVzcG9uc2libGUgb2Yg
cmVjZWl2aW5nIHRoZSBlbmNvZGVkIGltYWdlIGRhdGEpCisgICAgICAgICAgLSBCaXRtYXBJbWFn
ZSAocmVzcG9uc2libGUgb2YgZGVjb2RpbmcgdGhlIGltYWdlIGRhdGEpCisgICAgICAgICAgICAt
IE5hdGl2ZUltYWdlIChyZXByZXNlbnRzIGFuIGltYWdlIGZyYW1lIGFuZCBjb250cm9scyB0aGUg
bGlmZSBjeWNsZSBvZiBQbGF0Zm9ybUltYWdlUHRyIGluIFdlYktpdCkKKyAgICAgICAgICAgICAg
LSBQbGF0Zm9ybUltYWdlUHRyIChyZXByZXNlbnRzIGEgcGxhdGZvcm0gaW1hZ2UgYW5kIGl0IGlz
IHRoZSByZXN1bHQgb2YgSW1hZ2VEZWNvZGVyKQorCisgICAgICAgICogSGVhZGVycy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKiBwYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAgICAoLVtXZWJUZXh0SW5kaWNhdG9y
VmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFyZ2luOm9mZnNldDpdKToKKyAgICAg
ICAgKGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFn
ZUF0SW5kZXhDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnByZVRyYW5z
Zm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlT2ZT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6Om5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFz
eW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVBdEluZGV4Q2FjaGVJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENh
Y2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZl
SW1hZ2VBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnBsYXRmb3JtSW1h
Z2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklu
bGluZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdp
dGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGlu
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0lt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dMYXllckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpmaWxsU2hhZG93QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGxh
dGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9y
bUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUlt
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRHTENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VU
b0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmds
ZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2Fu
dmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpk
cmF3Q29uc3VtaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUlt
YWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5n
bGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpnZGtUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzbmFwc2hvdE5TSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAg
ICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd1BsYXRmb3JtSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0
aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDcm9w
cGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpjbGVhclN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VIYXNBbHBoYSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVDdXN0b21DdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VC
YWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9y
ZTo6aW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoK
KwogMjAyMC0xMS0wOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0ludGVncmF0aW9uXSBDbGVhbnVwIExheW91dEludGVncmF0aW9uOjpMaW5lIGludGVy
ZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkMjFkMDI3Y2YwMTRkZmU0ZWRlMWViNjAyMzMxNzFkZTc4MzI3NWJk
Li44OTRmOGNmMDU0YjExMmM4YTJmOTRkZDk5MTVmZGJjZGI0NWIxNjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDIwLTExLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0
aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6
CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjplbmNvZGVOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmRlY29kZU5hdGl2ZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChJUEM6OmRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZSk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxl
Qml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBh
aW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAg
ICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VG
b3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZp
ZXdJZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vz
c2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Ug
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0Fs
bW9zdFNvbGlkQ29sb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxX
aXRoRGlzcGxheVN0cmluZ0FuZEljb24pOgorCiAyMDIwLTExLTA4ICBMYXVybyBNb3VyYSAgPGxt
b3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJFR1JFU1NJT04ocjI2NzI1MCkgQVBJ
IHRlc3QgL3dlYmtpdC9XZWJLaXRXZWJWaWV3L3VzZXJtZWRpYS1lbnVtZXJhdGVkZXZpY2VzLXBl
cm1pc3Npb24tY2hlY2sgaXMgY3Jhc2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCBmODkwMWFlMTAxMDVkNzczNGI3OTQzZGFiZGE2OGVkYTdjNWViNWVjLi41ZDM4OTE3MTlmMmIw
MTE3YTY3NjVlMjNiNDExZDQ3MWRiZWE3ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xl
IG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9N
Lm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFuZFJlY3Rz
Ol0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGlt
YWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNj
YWxlOl0pOgorCiAyMDIwLTExLTA2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUGlQIHJldHVybiB0byBlbGVtZW50IGZ1bGwgc2NyZWVuIGlzIG5vdCBzbW9vdGgg
b24gc29tZSB3ZWJzaXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTQzYzIwNTgxNjVlODQ1OTNm
ODk0YzZhY2JlNjg0MmUyYmNhNWYzNy4uZDdkNDUxMTdmZWUyMGRiMjM5MzVjN2M2YmJkOTg0YmVm
MmFjZDc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZv
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybUxheWVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDgxMGNmNjcxZDJiNDcwODhhZDU3
YmNjNzFlOTNmMTFlYWUyYjM3Ni4uMGFhNTQ0MzAwZDRlM2M3ZmM1NmVmODFhZGY2MWFmMmZhNjE5
MDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDMsNiArMTk0Myw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGJiYTYzODVmZWM1Y2ZmMWIwYzc1ODgwNWM0NjI3ZjBlYTEwM2NjOGEuLjFlYTQ1M2ZjZjVhYjNl
ZGIzMmRkNjRmMWFlZTQ3YTJhNGUzNjc0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTksNyArMjE1OSw3IEBACiAJCTcy
NEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYx
M0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFG
RkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1
MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVC
MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJF
RjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZE
NTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJD
NjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk1Niw2ICs5OTU2LDcg
QEAKIAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUg
LyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5p
bWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk2Niw3ICs5OTY3LDcgQEAKIAkJNzI2NkYw
MjgyMjQzMTIwMzAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1
IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1h
Z2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNjQxMiw4ICsyNjQxMyw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVB
IC8qIE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyog
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAx
NDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRD
QURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0
MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVG
OTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYg
LyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAq
LywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNw
cCAqLywKQEAgLTI2NDIyLDYgKzI2NDIzLDcgQEAKIAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFB
RjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAv
KiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVy
bi5oICovLAorCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmgg
Ki8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIu
aCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLApAQCAtMzM0NDIsNyArMzM0NDQsNiBAQAogCQkJCUE4MTg3MjIzMDk3N0QzQzAw
MDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3
N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNkQ1
NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRo
TlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5
IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzM2NjcsNiArMzM2Njgs
NyBAQAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBs
YXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5NTFENTRGNUZC
MDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjZENTZF
MjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNB
MTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA2ZDI3ZjM2YzE3ODEzNWM5YWRjMWViZmJlMjYzNWNk
NTU5MDI2NDhkLi42ZGJiNzk3NWVkYjJiZGFjY2ZmNDBiMDA0ZTE0MjAzNWE3ODdjYTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMxNSw3ICszMTUsNyBA
QCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAog
ICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFzQXZhaWxhYmxl
VmlkZW9GcmFtZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSFRNTFZpZGVvRWxl
bWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCmluZGV4IDE3ZDY1MjE5MjA1MzdmY2RlOGMwNGI0Mjc4MTZkY2E3NzU0NTU5MmIuLjgxZjA4
M2E1MGM2NDc2MmJlMjk1YTNhNjMxMjQ0NmQ2YmYyYjkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgLy8gVXNl
ZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAg
Ly8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2NjMxNmZiMGNkNTNh
NmYwNzk1MzI5MjBjZjA0MmMyZTYxMzA1NTAwLi4xODBiOWI5MWMwMDM0ODY1MjE3M2MzNDc3MzZk
MWQxZmFmMjkyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTYzNSw4ICsxNjM1LDgg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCiAj
aWYgVVNFKENHKQotICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLm5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSkgewotICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBkc3RS
ZWN0LCBzcmNSZWN0KTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHZpZGVvLm5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSkgeworICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBGbG9h
dFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAg
ICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDE3YmE1MWZlMGU2
Y2U3MWQ4YzljNThhMGIwNzM4MmY2NmNlZmJlMDguLjc3Mjk1M2MyZTY2NjExN2JjMGIzY2NiYzNi
YmZjZWQ2MGUxNDZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBib29sIGluZGljYXRvcldh
bnRzTWFudWFsQW5pbWF0aW9uKGNvbnN0IFRleHRJbmRpY2F0b3ImIGluZGljYXRvcikKIAogICAg
IEZsb2F0U2l6ZSBjb250ZW50c0ltYWdlTG9naWNhbFNpemUgPSBfdGV4dEluZGljYXRvci0+Y29u
dGVudEltYWdlKCktPnNpemUoKTsKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUo
MSAvIF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNvbnRlbnRzSW1hZ2U7CiAgICAgaWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgq
X3RleHRJbmRpY2F0b3IpKQogICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3It
PmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICBlbHNlCkBA
IC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgaW5kaWNhdG9yV2FudHNNYW51YWxBbmltYXRp
b24oY29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9yKQogICAgICAgICBbdGV4dExheWVyIHNl
dEJvcmRlckNvbG9yOmJvcmRlckNvbG9yLmdldCgpXTsKICAgICAgICAgW3RleHRMYXllciBzZXRC
b3JkZXJXaWR0aDpib3JkZXJXaWR0aF07CiAgICAgICAgIFt0ZXh0TGF5ZXIgc2V0RGVsZWdhdGU6
W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKLSAgICAgICAgW3Rl
eHRMYXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07Cisg
ICAgICAgIFt0ZXh0TGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdlIGlkKWNvbnRlbnRzSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAgICAgICAgUmV0YWluUHRyPENBU2hhcGVMYXll
cj4gbWFza0xheWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOwogICAg
ICAgICBbbWFza0xheWVyIHNldFBhdGg6dHJhbnNsYXRlZFBhdGgucGxhdGZvcm1QYXRoKCldOwpA
QCAtMjY2LDggKzI2Niw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4g
Y3JlYXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZU
aW1lSW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAg
ICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJh
c2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudElt
YWdlKCktPm5hdGl2ZUltYWdlKCk7Ci0gICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVl
OihfX2JyaWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKKyAgICBhdXRvIGNvbnRlbnRzSW1h
Z2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFtj
cm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxN
b2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVt
b3ZlZE9uQ29tcGxldGlvbjpOT107CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXREdXJhdGlv
bjpkdXJhdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3NzYyZTU1MzI3ODNmZGEx
Ny4uYTEyYWY0NTkwNzlmMDUzYzg2Y2U5ODI5N2JkMzRjYmY5ZDljYTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiB7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdl
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDog
SW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJjZTo6Y3JlYXRlKFdURk1v
dmUoaW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzZXRD
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29k
aQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBC
aXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
IHRhcmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VB
dEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsIHdhcyAlZCwg
cmVzYW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRl
eChpbmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1w
CiAgICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6
bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRy
PE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hl
SWZOZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
dGFyZ2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFu
c2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9u
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENv
bnRleHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRh
cmdldENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJl
c3BlYwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIGNvcnJlY3RlZFNpemVG
bG9hdCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VTaXpl
KTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc291cmNl
U2l6ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpz
aW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoQ0cpCi1O
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHNpemVf
dCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlm
TmVlZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwotICAg
ICAgICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9PSBzaXplKQorICAgICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJu
IGltYWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdy
YXBoaWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1WZWN0b3I8TmF0aXZl
SW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQorVmVjdG9yPFJlZjxO
YXRpdmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQogewotICAgIFZl
Y3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+
PiBpbWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvIGltYWdlID0g
ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQotICAgICAgICAgICAgaW1hZ2VzLmFw
cGVuZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKG1ha2VSZWYoKmltYWdlKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGltYWdlczsKQEAgLTIxMSwxMCArMjExLDEwIEBAIGJvb2wg
Qml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVE
CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRo
YXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNp
emUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdl
U2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpCiAgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVk
SW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBJbWFnZURy
YXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlcwogICAgIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgPSBtX2FsbG93
U3Vic2FtcGxpbmcgPyBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoY29udGV4dCwgc2Nh
bGVGYWN0b3JGb3JEcmF3aW5nKSA6IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAgICAgTE9H
KEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZl
bCA9ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9O
X18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0
PGludD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53
aWR0aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAob3B0
aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAg
ICAgICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJh
bWUgfHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CkBAIC0zMjIsOSArMzIyLDkgQEAgSW1hZ2VEcmF3
UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXMKICAgICBhdXRvIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlv
bigpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2Up
IHsKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMs
IG9yaWVudGF0aW9uIH0pOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0
LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsg
b3B0aW9ucywgb3JpZW50YXRpb24gfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6
ZShvcmllbnRhdGlvbikpLCBvcHRpb25zKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRh
dGlvbikpLCBvcHRpb25zKTsKIAogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBm
cmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDNiNjg5MDY3ODM1
NjliMDFjYWJhMTJmZDYwMWFkNTYxOTg0YjE3YjUuLjljNTllN2FlZGMwMmU2YmE4NzU2OGEyNWZl
YWNkNjJjZThhOWE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaApAQCAtNTMsNyArNTMsMTEgQEAgY2xhc3MgVGltZXI7CiAKIGNsYXNzIEJp
dG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+
IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSwg
b2JzZXJ2ZXIpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFJl
ZlB0cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1h
Z2UoV1RGTW92ZShuYXRpdmVJbWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTM1LDIzICsx
MzksMjMgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJl
c3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJh
bnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlv
biwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogI2lmIFVTRShD
RykKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxO
YXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBm
cmFtZXNOYXRpdmVJbWFnZXMoKTsKICNlbmRpZgogCiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlQXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2RlKEZ1bmN0aW9uPHZvaWQoKT4mJik7
CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHImJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRy
KTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkg
eyByZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQotICAgIE5hdGl2
ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRl
eCk7IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5l
ZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICAvLyBDYWxsZWQgdG8g
aW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lw
ZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUg
aW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTE5OCw3ICsyMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZm
UmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYpOworICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmPE5hdGl2
ZUltYWdlPj4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
aW5kZXggMjIzZDlkYzE4M2QwM2UzZjRjYzM1MWY0ZGE2ZjZmODkzZjBhYjVlZi4uODU0MDIxNWY2
MjM3Y2MwYTNkNjI1ZTMyZmE5NjdkZjlhNjJlYzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTE2LDcg
KzExNiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFja2Vu
ZC0+ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgOiAwOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRy
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3Jl
KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1h
Z2VCdWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIHNp
bmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lu
a0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDMwYjg4NDkxOWIyYzYwNDVmNzk5NmMxOWExNWJhZjYz
OWJjNTI2OWUuLjAyNThkNjQxZDc2NGI5OWFiMWNkOGNkZjk0Mjk4ZDBkZGY4N2IxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRl
eHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRp
UnVucy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwbGF0Zm9y
bURyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucyk7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMGIzNWFjNjRmYThiOWZmZTBjOTQ0ODVlOTczZjI0YzJhYTBmMzQ5
MC4uZmNjYWVlZDdmN2FhMGMxZDZjMGMxNzJiYjU2MGQ1ZjA1M2U4YTNjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3
OSw3ICszNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2UgfSk7CkBAIC02NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1G
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAK
LSAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAg
IHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAg
IEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNv
bnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaAppbmRleCBiYjliMGM5ZmIxZTYzOWQ5OWY5ODM3ZmUwNmRmMGFj
NzAyOTZjOTcyLi5mNGI1MmFjNWEzN2U2YzZhZDk0ZGM2YTdiY2E2NzY1YmU2MDhkN2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZh
dGU6CiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VT
dXJmYWNlOwogI2VsaWYgVVNFKENHKQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1h
Z2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOworICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gbV9jZ0ltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9kZWNv
ZGVkSW1hZ2U7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7CiAgICAgVW5p
cXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmgKaW5kZXggNmUyMjJjMDJmMmQ5YWUzNjQwNjFiNzNkOWMzN2I3N2IyOWIwM2I0Ni4uOWQ0NDBk
MDUzYjA3ODBkOGQ0MjViNjZlYjk1MTBkNjFkYzhlY2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzQs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApp
bmRleCBiNTk2MGFkNWZmN2M0ZGE1NmRmNGY1YTRhNzlhZGQ5ODg0MTM2ZDdkLi44MmVkMjY4NThj
MzU4NWYyZjA5MzhhMjU5ZjU0NmVhNWM0YzNlMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSWNvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29y
ZUdyYXBoaWNzLmg+CiAjZWxpZiBQTEFURk9STShNQUMpCiBPQkpDX0NMQVNTIE5TSW1hZ2U7CkBA
IC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgRmxvYXRSZWN0OwotICAgIAorY2xhc3MgTmF0aXZlSW1hZ2U7CisKIGNsYXNz
IEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcyk7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBub24t
aU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJ
Y29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNjQsOCArNjUsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBJY29uKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CisgICAgSWNvbihS
ZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jZ0ltYWdl
OwogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEljb24oTlNJbWFnZSopOwogICAgIFJldGFpblB0
cjxOU0ltYWdlPiBtX25zSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAppbmRleCA0YjliZWVkODY1N2VlYjlmYWI0ZDQ1Y2NhZGQxMDhhZmIwZDIzZmFiLi40MzZi
MzdkNmM4ZWM2ZjAwZjRmZWI0ZGQzNmY0YTI5MjNjN2Y5NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNs
dWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTE1MywxMCArMTUzLDEwIEBA
IHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBT
cGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxs
cHRyKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRyYW5zZm9ybWVk
TmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gQWNj
ZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggYTE3NWRkYTU0
YTYzNGU5Zjc4Mzg1OThkMGVkYWIwYzg2MjgyNDlhYS4uOTE4YmNiM2FlYjQyZTQzZjYzNzQyMmYz
Yjk2YmYxZjgxNzE1YWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJhY2tpbmdTdG9yZT4obmV3IEltYWdl
QmFja2luZ1N0b3JlKG90aGVyKSk7CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2Uo
KSBjb25zdDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CiAKICAgICBib29s
IHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggM2QzZjgwMDdjYjdlZTky
YzZhMDBlOGZlMDg2NWQwNTgxMTRkM2JjMy4uOGY2MmRjNmEzNDgzYzg0M2QwNWJlZjY3MzRkYzU0
YTEzYjRiMGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBDb2xvclNw
CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCmluZGV4IDkyMDRhZDEwYTgxMDY4MDZkZTkyNmYyZWVmZmMxNjM0Yzc3
MDBlNmUuLjUzODQ2YzU5Y2I1ZWM0MDA3ZDU0NDBhNDE1NjE3ZjhmMTg3ODBmODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtODIsNyAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5h
dGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQ
cmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1h
Z2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20g
dGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEs
IC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIAotICAg
IHN0YXRpYyBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1
ZmZlcj4pOworICAgIHN0YXRpYyBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1h
Z2UoUmVmUHRyPEltYWdlQnVmZmVyPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIFByZXNlcnZlUmVz
b2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pOwogICAgIHN0YXRpYyB2b2lkIGRyYXdD
b25zdW1pbmcoUmVmUHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAs
IDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CkBAIC0xMTQs
NyArMTE0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyKCkgPSBkZWZh
dWx0OwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdl
KCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZl
UmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDQxNzNhOWJmMDk0OWVjM2QyZDY3ZTgwMTdi
ZDcwZjI1MWY2OTgzYTEuLmYxZjM2N2MwNmEyYTBjOWQ5OTEzYzljOTIzNmMxOTczNmVkZTU5YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyQmFj
a2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZQogICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1h
Z2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKICAgICByZXR1cm4gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggY2I1
ODcyNTY3ZjA4ODNiNWJkMDJlMGVlY2I4Y2VmZGJlNzEwYThlYy4uYWE5YjM0MWEwNTczZjJhZDRl
OWVkMzA1N2MwNDIxZTk1OTFhZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMsNiArNDIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdl
RGF0YTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogCiBlbnVtIEJhY2tpbmdTdG9yZUNvcHkgewogICAg
IENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFm
ZmVjdCB0aGUgY29weS4KQEAgLTc3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBz
aXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXplLmFyZWEo
KS51bnNhZmVHZXQoKTsgfQogICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHks
IFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29s
dXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRl
eCA3MTA0ZDA3MTk0ZjM4MTU5YjMzYmVhNmFhZWQ4ODVkNzA5YmQ5ODE3Li5hYWE1MWJkZGNlMDRm
ZDg1ZTllYTYxZDM4MmNjM2IxMWVlNmUyMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IkltYWdlVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVu
dFNpemUobG9uZyBsb25nKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAppbmRleCA4M2I3OGI2ZWMwMDZmYzU0Nzc0NTJm
ZmQwODE1MjdiMmRkOTE2MTg0Li5jYzNiNjM2MDI5NWNlMGM1YjlkYjE0MTUwNGNlY2E2MjZlZGJh
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
LmNwcApAQCAtODIsNyArODIsNyBAQCB1bnNpZ25lZCBJbWFnZUZyYW1lOjpjbGVhckltYWdlKCkK
IAogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5dGVzKCk7CiAKLSAgICBj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKG1fbmF0aXZlSW1hZ2UpOworICAgIG1fbmF0aXZlSW1h
Z2UtPmNsZWFyU3ViaW1hZ2VzKCk7CiAgICAgbV9uYXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAg
bV9kZWNvZGluZ09wdGlvbnMgPSBEZWNvZGluZ09wdGlvbnMoKTsKIApAQCAtMTIxLDcgKzEyMSw3
IEBAIENvbG9yIEltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiAgICAg
aWYgKCFoYXNOYXRpdmVJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKIAotICAgIHJldHVybiBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29s
aWRDb2xvcihtX25hdGl2ZUltYWdlKTsKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZS0+c2luZ2xl
UGl4ZWxTb2xpZENvbG9yKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuaAppbmRleCA1NGE5YzlkZjMzYjRkMzNiMTI3NWY5MTQ2ZmY4ODQy
ZTM3YzAwMDcxLi5hYTczYWUzNjM4OWVjMmZhYzQyMWVjMzVjM2U2YzY3MTgxMWU3YmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1
cm4gaGFzTmF0aXZlSW1hZ2UoKSA/IChzaXplKCkuYXJlYSgpICogc2l6ZW9mKHVpbnQzMl90KSku
dW5zYWZlR2V0KCkgOiAwOyB9CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGluZ0xldmVsOyB9CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJ
bWFnZTsgfQogCiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfTsKICAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQpAQCAt
ODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIERlY29kaW5nU3RhdHVzIG1fZGVjb2RpbmdTdGF0
dXMgeyBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCB9OwogICAgIEludFNpemUgbV9zaXplOwogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IG1fbmF0aXZlSW1hZ2U7CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwg
eyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVj
b2RpbmdPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKaW5kZXggZjhlMjAyOGMzYzNiM2Y2MTZjNmExMzc4YTk0ZWZkZmM0ZTVi
MTk0OS4uMTQ4MDIxY2VlZTQ1NWFlYmIzMDVkZmYzNTYxM2VjNDc0MzNmNTUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNDks
NyArNDksNyBAQCBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqIGltYWdlLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDbwogewogfQogCi1JbWFnZVNvdXJjZTo6
SW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKK0ltYWdlU291cmNlOjpJ
bWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgOiBtX3J1
bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQogewogICAgIG1fZnJhbWVDb3VudCA9IDE7CkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Z3Jvd0ZyYW1lcygpCiAgICAgICAgIG1f
ZnJhbWVzLmdyb3cobmV3U2l6ZSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCit2b2lkIEltYWdlU291cmNlOjpzZXRO
YXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgQVNT
RVJUKG1fZnJhbWVzLnNpemUoKSA9PSAxKTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJh
bWVzWzBdOwpAQCAtMjQ1LDggKzI0NSw4IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UpCiAgICAgZnJhbWUubV9uYXRpdmVJbWFn
ZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogCiAgICAgZnJhbWUubV9kZWNvZGluZ1N0YXR1cyA9
IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsKLSAgICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFn
ZVNpemUoZnJhbWUubV9uYXRpdmVJbWFnZSk7Ci0gICAgZnJhbWUubV9oYXNBbHBoYSA9IG5hdGl2
ZUltYWdlSGFzQWxwaGEoZnJhbWUubV9uYXRpdmVJbWFnZSk7CisgICAgZnJhbWUubV9zaXplID0g
ZnJhbWUubV9uYXRpdmVJbWFnZS0+c2l6ZSgpOworICAgIGZyYW1lLm1faGFzQWxwaGEgPSBmcmFt
ZS5tX25hdGl2ZUltYWdlLT5oYXNBbHBoYSgpOwogfQogCiB2b2lkIEltYWdlU291cmNlOjpjYWNo
ZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCkBAIC0yNjcsNyArMjY3LDcg
QEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4KIAogICAgIGlmIChmcmFtZS5tX2RlY29kaW5nT3B0
aW9ucy5oYXNTaXplRm9yRHJhd2luZygpKSB7CiAgICAgICAgIEFTU0VSVChmcmFtZS5oYXNOYXRp
dmVJbWFnZSgpKTsKLSAgICAgICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1l
Lm5hdGl2ZUltYWdlKCkpOworICAgICAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5uYXRpdmVJbWFn
ZSgpLT5zaXplKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGZyYW1lLm1fc2l6ZSA9IG1fZGVjb2Rl
ci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAKQEAgLTI3OSw3
ICsyNzksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgogICAgICAgICBmcmFtZS5tX2R1cmF0
aW9uID0gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQg
SW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0
aXZlSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMg
ZGVjb2RpbmdTdGF0dXMpCit2b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdElu
ZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNv
ZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIEFTU0VS
VChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2Zy
YW1lc1tpbmRleF07CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTW92ZSB0aGUgbmV3IGltYWdlIHRvIHRoZSBjYWNo
ZS4KLSAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CisgICAg
ZnJhbWUubV9uYXRpdmVJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9y
bUltYWdlKSk7CiAgICAgZnJhbWUubV9kZWNvZGluZ09wdGlvbnMgPSBkZWNvZGluZ09wdGlvbnM7
CiAgICAgY2FjaGVNZXRhZGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGRlY29k
aW5nU3RhdHVzKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBp
CiAgICAgZGVjb2RlZFNpemVJbmNyZWFzZWQoZnJhbWUuZnJhbWVCeXRlcygpKTsKIH0KIAotdm9p
ZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUlt
YWdlQXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlLCBzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQog
ewogICAgIGlmICghaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMw
OSw3ICszMDksNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFz
eW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpegogICAgIEFTU0VSVChpbmRleCA8
IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2ZSBpbWFnZSBh
bmQgc2V0IGEgbmV3IG9uZQotICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0
aXZlSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNv
ZGluZ1N0YXR1cyk7CisgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChXVEZNb3ZlKHBsYXRm
b3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdPcHRpb25zLCBkZWNv
ZGluZ1N0YXR1cyk7CiAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJs
OiAlcyBbZnJhbWUgJWxkIGhhcyBiZWVuIGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4KTsKIAogICAgIC8vIE5vdGlm
eSB0aGUgaW1hZ2Ugd2l0aCB0aGUgcmVhZGluZXNzIG9mIHRoZSBuZXcgZnJhbWUgTmF0aXZlSW1h
Z2UuCkBAIC0zNjIsOCArMzYyLDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29k
aW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHN0YXJ0aW5nVGltZSA9IE1vbm90b25pY1RpbWU6
Om5vdygpOwogCiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdlIG9uIHRo
ZSBkZWNvZGluZyB0aHJlYWQuCi0gICAgICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZSA9IHByb3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVz
dC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNv
ZGluZ09wdGlvbnMpOwotICAgICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKQorICAgICAgICAgICAg
YXV0byBwbGF0Zm9ybUltYWdlID0gcHJvdGVjdGVkRGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwg
ZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7CisgICAgICAgICAgICBpZiAocGxhdGZvcm1J
bWFnZSkKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAg
LSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFzIGJlZW4gZGVjb2RlZF0iLCBfX0ZVTkNUSU9OX18sIHBy
b3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVlc3Qu
aW5kZXgpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywg
IkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZGVjb2RpbmcgZm9yIGZyYW1lICVsZCBo
YXMgZmFpbGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwgc291cmNlVVJM
LnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CkBAIC0zNzUsMTIgKzM3NSwxMiBA
QCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAg
ICAgICAgc2xlZXAobWluRGVjb2RpbmdEdXJhdGlvbiAtIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IHN0YXJ0aW5nVGltZSkpOwogCiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlZCBmcmFt
ZXMgb24gdGhlIGNyZWF0aW9uIHRocmVhZCB0byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2Fj
aGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQuCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLCBwcm90ZWN0ZWREZWNvZGVy
LCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RG
TW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVl
LCBwcm90ZWN0ZWREZWNvZGVyLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCks
IHBsYXRmb3JtSW1hZ2UgPSBXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBtYXkgaGF2ZSBiZWVuIGNs
b3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdlLCBzdG9wQXN5bmNEZWNv
ZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkRGVj
b2RpbmdRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYgcHJv
dGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1ZS5m
aXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fZnJhbWVDb21taXRRdWV1ZS5yZW1vdmVGaXJzdCgpOwotICAgICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5jYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKFdURk1vdmUobmF0
aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xl
dmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdT
dGF0dXMpOworICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYWNoZVBsYXRmb3Jt
SW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0Lmlu
ZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5n
T3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAt
ICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIHdpbGwgbm90IGNhY2hlZF0iLCBfX0ZVTkNUSU9OX18s
IHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJlcXVl
c3QuaW5kZXgpOwogICAgICAgICAgICAgfSk7CkBAIC00NTQsOSArNDU0LDkgQEAgY29uc3QgSW1h
Z2VGcmFtZSYgSW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBJbWFnZUZyYW0KICAgICAgICAgaWYgKGZyYW1lLmhhc0Z1bGxTaXplTmF0aXZlSW1hZ2Uo
c3Vic2FtcGxpbmdMZXZlbCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gV2UgaGF2
ZSB0byBwZXJmb3JtIHN5bmNocm9ub3VzIGltYWdlIGRlY29kaW5nIGluIHRoaXMgY29kZS4KLSAg
ICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOworICAgICAgICBhdXRv
IHBsYXRmb3JtSW1hZ2UgPSBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUpOwogICAgICAgICAvLyBDbGVhbiB0aGUgb2xkIG5hdGl2
ZSBpbWFnZSBhbmQgc2V0IGEgbmV3IG9uZS4KLSAgICAgICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5k
ZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CisgICAgICAgIGNhY2hl
UGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC02OTcsMTkgKzY5NywyMSBAQCB2b2lk
IEltYWdlU291cmNlOjpzZXRUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFy
Z2V0Q29udGV4dCkKIH0KICNlbmRpZgogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCkKIHsKLSAgICByZXR1cm4gaXNEZWNvZGVyQXZhaWxhYmxlKCkgPyBtX2RlY29kZXItPmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7
CisgICAgaWYgKCFpc0RlY29kZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9kZWNvZGVyLT5jcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ewotICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgs
ICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpKTsKKyAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0
SW5kZXg8UmVmUHRyPE5hdGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1h
Z2UpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRhZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPE5h
dGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIs
IEltYWdlRnJhbWU6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwp
OworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8UmVmUHRyPE5h
dGl2ZUltYWdlPj4oaW5kZXgsICgmSW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJ
bWFnZUZyYW1lOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsK
IH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGQ5OGVjMGU3ZjZl
NTJjZTU1ODllZGQ5OWI0MmM3YWQ2M2NlZGYwMWQuLmE2ZjRhYjEzZGVlZmRhMzY1MmJiOTMzY2Iy
ZTI2MmE1ZmNiNjAzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlU291cmNlKGltYWdlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBj
cmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSkKKyAgICBzdGF0aWMgUmVmPEltYWdl
U291cmNlPiBjcmVhdGUoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJ
bWFnZSkpKTsKICAgICB9CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCBwdWJsaWM6CiAjaWYgVVNFKERJ
UkVDVDJEKQogICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQq
KTsKICNlbmRpZgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwotICAg
IE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOworICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0
SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpOwogCiBwcml2YXRlOgogICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdl
KiwgQWxwaGFPcHRpb24gPSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0g
ICAgSW1hZ2VTb3VyY2UoTmF0aXZlSW1hZ2VQdHImJik7CisgICAgSW1hZ2VTb3VyY2UoUmVmUHRy
PE5hdGl2ZUltYWdlPiYmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVj
b2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAgICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0
VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwpAQCAtMTUyLDEwICsx
NTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY29kZWRTaXplUmVzZXQodW5zaWduZWQgZGVj
b2RlZFNpemUpOwogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKEVuY29kZWREYXRh
U3RhdHVzKTsKIAotICAgIHZvaWQgc2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJik7Cisg
ICAgdm9pZCBzZXROYXRpdmVJbWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQg
Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2VBdEluZGV4KE5hdGl2ZUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52
YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdl
UHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwg
RGVjb2RpbmdTdGF0dXMpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0
Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAg
dm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxhdGZvcm1JbWFnZVB0ciYmLCBz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5n
U3RhdHVzKTsKIAogICAgIHN0cnVjdCBJbWFnZUZyYW1lUmVxdWVzdDsKICAgICBzdGF0aWMgY29u
c3QgaW50IEJ1ZmZlclNpemUgPSA4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDdhYWExZWZiM2E1ZTM1MzYxNmIyMjliYjVhM2Yy
NzBhZDVjYTEwY2YuLjU5NTY3ZDBjMzk5MzJiMGU3YjE3ZmI2NWM3MmU3NmRmYTdmMTk2YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTk4NSw3ICs5ODUsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbgogICAgIHJldHVybiBt
X3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0
dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXI6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDMzYzFkY2E4ODI0MTAyMGY0ZmQxZGY2MmY1
NmYwYWNlNzYwOGY4YTguLmEwNTc4YWUwM2U3MDdjODU1Njk2NGE1MzZlOWFiNjRhNTNlODVjYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7
CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBjMzZjMmY1
NTU1OGE2ZjczYzZlNzU0Mzc5YTM0MzExNDAzOGIwYjkxLi43ZTkwY2RkZGZjODcwMWJiY2RhNzJk
OTRhZTRkYjhmMGRhMDEwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjEz
ZGNhYjM1YWM4YzVhOTgxZGRkOWEzMjA4ODg4NGZkNGFhMjUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8
TmF0aXZlSW1hZ2U+IE5hdGl2ZUltYWdlOjpjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRm
b3JtSW1hZ2UpCit7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRm
b3JtSW1hZ2UpKSk7Cit9CisKK05hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdl
UHRyJiYgcGxhdGZvcm1JbWFnZSkKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRm
b3JtSW1hZ2UpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCAwMzM0NzU5NjA3Zjhm
MjBkZTMxMjQ4NTlhNmYwZjA5NDUxZTE4ZTViLi4yMzQ4MGZmOTg1YzU2OTA3ZjZhM2U5NGZiZTk0
NmYyYzFlYTY1OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKQEAgLTI3LDE2ICsyNywyOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3I7Ci1jbGFzcyBJbnRT
aXplOworY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4g
eworcHVibGljOgorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYpOwogCi1XRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotdm9pZCBjbGVhck5hdGl2ZUlt
YWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgY29uc3QgUGxhdGZvcm1J
bWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsg
fQogCi19CisgICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNBbHBoYSgpIGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNv
bnN0OworCisgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOworCitwcml2YXRlOgorICAgIE5hdGl2
ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fcGxh
dGZvcm1JbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZDc3YTg5OGQzOTg3MzY0MTExNzRmMTlmNzUxNDA3MWQwN2M5NTgy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZWxpZiBVU0UoQ0FJ
Uk8pCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNlbGlmIFVTRShXSU5HREkpCi0jaW5jbHVk
ZSAiU2hhcmVkQml0bWFwLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYg
VVNFKENHKQotdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7Ci0j
ZWxpZiBVU0UoRElSRUNUMkQpCi10eXBlZGVmIENPTVB0cjxJRDJEMUJpdG1hcD4gTmF0aXZlSW1h
Z2VQdHI7Ci0jZWxpZiBVU0UoQ0FJUk8pCi10eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKFdJTkdESSkKLXR5cGVkZWYgUmVmUHRyPFNoYXJl
ZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MmQwN2Y5
NDRlOWUzOThmY2Y1MjRmYTE5ZWYwNDU5MTEwMTNkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworI2VsaWYgVVNFKENBSVJPKQorI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCisjZWxpZiBVU0UoV0lOR0RJKQorI2luY2x1ZGUgIlNoYXJlZEJp
dG1hcC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3Vz
aW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj47CisjZWxpZiBVU0Uo
RElSRUNUMkQpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gQ09NUHRyPElEMkQxQml0bWFwPjsK
KyNlbGlmIFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PjsKKyNlbGlmIFVTRShXSU5HREkpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0g
UmVmUHRyPFNoYXJlZEJpdG1hcD47CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKaW5kZXggMWIwN2Y4NmYz
OTMxNzhmNGNmN2ZlODNhODE0NzgwODRlYmYyMjgzMS4uYWQzYzFiYjc5YWVkY2FhZTNlNzk3ZmQ4
ZmIyZDZhYWE4NmVkMzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9
IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShO
YXRpdmVJbWFnZVB0cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDhhNWY1ODcw
YTM1MzU3M2Q4Njk3NjY5MzkxNTRkOTdiNzIyY2ZjMzAuLmZiM2JmY2RjMmJlMWU3ODE2NjRhMjQx
OTQ5M2U5NWJhNTM3ODdlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxv
d1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyNWJmMTU5ZGU0NDUzNDkxNmY5MGFi
ZDA3NTNhMTE1NTZhYzUxMmI3Li44Y2RmYzcxYjY0NTAzZGUzMzMxNjM1OWNkMzM5ZGQwZDM0ODRi
MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
QEAgLTU2Nyw3ICs1NjcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogICAgIHJldHVybiAo
ZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdl
UHRyIEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBM
b2NrSG9sZGVyIGhvbGRlciB7IG1fc2FtcGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKaW5kZXggNmE2ZmQ3MTgzYWU4OWQzODU4MmI2MTFkZDcwMTZhNTNhZTljMWVhNi4u
MjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsK
ICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpOwotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKSBmaW5hbDsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwpA
QCAtMzQzLDcgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZp
ZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFpblB0cjxXZWJDb3JlQVZGUHVsbERl
bGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2xh
c3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRpb25TZXNzaW9u
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92aWRlb1RleHR1
cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1f
cGl4ZWxCdWZmZXJDb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBmMjk0ODgx
NmVkZGU3OWU3OGExOTMxZDViYzZkM2VjZWViNWQ4NDdmLi4wMGQwODQ1MzU1NDhhYTUwOTlkM2Y3
N2U3OWI3ODUwYjg5YWU5MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTExMjcsNyAr
MTEyNyw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7CiAgICAgdXBk
YXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOwotICAgIG1fdmlk
ZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1fbGFzdElt
YWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZShtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxs
cHRyKTsKIH0KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKQEAgLTExMzksNyAr
MTEzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKIHsKICAgICBpZiAodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpCiAgICAgICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5j
aHJvbm91c2x5KTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
bGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
bGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogICAg
IHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CiAKQEAgLTIyOTMsNyArMjI5Myw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdElt
YWdlKFVwZGF0ZVR5cGUgdHlwZSkKIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKIAotICAgIG1fbGFzdEltYWdlID0gbV9waXhlbEJ1ZmZlckNvbmZvcm1l
ci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwor
ICAgIG1fbGFzdEltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkp
OwogCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNyZWF0aW5nIGJ1ZmZlciB0b29rICIs
IChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRzKCkpOwogfQpAQCAtMjMxNCw4
ICsyMzE0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWlu
dFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOwogCi0gICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lk
dGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgp
KSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdl
UmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgRmxvYXRSZWN0IGltYWdl
UmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9sYXN0SW1hZ2UtPnNpemUoKSB9OworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCptX2xhc3RJbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0
cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8vIElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFz
c2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3QgZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhh
dmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRlbyBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhh
dCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFn
ZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0
LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9y
bWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1h
Z2UoKTsKICAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IGU3YmY3YTc2NzMzMGE2NzI3ZjA2MzIxNjE0ZGUxYjBhMzgwN2Y5YWIuLmEwYWY5Yjg3NGNh
ZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5NGI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
CkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKTsKICAgICBib29sIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0zMDEsNyArMzAx
LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+IG1fcGVyZm9ybVRhc2tPYnNlcnZlcjsK
ICAgICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX2xhc3RJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFz
dEltYWdlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3Jn
YkNvbmZvcm1lcjsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uOwogICAgIERlcXVlPFJldGFpblB0cjxpZD4+IG1fc2l6ZUNoYW5n
ZU9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1
NGM0Mjg2NmMyNjU4MDU5YzYxMWFjYzFiYjBlLi43MDhkMzFiMmU5NDdiZTMwMmYxMjY4NmE4MTk2
YTAzZGFmMTQzZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC01NjQsMTAgKzU2
NCwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1cm4gbG9hZGluZ1Byb2dyZXNzZWQ7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7
CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOwor
ICAgIHJldHVybiBtX2xhc3RJbWFnZTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCkBAIC02MDcsNyArNjA3LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSgpCiAgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0K
IAotICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVs
QnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUobV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYy
Niw4ICs2MjYsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAg
RmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAg
RmxvYXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUoKSB9
OworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwg
b3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSkKQEAgLTEyMTksNyArMTIxOSw3IEBAIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVv
RnVsbHNjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUxh
c3RJbWFnZSgpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9s
YXN0SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9s
YXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4
IDA4OGYxZDkyYzk3ZjM5MjViZjlhOWJjMGIyMzc5ZDM1MGJkYmJjYTkuLjg3ODA5NmFkYmQ2ZTI1
ZDQzMTg2YmVlYjBiYWRmNDY4Zjg2Y2U0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBA
IC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ3VycmVudEZyYW1lUGFpbnRlcigp
ID0gZGVmYXVsdDsKICAgICAgICAgdm9pZCByZXNldCgpOwogCi0gICAgICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBjZ0ltYWdlOworICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7
CiAgICAgICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbWVkaWFTYW1wbGU7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBwaXhlbEJ1ZmZlckNvbmZvcm1lcjsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDk4OWZiODlkYTJhYjM4ZDFm
MWMxN2Q1YWZkMWNhODIyNjAyMjdjYjQuLmFjNmNkZTNjOGQ1NzljYmYwYTk2YjAwMzQ0NjE2YTgy
YjNjMGU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTc2Miw3ICs3NjIsNyBA
QCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVv
RnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICB1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpOwotICAgIG1fdmlkZW9MYXllck1h
bmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSk7CisgICAgbV92
aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVu
TGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRlci5jZ0ltYWdl
ID8gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUlt
YWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19j
YXN0PENWUGl4ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyKSk7Ci0gICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IG1faW1hZ2VQYWludGVyLnBpeGVs
QnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7
CisgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFn
ZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KHBpeGVsQnVmZmVyKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCkBAIC05NzUsMTQgKzk3NSwxNCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLmdldCgpOwotICAgIEZsb2F0UmVjdCBpbWFn
ZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSkpOworICAgIGF1dG8mIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZTsKKyAgICBGbG9h
dFJlY3QgaW1hZ2VSZWN0IHsgRmxvYXRQb2ludDo6emVybygpLCBpbWFnZS0+c2l6ZSgpIH07CiAg
ICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlk
ZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOwogICAg
IEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJhbnNmb3JtOwogICAg
IEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3QpOwogICAgIGNvbnRl
eHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0
KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCks
IHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmlu
ZGV4IDk5ZDg1YjNmMmRjOGU3OGE1NmQyYjkxMTdkY2ZiM2NmODBiZjc1ODUuLmI2OWIxMDcwODk2
N2Y4NzVkYjgwYWVjOWQwOWMzNmNkYjNhYzJkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdl
UHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRS
ZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxs
c2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAjZW5kaWYKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJP
YmpDLm1tCmluZGV4IGY2Nzk1M2Q2MzEzYjdkOWI2MmFjNmQxYTZlNjU2YjgwODg0NzcwNGQuLmYx
MThkYjVjM2M1Y2JlYmVkZTQxMWVhNTRkNWVhZjZlY2EyYWY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KQEAgLTEwMyw3ICsxMDMsNyBA
QCBQbGF0Zm9ybUxheWVyKiBWaWRlb0xheWVyTWFuYWdlck9iakM6OnZpZGVvRnVsbHNjcmVlbkxh
eWVyKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsKIH0K
IAotdm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIgY3VycmVudEltYWdlKQordm9pZCBW
aWRlb0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIgKnZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0ciBjdXJyZW50SW1hZ2UpCiB7CiAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgPT0gdmlkZW9GdWxsc2NyZWVuTGF5ZXIpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IHZpZGVvRnVsbHNj
cmVlbkZyYQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVy
TWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKE5hdGl2ZUltYWdl
UHRyIGltYWdlKQordm9pZCBWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UpCiB7CiAgICAgaWYgKG1fdmlk
ZW9JbmxpbmVMYXllcikKICAgICAgICAgW21fdmlkZW9JbmxpbmVMYXllciBzZXRDb250ZW50czoo
X19icmlkZ2UgaWQpaW1hZ2UuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZjU3NTlmYjFlODJm
MDc4Y2JlYzZmYWRjNzMwNmYwMjk1YTUzOTYzZC4uYTA4NDUxMmE1MjM0ZTExYjdlMTAxY2IyOTI4
Y2MyZjBhMzI3YmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCiAgICAgICAgIC8vIEZJWE1F
OiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRv
d24sCiAgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hhbmdlcz8K
ICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1D
QUxheWVyOjpUcmlsaW5lYXIpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRz
KG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRyOwogCiAgICAgICAg
IGlmIChtX2xheWVyQ2xvbmVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDg4NWY3OTlmNmYxMWQ0Zjk1NTFm
NTVhYzQ2ZmNlM2NlNGU4Y2U5NjEuLmFlZjNjMjY4ZjVkMTI0ZDQ3OWU2ZGZmYWQ4YzM0NzNkYzk5
ZTZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERpc3BsYXlMaXN0Owog
CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFn
ZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJs
aWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CkBAIC02MDAs
OCArNjAxLDggQEAgcHJpdmF0ZToKIAogICAgIENvbG9yIG1fY29udGVudHNTb2xpZENvbG9yOwog
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOwot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuY3BwCmluZGV4IDlhNTdlYmUyZDU1YTA3OWMzN2YxY2FiOTZhN2ZiNzNmNWJmNDM5YmEu
Ljk3NzEyOTBmNDM2MjA2ZWI4NTMwZjI1ODRlYjhlM2NmZDdhOWE1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpA
QCAtMTc0LDE2ICsxNzUsMTYgQEAgZW51bSBQYXRoRHJhd2luZ1N0eWxlIHsKIAogc3RhdGljIHZv
aWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBsYXllck9y
aWdpbiwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNp
emUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9
IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgeworICAg
ICAgICBkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4p
LCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRv
d1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhh
LCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBz
YW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0
YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3Rh
dGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0
ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hh
ZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKKyAgICAgICAgZHJhd1BsYXRmb3Jt
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRv
ciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQog
CkBAIC0xOTEsOCArMTkyLDggQEAgc3RhdGljIHZvaWQgZmlsbFNoYWRvd0J1ZmZlcihQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYKIHsKICAgICBzYXZl
KHBsYXRmb3JtQ29udGV4dCk7CiAKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5j
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBjbGlwVG9JbWFn
ZUJ1ZmZlcihwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChsYXllck9y
aWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJ
bWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkK
KyAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3QobGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50
U2l6ZShsYXllclNpemUpKSk7CiAKICAgICBGaWxsU291cmNlIGZpbGxTb3VyY2U7CiAgICAgZmls
bFNvdXJjZS5nbG9iYWxBbHBoYSA9IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhOwpAQCAtODYwLDcg
Kzg2MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7
CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgK
aW5kZXggNTA1YzBhZjQ3ZDdhMGE1MGU5YzE5MDY2ZGQ5M2RlNTk2MWQ2NjkxYS4uM2RkOTAxMzRk
MTQ1YjNhNzA2ZWE1NTU0YWQyMDI4OTJhOTgxZTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
b25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUm
LCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3Qg
VmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9h
dCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3ImLCBGb250U21vb3RoaW5nTW9kZSk7CiAK
LXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFj
ZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd1BsYXRm
b3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYs
IGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3Qq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25TaXppbmcgb3BlcmF0aW9u
U2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhmMGM3MDc2ODIwZDA2YTU1YmE1YzU1ODI0OGMz
Li42ODc4MTA2M2I5MjIxMDlkMGYwZDU4ODY0ZDVjNjI4NmUwODAxODJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQgKzEyMywxNCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25l
c3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9yZGVy
VGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJv
a2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bs
YXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0
YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1Bs
YXRmb3JtSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0
ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25s
eSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28gd2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBA
IC0yNjYsOCArMjY2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZm
ZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86
OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVz
dFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZl
cigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBj
b25zdApAQCAtNjgxLDggKzY4MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQog
CiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFn
ZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBv
cHRpb25zKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpCisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250
ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0
aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlh
bGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKaW5kZXgg
ZmFkYjI0M2U2NzhiNzI3ZjEwYjBiNmIzYjJlOTBmMDU4YmQzOTI1ZS4uYzZhYTc3MThlOWI0MzQx
NWIyNTA2NDkzZWE1YWNjNjgwNTdmODExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWly
by5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICAgICAg
c291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc291
cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
aW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApLT5w
bGF0Zm9ybUltYWdlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBt
X2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBtX2ltYWdlU3Vy
ZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1h
Z2UoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQg
aW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRo
ZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLAogICAgICAgICAvLyB3aGljaCBp
cyB0cnVlIGF0IHByZXNlbnQgYW5kIG1heSBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYW5kIG5l
ZWRzIGFkanVzdG1lbnQgYWNjb3JkaW5nbHkuCiAgICAgICAgIC8vIDIuIEZvciB0ZXhJbWFnZTJE
IHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQgaW4gd2hpY2ggQWxwaGEgaXMgYWxyZWFkeSBQ
cmVtdWx0aXBsaWVkIGluIHRoaXMgcG9ydCwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcAppbmRleCBmYTA5YjgxM2VhNDM1MTY2MGFlYzU2MTMxMTNiMzNlYTg5NjYzMDI1Li5i
NGU5MTE0ZTdmYzY3NTcyZmYzZmFiMjljZmY0NjU3NjlhOGRhYTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4MywyMSArMjgzLDIxIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBj
b25zdCBGbG9hdFJlCiB7CiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CiAgICAgICAgIGF1dG8mIHN0YXRlID0g
Z3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShtX3BsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxw
aGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgICAgICBDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwog
ICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250
ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250
ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0
LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRy
YXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdl
LnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9w
dGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250
ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlLnNp
emUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlv
bnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC00MjMsNyArNDIzLDcg
QEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBCb3VuZHMoKQogdm9pZCBH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFj
ZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAg
ICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIGRlc3RSZWN0KTsKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDhhOTM3ZGEyMzlk
NmQ2Y2RkMGEwNDhjY2NkODM2NzkxMDVkOTdjYWMuLjMxYTBmNTQwMGVlODRlMDhiMGM1ZGQ0Zjhl
NTJmMTk3MzUzNWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03
Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNp
emUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBhYzRi
MWY3OTA3Njg0Y2E2ZGI4NjI3MjEzOTk3ZDRiNTZhODIwZThmLi43ZGExNzBlNTk5MGJlMTg1OTBl
OTFkNGQxY2FhN2QwZTMxMDNmODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgY29uc3Qg
YXV0byYgZGVzdGluYXRpb25Db250ZXh0U3RhdGUgPSBkZXN0Q29udGV4dC5zdGF0ZSgpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5h
bHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRl
KSk7CisgICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsg
b3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRv
d1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmwKICAgICB9
CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0g
JmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0g
ICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKmRl
c3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zv
cm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkZXN0Q29s
b3JTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3Bw
CmluZGV4IDRmMWY3NTcyNmFhODNkODRhZGJiMzcyYWVmNzZkZmM0YzhlZjdiODUuLjkzMTA4ZDA0
ZWM5YjExYmYwZTU0MjU3NmZmM2Q3OTkzNGI4MDdiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCB1bnNpZ25lZCBJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICBy
ZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fc3VyZmFjZS5nZXQoKSk7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNv
cHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZTogewpAQCAtNzcsMTggKzc3
LDE4IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOwogICAgICAgICBjYWlyb19w
YWludChjci5nZXQoKSk7CiAKLSAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwogICAgIH0KIAogICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBtX3N1cmZhY2U7CisgICAgICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1ha2VSZWZQdHIobV9zdXJmYWNlLmdldCgpKSk7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9T
dXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0
CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3I7CiAgICAgaWYgKGNhaXJvX3N1
cmZhY2VfZ2V0X3R5cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1B
R0UgJiYgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJP
X0NPTlRFTlRfQ09MT1JfQUxQSEEpCkBAIC0xMDAsNyArMTAwLDggQEAgTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdl
KCkgY29uc3QKIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZDo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byBzdXJmYWNlID0gY2Fpcm9TdXJmYWNl
Q29lcmNlVG9JbWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjYWlyb1N1cmZhY2VDb2Vy
Y2VUb0ltYWdlKCk7CisgICAgYXV0byBzdXJmYWNlID0gbmF0aXZlSW1hZ2UgPyBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cjsKICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1
cmZhY2UuZ2V0KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggYTY5ZDVlZTBmZjYzZjc3
OTU4MjVkYzY3NjZkNmQxNmI3MjYxZDY1ZS4uMmJiNDAyMjY1MGNmOWMwMWI0NmEyMmY4MTM2ZmYw
Y2JmNWViMjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5k
IDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIHsKIHB1YmxpYzoKICAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2ZUltYWdlUHRy
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4mJik7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjYWlyb1N1cmZh
Y2VDb2VyY2VUb0ltYWdlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJm
YWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAppbmRleCAwNWMwZjgxY2IzNDE5MGNiMzczYmQ4NDM0
MTU4YjRkMDMzMDFhYjA0Li5mZGM3ZTdkNjVmZGNhOTEzZTcwY2M5ODY4MmVjM2M0NDM5Njc3YTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDM0ICszNSwyOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVy
biBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworICAg
IHJldHVybiBjYWlyb1N1cmZhY2VTaXplKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiB9CiAKLWJv
b2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29s
IE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFpbWFnZSB8fCBj
YWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFn
ZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VT
aW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3Ig
TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFp
bWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYg
KHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAg
IGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNF
X1RZUEVfSU1BR0UpCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9wbGF0Zm9ybUlt
YWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCiAgICAgICAgIHJldHVybiBD
b2xvcigpOwogCi0gICAgdW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5z
aWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAg
dW5zaWduZWQqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkpOwogICAgIHJldHVy
biB1bnByZW11bHRpcGxpZWQoYXNTUkdCQShQYWNrZWRDb2xvcjo6QVJHQiB7ICpwaXhlbCB9KSk7
CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotfQotCi12
b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQordm9p
ZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRl
eCBjZTUyNzgwNjBhMGRmNWMxMGZkMTI4Zjk2ZGY4OTNhZjg2YTAyY2YxLi41NjBmNzQ3YThmYjY0
ODFiZTRhMzAxODU4NTAwYWE5ZmExNjBmNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKQEAgLTM1LDExICsz
NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY2Fpcm9fcGF0
dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uoc3VyZmFj
ZS5nZXQoKSk7CisgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9j
cmVhdGVfZm9yX3N1cmZhY2UobmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAK
ICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2VyIHNwYWNlIGl0c2VsZgog
ICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgobV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYTdkYmU2ZTZiZTVmNTYyNTJj
M2M3MGIxMjg4MGUzYjY0NGJhNGM5OS4uZmU5YWQzNzY3MzMwNzg2NTg0MGEzZmMwMDNkNWEwMTZm
MDg2ZmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJU
b0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ0LDIzICs0NDQsMjMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QKIAogICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UucHJlVHJh
bnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkg
PT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKTsKIAotICAgIGZsb2F0IGggPSBDR0ltYWdl
R2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWln
aHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXpl
KCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0gICAgICAgIHN1Yklt
YWdlID0gdGlsZUltYWdlOworICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBv
ZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3Jp
Z2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBz
dWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5k
ZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09
IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOworICAgICAgICBz
dWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3
ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0
aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNr
IHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZs
b2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdp
ZHRoKHRpbGVJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgp
LndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgo
KSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8g
c25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0
aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxl
IGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpAQCAt
NTA5LDcgKzUwOSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQogCiAgICAgRmxv
YXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXplKCk7Ci0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gaW1hZ2UgPSBuYXRp
dmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwogCiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTog
VGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBt
YXNrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGJiOTFkZWM5MTIyNGQ0MTk3ZWNh
ODFiYmRiYzRlMDU2N2U0M2MwNGQuLmU3NTIyNjQ5NWJkOTQzMzczODU5ZjE2OGY1YmE4NTJiYmI4
Y2M4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zMzgsOCArMzM4LDkgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGkKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZS5nZXQo
KSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlLmdldCgp
KTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBtX2NnSW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkp
OworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKICAg
ICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0zNDcsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICAv
LyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUgaW1hZ2UgcmUt
cGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNvbG9yIHRhYmxl
IGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKKyAg
ICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdl
LmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JTcGFjZUdldE1v
ZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRl
eGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQ7CkBA
IC0zNjIsMjIgKzM2MywyNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0bWFwQ29udGV4
dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1f
aW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1f
aW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhl
IG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJp
dG1hcCBjb250ZXh0LgotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwotICAgICAgICBtX2NnSW1h
Z2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBOYXRp
dmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFw
Q29udGV4dC5nZXQoKSkpKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAg
ICAgfQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNv
bXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0lt
YWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgaWYgKCFtX2NnSW1hZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1Bl
ckNvbXBvbmVudChpbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1h
Z2VHZXRCaXRzUGVyUGl4ZWwoaW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50
ICE9IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJp
dHNQZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRC
aXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBD
R0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3Vy
Y2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBp
bnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90
IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MTksNyArNDI0LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGkKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvTm90aGluZzsK
ICAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBzd2l0
Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgeworICAgIHN3aXRjaCAo
Q0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAg
ICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvVW5tdWx0aXBseTsKQEAgLTQ2MywxNCAr
NDY4LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VG
b3JtYXQgPT0gRGF0YUZvcm1hdDo6TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFn
ZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CisgICAgbV9waXhlbERhdGEgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFn
ZS5nZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
Q0ZEYXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgc3Jj
VW5wYWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0
Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBD
R0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcg
PSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYg
KHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBA
IC01MjksOCArNTM0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICAgICAgZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgMCkpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
Z0ltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKLSAg
ICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVm
YXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwg
cm93Qnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCisgICAgICAgIGRhdGFQcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBD
U1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBv
bgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0
aGUgY29ycmVjdApAQCAtNTQzLDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvCiAg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgwLCAtaW1hZ2VTaXplLmhlaWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRvTm90SW50ZXJwb2xhdGUpOwotICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6
Q29weSB9KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlU2l6ZSwg
Y2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3Np
dGVPcGVyYXRvcjo6Q29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCmluZGV4IDViMjBkODkyZWQ4YmJjZjYwMTgxNmE2MzY3NmEwMGYxZmE1
YzE3YjMuLjhjNWFiZjdjOTNlNzk3MTNmNzEzYTZkYmRlOWJjMDE3ZjIxZjg5YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAKQEAgLTc0LDE3ICs3NCwxNyBAQCBzdGF0aWMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2Us
IGNvbgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRl
Qml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBp
bWFnZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKFJlZlB0cjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYg
KHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJl
c29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vz
c2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUpOworICAgICAgICBpbWFnZSA9IE5hdGl2ZUlt
YWdlOjpjcmVhdGUoY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSwgYmFja2VuZFNpemUpKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lk
dGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAg
ICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNv
cHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVj
dChGbG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxTaXplOwotICAgICAgICBDR0NvbnRleHREcmF3
SW1hZ2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VT
aXplSW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBpbWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwor
ICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSkpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2Up
CkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+CiAKIFJlZlB0cjxJbWFn
ZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlC
ZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsK
LSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdl
OwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9
PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNlCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGQKICAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxl
KTsKIAogICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9
PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkK
LSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tl
bmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RD
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAt
MTM4LDcgKzEzOCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5k
Ojp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAgICAgYXV0byB1dGkgPSB1
dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBp
bWFnZTsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByb3RlY3RlZFBpeGVsQXJyYXk7
CiAKICAgICBpZiAoQ0ZFcXVhbCh1dGkuZ2V0KCksIGpwZWdVVEkoKSkpIHsKQEAgLTE1OCwxMCAr
MTU4LDEwIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpCiAKICAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGUocGl4ZWxBcnJheURpbWVuc2lvbnMud2lkdGgoKSwgcGl4ZWxBcnJh
eURpbWVuc2lvbnMuaGVpZ2h0KCksIDgsIDMyLCA0ICogcGl4ZWxBcnJheURpbWVuc2lvbnMud2lk
dGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtD
R0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtD
R1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KSB7Ci0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwor
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZv
cm1JbWFnZSgpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5
KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgp
OwogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgw
LCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBi
YWNrZW5kU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4
dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJh
Y2tlbmRTaXplKCkuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNw
cAppbmRleCBmZmVmNjYzMzBkMWZiZTI2YzRjOGYwMjNmZjk0ZTc4ODUyYzZjOTIwLi42YzAzM2M2
MzgzOGFmZTFhMGY2MjdkNmI0NGExNTQ2ZjNmZWVlNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuY3BwCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBHcmFwaGljc0NvbnRleHQmIElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gKm1f
Y29udGV4dDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2gg
KGNvcHlCZWhhdmlvcikgewogICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpKSk7CisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSkp
OwogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZSgKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBt
X2JhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKICAgICAgICAgICAg
IGNhY2hlZENHQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpLCBEZWZhdWx0Qml0bWFwSW5mbywgbV9k
YXRhUHJvdmlkZXIuZ2V0KCksCi0gICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7CisgICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0KSkpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggYjliZDdmMWJhYjQ3ZmY3Yzc5NzQzNDgzM2MyN2E1NDk3
MzEwODI4NS4uN2QyMzNkMjIyNzg1YWQzZGRmMDYzYzRhODY0OGZkZmZhY2U3Y2Y5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBkYmMzYjdlYjhiM2Qx
YWQ4OGQwYWIzZjBlZWY5MGE3YzhkODVlMDMwLi5hOWQ1NDg1YTI2MWI1YTBkZjUzZDJiODk3MTBh
ZTgzN2ZiZjliMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTEzNSwxNCArMTM1LDE0IEBAIENvbG9yRm9ybWF0IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6YmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gQ29sb3JGb3JtYXQ6OkJH
UkE7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewotICAgIHJldHVybiBJT1N1cmZhY2U6OnNp
bmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShtX3N1cmZhY2UpKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRy
YXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBzaW5rSW50b05hdGl2ZUltYWdlKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2Us
IG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQog
CiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggMzIzMDk0ZWE3OTVjNWQyNDgzYzg4NDQwMzEyNGE5MDQw
Y2M3NDBmYi4uZjUwOWVlZTY1YTcyMmUxMjAxZmZjMGZiNTc3Y2ZiODJiZmVjNjkwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgog
ICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGV4dGVy
bmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDg5MGEwNzE4MTA5MjNmNzViYTBlMjI5M2M0NmJlYTg3
NDQ1YWJhMGMuLmNkYWYxNWMxMDlkYzc5NzI5N2U5YjEwMjk0MzcwYTFlMjc1MDZmZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXJDRzo6ZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAg
IHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQog
ewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9w
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAppbmRleCA0Njc5MjUxMTM1OTUxY2QxYjUzOGJkZGYxZWNlNTQ1MDZkZGY2
YjNiLi44YmEzMDA5ZDNiNmI2MzQ5NzNiYWY4ZTlhMTkwNTczMTNkNTUxNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5n
QXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQp
IGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAK
aW5kZXggNDAwZDZlZjBhNDU3N2Q1ZDdjYzViZDljYjY0NmE1YmFkZWJkYWRjMi4uMzQ0ODAwYmEx
ZDdmNjZlNTRhZTNjM2Y4ZTJkMTIyNjA4Yzg1NTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjkgKzI4LDI1
IEBACiAKICNpZiBVU0UoQ0cpCiAKLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKLSNpbmNsdWRlIDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNp
emUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0ludFNpemUg
TmF0aXZlSW1hZ2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBpbWFnZSA/IEludFNpemUo
Q0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQo
KSkpIDogSW50U2l6ZSgpOworICAgIHJldHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChtX3Bs
YXRmb3JtSW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fcGxhdGZvcm1JbWFnZS5nZXQo
KSkpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENHSW1h
Z2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8oaW1hZ2UuZ2V0KCkpOworICAg
IENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9wbGF0Zm9ybUlt
YWdlLmdldCgpKTsKICAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0KSAmJiAoaW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCi1Db2xvciBuYXRp
dmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CitDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkK
KyAgICBpZiAoc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigp
OwogCiAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQpAQCAtNjAsNyArNTYsNyBA
QCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgQ0dDb250ZXh0U2V0
QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgIENH
Q29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEs
IDEpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIG1fcGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAK
ICAgICBpZiAoIXBpeGVsWzNdKQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2s7CkBAIC02OCwxMSArNjQsMTAgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlk
Q29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0K
IAotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK3ZvaWQgTmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKCkKIHsKICNpZiBDQUNIRV9T
VUJJTUFHRVMKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6
OmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworICAgIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNs
ZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBjYmY2
MjRmNjI3M2MzYjU3YWI5ZjNkYmNjNWFiMTdkNWUzMTk2ZDRhLi42OTU0YzU2NjU3MGFkN2FlNmMx
ZTc2MGYwNzg3ZDM3NzBhY2FhNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTYzLDEwICs2MywxNyBAQCBDR1BhdHRlcm5S
ZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dXNlclNwYWNlVHJhbgogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0x
KTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkp
OwogCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5h
dGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1J
bWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgCisgICAgaWYgKCFwbGF0
Zm9ybUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIElmIHdlJ3JlIHJl
cGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRl
cm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmct
ZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAg
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHRpbGVJbWFnZSgpLm5hdGl2ZUlt
YWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNw
YWNpbmcpOworICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9y
bUltYWdlLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTc3
LDEwICs4NCwxMCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAg
PSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRo
ZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5k
ZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1J
bWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkubGVha1JlZigpOworICAgIENHSW1hZ2VS
ZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVy
bkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3Jt
SW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRl
cm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICBy
ZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKGltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
eFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0
dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAwMmFkYTBkMWIxOTI0NzEzZmFlNTg0ZWVhMTA3ZDlk
YTM0MmRkNzA0Li4zOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0x
NzcsNyArMTc3LDcgQEAgUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMoU291cmNlR3IKICAgICBpZiAoaXM8QWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKSkKICAgICAgICAgcmV0dXJuIFtDSUltYWdl
IGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqc291
cmNlSW1hZ2UpLnN1cmZhY2UoKS5zdXJmYWNlKCldOwogICAgIAotICAgIHJldHVybiBbQ0lJbWFn
ZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS5nZXQoKV07
CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlO
YXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogfQogCiBSZXRhaW5QdHI8Q0lJ
bWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJp
eChjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJ
bWFnZT4+JiBpbnB1dEltYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApp
bmRleCAxYzliN2ExNDFkNDJiZTZjYjVjYTk3Njg4ODFhNzE1YWY4MWFkNTIxLi5jN2VkZDc1OGQ5
OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBmMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZWZkMWFlMTYxMTIxZGI5MWY4ZmVk
ZGVmM2JkMGQ1NjMxMzQxMTdiMC4uYmNiM2YzZWYwMTU3NTkyYzE3MzliZmJkYWFkOWRhOTJjNDY0
YjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMjgwLDcgKzEyODAs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZh
bHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
blJlY3Q7IH0KQEAgLTEyOTQsNyArMTI5NCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCiBwcml2YXRlOgotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgUmVmPE5h
dGl2ZUltYWdlPiBtX2ltYWdlOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKQEAgLTEz
MTQsNyArMTMxNCw3IEBAIHZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxEcmF3TmF0aXZl
SW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8TmF0aXZlSW1hZ2VQdHI+IGltYWdlOworICAgIE9wdGlvbmFsPFJlZjxOYXRpdmVJ
bWFnZT4+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCBmMTQyOWQ4M2E5MzVlYmQ1MWE2ODk1NzVlMDU4ODdlYjBiNTEzNzhk
Li5iZjNjYjM0MDE0MWQzZWY3YTAxNmU0ZTllZWM1N2NhZWVhZGRhY2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBS
ZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWMKICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZl
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDQ2NDhmNmRkOTFjYTg1ZWE2MzhhOGVmZDI0MzQ4
ODRkNjUwZTJhYzYuLmU2NTk2YmU4MjJiZTc5YzFlZmFjM2U4MTE3M2MzYTIzNDBlNzljMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTA2LDcgKzEwNiw3IEBA
IHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdl
OjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggZGM5OTRiNzMxZmE4
OTU0ZWY4ODAzYWRjMjhmNGYyNzFlZmY1ODliNy4uYzBhYWUzYTdkNDllZjJiN2Q1N2E5MTY1MTRl
NjBmOTg5NmQ3ZDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
QEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZShXVEZNb3ZlKHNhbXBsZSksIHByZXNlbnRhdGlv
blNpemUpKTsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0CisgICAg
UGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1h
Z2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1faW1hZ2Ut
PmltYWdlKCkubmF0aXZlSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlKCku
bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0KICAgICB2b2lkIGRyb3BJbWFn
ZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIApAQCAtMTc5LDcgKzE3OSw3IEBAIHVuc2lnbmVk
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBMb2NrSG9sZGVyIGhvbGRlciB7IG1fc2Ft
cGxlR2VuZXJhdG9yTG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
aW5kZXggNmUyZWEwNzk3YmQzY2ZkM2U5ZDQ1MDA4NDk2OGU4ZDMzMzk1OWE3ZC4uNTg2OWQ4Yzg2
YTQxOTRkM2UzODhlYzkyMGU1MjU3ZTc4MjY5MWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFs
bG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmluYWwgeyByZXR1cm4g
aW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGM0Y2UxMmRiNzBmYjA5ZDhiYjliMjJlMTEw
ZDJiNzNmNWU2NzkyMTguLmYxZjg3ZmJlM2VhNDU5Y2VjYzYyNWJlNmM1NGUzNmEwYWEwMDVhMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0zMjE1LDcgKzMyMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udAogICAgIHJldHVybiBt
X3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCps
YXllckJ1ZmZlci5nZXQoKSwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKaW5kZXggMThlNmQ2ODg2NjdkN2MzMmMxNWU4ZmNmZGU3ZGJjNDk5YjUxZGFl
Yi4uMGFiMmM2YzkxNGJmZTNjYWQ2MTI3ZWQ5NjA2MmU3Mzc5MDhhZDEwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjE2LDcgKzIxNiw3IEBA
IHB1YmxpYzoKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUVu
YWJsZWRWaWRlb1RyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCBjZDUwYTFlODZjMjMxMjZmZGI4OTE0ZGEzYTM5NzAx
ZmRkZDZhNjYxLi43MDI4NGRiZTI3MmUzZTI4MjQ4MDRhOWM3Y2RhMDZiN2M0Y2I2MzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAK
QEAgLTU2LDE3ICs1NiwyMiBAQCBSZWY8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZShjb25zdCBjaGFyKiBuYW1lKQogCiBHZGtQaXhidWYqIEJpdG1hcEltYWdlOjpnZXRHZGtQaXhi
dWYoKQogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIHJldHVybiBzdXJmYWNlID8gY2Fpcm9TdXJmYWNlVG9H
ZGtQaXhidWYoc3VyZmFjZS5nZXQoKSkgOiAwOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgeworICAgICAgICBhdXRvJiBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIGNhaXJvU3VyZmFj
ZVRvR2RrUGl4YnVmKHN1cmZhY2UuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogI2lmIFVTRShHVEs0KQogR2RrVGV4dHVyZSogQml0bWFwSW1hZ2U6Omdka1RleHR1cmUo
KQogewotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2Zvcm1hdChzdXJmYWNlLmdldCgpKSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsKICAgICBhdXRv
IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSk7CiAg
ICAgYXV0byBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCmluZGV4IDgxMzZjMWZmZjQ1YjlhMzE3N2E5NjhiYjZmNjJiMmRmODkwN2RhNTUuLmE5Nzc0
N2ZmNmY0ZWUyMjJjY2E0ZTRlNjQzNTM1OGU3MWM4OWJhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw5ICszMywxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKLSAgICA6IG1fY2dJbWFnZShpbWFnZSkKK0ljb246Okljb24oUmVmUHRyPE5h
dGl2ZUltYWdlPiYmIGltYWdlKQorICAgIDogbV9jZ0ltYWdlKFdURk1vdmUoaW1hZ2UpKQogewor
ICAgIEFTU0VSVChtX2NnSW1hZ2UpOwogfQogCiBJY29uOjp+SWNvbigpCkBAIC00NywxMiArNDgs
MTIgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4mIGltYWdlKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShQbGF0Zm9y
bUltYWdlUHRyJiYgaW1hZ2UpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2UpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEljb24oTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkp
KTsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCkBAIC02MiwxMyArNjMsOSBAQCB2b2lkIEljb246OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAg
IGZsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgZmxv
YXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIEZsb2F0
U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQpOwotICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9p
bnQoKSwgc2l6ZSk7Ci0KKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50Ojp6ZXJvKCks
IG1fY2dJbWFnZS0+c2l6ZSgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6OkhpZ2gpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKG1fY2dJbWFnZS5nZXQoKSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCptX2NnSW1hZ2UsIHNyY1JlY3Quc2l6ZSgpLCBkZXN0UmVj
dCwgc3JjUmVjdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCA2OTA4ZjEwNzYzMmU4OTAxOGNhOTBlOTkwZjM0NDg3
N2I5NGI2ZmI5Li5jYWQ5YmIyNzUzZTM0ZWUxOTViYWU1YjU1ODY3NTNjMTI2ODBmMzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBA
IC03NCw3ICs3NCw3IEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAotUmV0
YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBW
ZWN0b3I8TmF0aXZlSW1hZ2VQdHI+JiBuYXRpdmVJbWFnZXMpCitSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxSZWY8TmF0aXZl
SW1hZ2U+PiYgbmF0aXZlSW1hZ2VzKQogewogICAgIC8vIElmIG5hdGl2ZUltYWdlcy5zaXplKCkg
aXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxp
ZCBkYXRhCiAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9u
Q3JlYXRlV2l0aERhdGEgd2lsbCBmYWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwK
QEAgLTg5LDcgKzg5LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZS
ZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHIKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1h
Z2VzKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQo
KSwgbmF0aXZlSW1hZ2UuZ2V0KCksIDApOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQo
KSk7CiAgICAgcmV0dXJuIGRhdGE7CkBAIC0xMjgsNyArMTI4LDcgQEAgUmV0YWluUHRyPE5TSW1h
Z2U+IEJpdG1hcEltYWdlOjpzbmFwc2hvdE5TSW1hZ2UoKQogICAgIGlmICghbmF0aXZlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBkYXRhID0gdGlmZlJlcHJlc2Vu
dGF0aW9uKHsgbmF0aXZlSW1hZ2UgfSk7CisgICAgYXV0byBkYXRhID0gdGlmZlJlcHJlc2VudGF0
aW9uKHsgbWFrZVJlZigqbmF0aXZlSW1hZ2UpIH0pOwogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmlu
ZGV4IGIwMDc5OWZlN2QyMjE0YzU1MGE4M2EzN2FmMTg4N2EyNTA5ZjJlNjQuLjlmMTEyNGZlYTcw
NzY2ZTZlMWM2NGJkYjVjN2M2M2IwYWU5YTQ1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcApAQCAtMTA5LDExICsxMDksMTQgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIG5h
dGl2ZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShtX2lt
YWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc2l6ZSA9IG5hdGl2ZUltYWdl
U2l6ZShuYXRpdmVJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlSW1hZ2Up
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBzaXplID0gbmF0aXZlSW1hZ2UtPnNpemUoKTsKIAotICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZUhhc0FscGhhKG5hdGl2ZUltYWdlKSA/IEJp
dG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFzQWxw
aGEoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0Zs
YWcpOwogI2lmIFVTRShDQUlSTykKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFjZSA9
IG5hdGl2ZUltYWdlLmdldCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAg
YXV0byogaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1
cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwg
SW50UG9pbnQoKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCmluZGV4IDhiYzVkMjdiZTYzNWVmZGQ1YTdkMWY2YzQ3M2YyOGQ4OGYyOTY1OGEu
LjdiMjk5YTVmNDcxOTdlOWIwYjA3MjJiNjM0ODE0NWJiMGE2ODMxYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01
NTQsMTQgKzU1NCwxNCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIC8vIEZJWE1FOiBO
b3QgaW1wbGVtZW50ZWQuCiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJh
dGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBG
bG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRl
PiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAg
ICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVy
cmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRl
eHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigp
LCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3
UGxhdGZvcm1JbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCks
IGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01
NzIsNyArNTcyLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAgICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRl
LmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RHJhd05hdGl2ZUltYWdlPihuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC01OTIsOCArNTkyLDggQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QKICAgICB9OwogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwotICAgIGlmIChh
dXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAg
ICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50
U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKSk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxE
cmF3UGF0dGVybj4obmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSwgSW50U2l6ZShpbWFnZS5z
aXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRp
b25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC0xMDc3LDggKzEwNzcs
OCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZm
ZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UuZ2V0KCkpLCBkZXN0UmVjdCkpOwor
ICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpCisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXgg
NjkxZTc0MTgwMDNlNTc1OGE2MDQ0ZjNjOTc5MWIzMTA4YWQzN2MyZi4uNjZlYWRlODVkYjFiNTE4
MTNmYWIzYjc1NjYzZmRhZWNhZGY2NjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJ
bWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwg
V2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1Bh
dHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAppbmRleCA4MjZkMmRhNWJkZWViNjc5NWZkMDdmMTUxNDI0MTgwYzhhYjVk
MGM5Li5hNjExMDkyZWM5MTQ3MDA5MjI2MGQ4YjA0YjdjYTM1MWM3NmY0NmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1
cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNv
CiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBh
dXRvIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAgICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwogCiAj
aWYgVVNFKENBSVJPKQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2Uu
Z2V0KCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwogICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGJ5dGVz
UGVyTGluZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlm
IFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDY3N2RlN2M5MjA5OTY2ZDc2OGI1YTAwZjAxYTNjMTdiYjI1MzZmOTcuLjMwMWQ3ODdk
MTIzZjlkZTI1MzZmODg5MDRkNTk1NzExYjhlYzUxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzksNyArMzksNiBAQCBSZWY8R3JhcGhpY3NMYXll
cj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBH
cmFwaGljcwogCiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpCi0gICAgLCBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jaGFuZ2VNYXNrKE5vQ2hhbmdlcykKICAgICAsIG1f
bmVlZHNEaXNwbGF5KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCkBAIC0yOTQs
MjIgKzI5MywyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewogICAgICAgICAvLyBN
YWtlIHRoZSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVh
bGl0eSBvbiBhIE5hdGl2ZUltYWdlUHRyIGlzIGEgdmFsaWQgd2F5IHRvIHRlbGwgaWYgdGhlIGlt
YWdlIGlzIGNoYW5nZWQuCisgICAgICAgIC8vIFRoaXMgY29kZSBtYWtlcyB0aGUgYXNzdW1wdGlv
biB0aGF0IHBvaW50ZXIgZXF1YWxpdHkgb24gYSBQbGF0Zm9ybUltYWdlUHRyIGlzIGEgdmFsaWQg
d2F5IHRvIHRlbGwgaWYgdGhlIGltYWdlIGlzIGNoYW5nZWQuCiAgICAgICAgIC8vIFRoaXMgYXNz
dW1wdGlvbiBpcyB0cnVlIGZvciB0aGUgR1RLKyBwb3J0LgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuZXdOYXRpdmVJbWFnZVB0ciA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIW5ld05hdGl2ZUltYWdlUHRyKQorICAgICAgICBhdXRvIG5ld05hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG5l
d05hdGl2ZUltYWdlUHRyID09IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKQorICAgICAgICBp
ZiAobmV3TmF0aXZlSW1hZ2UgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBuZXdOYXRp
dmVJbWFnZVB0cjsKKyAgICAgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuZXdOYXRpdmVJ
bWFnZTsKICAgICAgICAgaWYgKCFtX2NvbXBvc2l0ZWRJbWFnZSkKICAgICAgICAgICAgIG1fY29t
cG9zaXRlZEltYWdlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsK
ICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAg
ICAgICAgIG1fY29tcG9zaXRlZEltYWdlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZh
Y3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9j
b21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPSBudWxscHRyOworICAgICAgICBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gbnVsbHB0
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
M2IzYTQ4MzMwMTVjNWM3OWNkNmU2YzkzMGUyYjU3N2Y0MTRmNDE1NC4uMjFjMzdlOTAwMDAwNGNj
ZGRkNmY5ZjUzZDMwMjgzNjNiZDUxMDY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTE3LDE0ICsxNywxNCBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogKi8KIAotI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCi0jZGVm
aW5lIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAg
ICBUZXh0dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0aXZlSW1hZ2VQdHIg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1hc2s7CkBAIC0xNzUs
NiArMTc1LDQgQEAgcHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19HUkFQSElDU0xB
WUVSKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLCBpc0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKCkpCiAKLSNlbmRpZgotCi0jZW5kaWYgLy8gR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXJfaAorI2VuZGlmIC8vICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IGQ1MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMuLjcxMzM5MjRjOTFi
OTI3ZjkxMDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMzgsNyArMTM4LDYg
QEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlw
ZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRq
dXN0bWVudChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1MYXllcihmYWxzZSkK
ICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
KDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7
CkBAIC01ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1hZ2UgPT0gaW1hZ2Ug
JiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQdHIpCisgICAgYXV0
byBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgOiBudWxscHRyOworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFn
ZVB0ciA9IG5hdGl2ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0gbmF0
aXZlSW1hZ2U7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2Up
OwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4LDExIEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCkKICAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5nU3RvcmVDbGllbnRD
aGFuZ2VkID0gdHJ1ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNraW5nIHByZXNlbmNl
IGFjY29yZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0gICAgaWYgKG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
KSB7CiAgICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAgICAgIGF1dG8mIGlt
YWdlID0gKm1fY29tcG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3QgaW1hZ2VJRCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1aW50cHRyX3QgbmF0
aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZVB0ci5nZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIEltYWdlQmFja2luZyBv
YmplY3QgaWYgdGhlIHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAgICAgaWYgKG1fbmlj
b3NpYS5pbWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2YzkxZjAzOTkxOTJlZjk1
YzkyNGVjZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVkMzcyNGE2MjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCkBAIC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVlZHNEaXNwbGF5Owog
CiAgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1f
Y29tcG9zaXRlZE5hdGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRpb25TdGFydGVkVGlt
ZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX3JlcXVl
c3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCmluZGV4IDg4
MzVmODhkMWJiY2QyMDNjMzI1NjJkYTI0MTRjYmMyN2I2ZmIwZjguLjUyNWExNjM0MWViZDVmZTY0
MTlkODJkODBhMDQzMDRkYmE3MjJkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCkBAIC04MDQs
NyArODA0LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGwKIH0KIAogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0
bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMs
IGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAg
ICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBiaXRtYXBTaXplKGltYWdlKTsKICAgICBDT01QdHI8
SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKQEAgLTgxMywxMCArODEzLDEwIEBAIHZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElX
SUNCaXRtYXAqIGltYWdlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0g
Yml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkpOwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3UGxhdGZv
cm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKIH0K
IAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3Jt
Q29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsK
ICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFnZS0+R2V0U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmgKaW5kZXggNzRhMTAzNjcwOWYzODU1Y2U4ZDU0Zjc1ZWNjMzZmMzFkODYzMmM1YS4uNWQxOTYw
ODBjZGU0NTUwNzA1YzM5N2VmOTljOTZjODQ5Njg3OTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaApA
QCAtMTI4LDggKzEyOCw4IEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBT
aGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGb250JiwgZG91YmxlLCBjb25z
dCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlwaHMsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhv
cml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+JiwgZmxv
YXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
Q29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3Rh
dGUmKTsKK3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJ
RDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBj
b25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYp
Owogdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIENPTVB0cjxJRDJE
MUJpdG1hcD4mJiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAK
aW5kZXggNTdiYTg1OGZmOTljMmRiMjlmNWQ5MTQ5MmU2YWFjOGVkOTc0ZWM5OS4uM2E2OGRjM2Fh
MDE1NTM2ODQ2NGY1MTcyMzVlYzBhMzE5ZjdkNTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3Rv
cmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0
KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGM1M2Q4YmY4NWMwOTkzODgy
OTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMuLjg4YTY1ZjdiYmVjM2VhMTRlNWRlNDY2NGM0OGMxMDA2
MWVkYmUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0y
ODMsMTAgKzI4MywxMCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0CiAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0
YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwg
aW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRl
LmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBEaXJlY3QyRDo6ZHJh
d05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBE
aXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOTVlYjM3MGI3NWJhZGUwMzlkNmY5NDg3MmFlYWY0
Y2YxZTVlNTNjYy4uYzE5N2I0ODljMjkyNmNhNjU4ZDczNWU3ZTEzM2Y5MjE4MGZmYzQxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNzEsNyArNzEsOSBAQCBwdWJs
aWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGls
ZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOworICAgIAorICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
LmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4YzkyOGUzYWNlZjIyZTY5N2I2NGU4MWM1Yzk0Li42NTZj
YjE0ZTcyODhmMjNhODkxN2YyMjg4OWRhNzNlOWJjOTRhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3Jl
YXRlKGMKICAgICBpZiAoIWJpdG1hcENvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5h
dGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGJpdG1hcDsKICAgICBI
UkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZiaXRtYXApOwogICAgIGlmICgh
U1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpjcmVhdGUoYwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOwogfQogCi1JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRyJiYgYml0bWFwKQorSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUltYWdlUHRyJiYgYml0bWFw
KQogICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChXVEZN
b3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpmbHVz
aENvbnRleHQoKQogICAgIGNvbnRleHQoKS5mbHVzaCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFw
VGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPnJl
bmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKQEAgLTEzMywxMCAr
MTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5CiAKICAgICB9CiAKLSAgICByZXR1cm4g
aW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwog
fQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3Nhcnko
SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdl
LCBjb25zdCBJbnRTaXplJiBib3VuZHMpCitzdGF0aWMgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVD
cm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFy
Z2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKIHsKICAgICBG
bG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2UgPyBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpIDogRmxv
YXRTaXplKCk7CiAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJn
CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHBy
ZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UKLSAg
ICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAg
ICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRm
b3JtSW1hZ2UoKTsKIAogICAgIGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJ
RDJEMUJpdG1hcFJlbmRlclRhcmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiAg
ICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFy
Z2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBw
cmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAgUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRp
b24gcHJlc2UKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJuIGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LmdldCgpLCBX
VEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2
ZVJlc29sdXRpb24pOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQor
UGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJp
dG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogewogICAgIGxvYWREYXRhVG9C
aXRtYXBJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCmluZGV4
IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0OTk0NzkyNDZjNDU3ZGMyNjEuLjFkNTc0YWVlY2RiOWQy
MjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRl
OwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
PSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxJ
bWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRlOwpAQCAtNTks
NyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2JpdG1hcDsKKyAg
ICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThjMzc2ZTg0ZjkzYjlkNGU5MjEzM2Q1NTNjZDNhNGIuLjZk
YWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2RhNDM3MjJjOGQ0MTZmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAg
aEJpdG1hcCkKICAgICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFrZXMgb3duZXJzaGlwIG9mIHRoaXMu
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIAotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShjZ0ltYWdlKSkpOworICAgIHJldHVybiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY2dJbWFnZSkpOwogfQogCiBib29sIEJpdG1hcEltYWdl
OjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQpAQCAt
OTEsOCArOTEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNp
emUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFt
ZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsr
aSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0
KCk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGlt
YWdlLT5zaXplKCkgPT0gc3JjU2l6ZSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAg
ICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6
ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cAppbmRleCBkNGVhZmM1OTlhMDBmMjM5NTc4OTJlM2NhYTJlODVlYmNlMzgwNWMwLi4yY2VjOTlk
YzcyOWZlNjVlMDg1NGVlZTcyZGZjNGVkN2FmMDk1MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Mywx
NyArOTMsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXpl
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVz
ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kp
IHsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7Ci0gICAgICAg
IGlmICghc3VyZmFjZSkKKyAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOworICAgICAgICBpZiAoIW5hdGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5zaXplKCkg
IT0gc3JjU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
dXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsK
LSAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKLSAgICAg
ICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIHsgY29tcG9zaXRlT3AgfSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJl
bnRGcmFtZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBzaXplX3Qg
Y3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0g
aTsKKyAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3Jj
U2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKKyAgICAg
ICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJh
Y2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
aW5kZXggMjFjMTllYzYzYjU0NjkwZmNjMjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4
ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFlOTFlNjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFy
Z2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIG1fcmVuZGVy
VGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJE
aXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0Mjdi
MjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAuLmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2YWQw
YjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBm
aW5hbDsKICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
PSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggOTBm
NzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkxODNmY2FmOGE0OGM5Zi4uYTY0YjQ1NjhiN2NjNTM1NzQ4
YjBiZDYwYzEzMGY1OWQxMWQxZDUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtMjYs
MTIgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5o
IgogCi0jaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEaXJlY3QyRE9wZXJhdGlvbnMuaCIK
LSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJE
LmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgpAQCAtNTAsNjAgKzQ2LDI5IEBAIHN0YXRpYyBJV0lDSW1h
Z2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKICAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rvcnk7
CiB9CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoKSBjb25zdAogewotICAgIFVJTlQgd2lkdGgg
PSAwOwotICAgIFVJTlQgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1
cm4geyB9OwotCi0gICAgcmV0dXJuIGltYWdlLT5HZXRQaXhlbFNpemUoKTsKKyAgICByZXR1cm4g
bV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6Omhh
c0FscGhhKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBwaXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZv
cm1hdCgpOworICAgIEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUlt
YWdlLT5HZXRQaXhlbEZvcm1hdCgpOwogICAgIHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUg
IT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZl
SW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8
fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKHNpemUo
KSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0KICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgYXV0byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKTsKLQotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRo
YXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNp
emUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwotCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUg
Y29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAg
aXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVj
dCA9IHNyY1JlY3Q7Ci0gICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKLSAg
ICAgICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBz
cmNTaXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwotCi0gICAgYXV0
byYgc3RhdGUgPSBjb250ZXh0LnN0YXRlKCk7Ci0gICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZSgqcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOwotfQotCi12b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJp
bWFnZXMoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSNpZiBDQUNIRV9TVUJJTUFHRVMK
LSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGltYWdl
LmdldCgpKTsKLSNlbmRpZgogfQogCi0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1
cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUxZDY2ZDVj
MC4uZWRlZDdlOGRkMjNhYmIzNjBlOGRhYjQ0MzVmMzEyMDkzOGE1ZWU0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKQEAgLTYzLDEwICs2MywxMSBAQCBzdGF0
aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNv
bnN0IEludFBvaW50JiBob3RTcAogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRl
cm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19j
dXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90Lngo
KSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZhbGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsKICNlbHNl
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBhdXRvJiBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RT
cG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7CiAgICAgcmV0dXJuIGFkb3B0
R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX3N1cmZhY2UoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQo
KSwgc3VyZmFjZS5nZXQoKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3Qu
eSgpKSk7CiAjZW5kaWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwCmluZGV4IDZhMWE3M2Y5ZDdmZmUxMDhmNzZlOWI0M2IzYThmYjkz
ZjllMDNhMzIuLmFlZWNmY2Y1MjI3MGM1NWRiYWViYzEwY2UxMmFlM2I5MWI4M2JhZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdl
UmVmIGltYWdlLCBmbG9hdCBmcmFjdGlvbikKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJu
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHJldHVybiBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogfQogCiBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3M2I1MWViODUzNjlj
YWU4Zjk3ODE1MTA0MWZlYTFjMmRmNWE4ODMxLi43NGE2MGNiODM3OGUyMWIzZTQzNjJkMTgyN2U3
MGI1MWY1ZWY1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgU2Vjb25kcyBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1Bs
YXRmb3JtSW1hZ2VQdHIgU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRleCk7CiAgICAgLy8gWmVyby1o
ZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2
ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oCmluZGV4IDg4YzkwYjZlOGEyZDM0YzkwMjIwZGRhOTZkNGZjZjc1NzYzMjA4OGYuLjI4
MzIyMmVjM2JiMzg1NzQ3M2FjYjk3ZDdlNTEwNGY3MmVkNGJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAogICAgIFNlY29uZHMgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgIGJvb2wgaWdub3Jlc0dhbW1h
QW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRl
eCBiODM1YTY5Y2JjNDViN2I4OTJlMGU3YmZhMTlmZjAxOTk1YmVjYjUwLi42MDEyMDM3NGY5YzQz
MTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CitQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAg
bV9waXhlbHMtPnJlZigpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA5ODE5NGQxNDNlMGQyY2ZkMGI5NjE0
MGViZTc2YWYwMzFmYTE4MWMyLi4zZjRlNGRjZjQyYzBmYTkzZWY5YWI2MmRkMjJhOTdjNTEzODcw
NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCkBAIC0yMzks
MTEgKzIzOSwxMSBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgp
CiAKICAgICAgICAgICAgIHJldHVybiBJbnRTaXplKElPU3VyZmFjZUdldFdpZHRoKHN1cmZhY2Uu
Z2V0KCkpLCBJT1N1cmZhY2VHZXRIZWlnaHQoc3VyZmFjZS5nZXQoKSkpOwogICAgICAgICB9LAot
ICAgICAgICBbXShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IEludFNpemUgeworICAg
ICAgICBbXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBJbnRTaXplIHsKICAgICAgICAg
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAg
ICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7
CiAgICAgICAgIH0KICAgICApOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lkIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSgpCiAKICAgICAgICAgICAgIHJldHVybiBtX2lt
YWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzdXJmYWNlLmdldCgpLCBzYW1w
bGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0o
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBSZWZQdHI8TWVkaWFTYW1wbGU+IHsKKyAg
ICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IFJl
ZlB0cjxNZWRpYVNhbXBsZT4gewogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1l
ZGlhU2FtcGxlKGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0KICAgICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaAppbmRleCBmZmMxNGJjYTY1ZjYxOGUyY2FiZTVlOGVlYjJkZWQ2NDM3NDBkZWY0Li4wYjZi
MjQ0YTQ4NDkzZDJhNWVjNGRlYjIzMzgyMzM4YWFhYzY3OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVjsKIAogY2xhc3MgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYSBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKLSAgICB1c2luZyBEaXNwbGF5RnJh
bWVUeXBlID0gV1RGOjpWYXJpYW50PFJldGFpblB0cjxDR0ltYWdlUmVmPiwgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4+OworICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6OlZhcmlhbnQ8
UmVmUHRyPE5hdGl2ZUltYWdlPiwgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4+OwogICAgIGNsYXNz
IENhcHR1cmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIDogcHVibGljIExv
Z2dlckhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4
IDNmNmNiNmVkNWRmYTM4YzI2YjM1ZWRjNzdjOTE5MzkzNWU1OGQyMzAuLmIwNTlhMzI1MWQ4Yjk2
NTdiYTkwMTRjNDRmODA2M2FmODI3YjFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWMubW0KQEAgLTkxLDggKzkxLDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uKQogICAgICAgICBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uID0gSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSk7CiAKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3Jt
SW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworCiAgICAgYXV0byBzYW1wbGVU
aW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21z
KS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJ
bWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOworICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFT
YW1wbGUocGxhdGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3Rh
dGlvbigpKTsKICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAxZGJl
ZDM2NTQ1NmUyMjgzYWQ0ZTBhZGFhMWI3Yzc1YzkzNzdjMmYxLi4zNGVkOWVmOGNmNGY4NjZjYTAz
ZmRjYTkzMDRhOTYwOTZiYzY1YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEzOSw4ICsxMzksMTAgQEAgRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4
dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKICAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGlt
Zy0+bmF0aXZlSW1hZ2UoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0Nv
bnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShk
cmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOworICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybUltYWdlID0gc3JjSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSkgeworICAgICAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOworICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBwbGF0Zm9ybUlt
YWdlLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdD
b250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
YWlyb1dpbi5jcHAKaW5kZXggM2E1ZTAwYmU2NzE4YjExODYyOTg2OGJhZmJhYzc5N2NlNmZlMDdi
NS4uMzMwZjA0ZjUyZGEyN2ZiMTY5OGYyZjIwYjI2YzQwZTk0NDViMjI3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0xNjIs
OCArMTYyLDggQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSog
aW1nLCBJbWFnZU9yaWVudGF0aW9uKQogICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLjAs
IDAuMCwgMS4wKTsKICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKIAotICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKHN1cmZhY2UpIHsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltZy0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgeworICAgICAgICBhdXRvJiBzdXJmYWNlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2Uu
CiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZS5nZXQoKSwgMC4w
LCAwLjApOwogICAgICAgICBjYWlyb19wYWludChjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDkxYWQ5MGQwNTBkMzkzZWI2YWI1NTZjNzdmZDEw
ZTM3NDM3M2ZhMi4uMTExYTRiMmMzNTVjMDdiOTQ5NTk2MjQ2ZGYyMjE3NjM5YWY0YWI3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTg0MCw3ICsx
ODQwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1h
Z2UmIGltYWdlLCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICBDR1JlY3QgaW5zZXRCYWRnZVJl
Y3QgPSBDR1JlY3RNYWtlKHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZz
ZXQsIGJhZGdlT2Zmc2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogICAgIENH
UmVjdCBiYWRnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURp
bWVuc2lvbik7CiAKLSAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRo
Q0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBDSUltYWdlICppbnB1dElt
YWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCldOwogCiAgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQg
Zm9yIHRoZSBjbGlwcGluZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBz
aGFkb3cuCiAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhD
cmVhdGVXaXRoUm91bmRlZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8g
MiwgYmFkZ2VEaW1lbnNpb24gLyAyLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCA2NTljZGI1M2FjNTZhNjIwYjAzOTE4MzY3YWZjMjVkMTYx
NzVmYWVkLi5hODkyNDk2ZjliYzAwOGNlOTY0NGRlNjZlMmZjOGRjYzhlY2Q2YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBJ
bWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93
bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQ
dHIgbmVlZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUg
Y2FsbGVyIHNvIE5hdGl2ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlw
ZS4KLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKIHsKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyArMjI5LDcgQEAg
TmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLU5hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdl
dENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25z
dCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJUKHRhcmdldENv
bnRleHQpOwogICAgIGlmICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNlYmNiYTRmN2E4
ODdiYWM1OWU4ZDI4Li4yODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUwMDU0NDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAgKzYzLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAogI2lmIFVTRShD
QUlSTykKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cikgZmluYWw7CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFs
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSogaW50ZXJuYWxQ
YWdlKCkgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVmYzMxZTQ3ZDAy
MTUxZDY5MGM1Y2Q2NWY1ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRi
OWNiNzM3OGQyN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25z
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBy
ZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oCmluZGV4IGU2NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJiMzRhNWMuLjAx
YjJmMWJhZmE5NTA1M2M1OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBj
b25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFs
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNW
R0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDI4NWVk
NWMzN2VmNzY4MTE0NDU4MDM1NWM5YWE0MjNhYjE4NWMxM2EuLjFmYjczM2Q1YzE1ODkwMWY2MWEz
NjYzOTFkZjNmOTAyM2E3Njk3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjE4LDcgKzIxOCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKLSAgICAgICAg
J1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdl
JywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IGRiMDhj
NDMxOGFlODU1YzhiYzU3ODE5MmRmODYxYTgxNWFiMGIyMzkuLjJkMjZlZTMyN2IyZGZiNzU2NWY2
MmQ0NDFjZGQ3Mzg2OWZlMjFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAKIENHSW1hZ2VS
ZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKQEAgLTQ2LDcg
KzQ3LDggQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBp
bWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICBpZiAoIWltYWdlUmVmKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6
ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2VSZWYpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlUmVmKSk7
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUoaW1h
Z2VSZWYpOworICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2UtPnNp
emUoKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdl
U2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAKICAgICBhdXRvIGdyYXBo
aWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
QEAgLTU0LDggKzU2LDkgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJ
bWFnZVJlZiBpbWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdChXZWJDb3JlOjpGbG9hdFBv
aW50KDAsIDApLCBpbWFnZVNpemUpOworICAgIAogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJS
ZWN0KHJlY3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVm
LCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd05hdGl2
ZUltYWdlKCpuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKICAgICByZXR1cm4g
dG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDYzZTkxYzI4MTYwNzkxNWJiMDRmOTQy
NjIyM2YxNzZlOTcwNjVkMS4uMTU3MTNkNWNlOTJkMjljMTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMTAwLDExICsxMTAwLDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRp
dmVJbWFnZT4mIGltYWdlKQogewotICAgIGF1dG8gaW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXpl
KGltYWdlKTsKKyAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7
CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOworCiAgICAgZW5jb2RlciA8PCAhIWdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTExNyw2MyArMTExOCwzMCBAQCBzdGF0
aWMgdm9pZCBlbmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCitPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBB
cmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBPcHRpb25hbDxib29sPiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CiAgICAgZGVj
b2RlciA+PiBkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQ7CiAgICAgaWYgKCFkaWRDcmVhdGVHcmFw
aGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0LnZhbHVl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
aGFuZGxlKTsKICAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYXV0byBpbWFnZSA9IGJpdG1hcC0+Y3JlYXRl
SW1hZ2UoKTsKICAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZSgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgYm9vbCBoYXNJ
bWFnZSA9ICEhaW1hZ2U7Ci0gICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKLQotICAgIGlmIChoYXNJ
bWFnZSkKLSAgICAgICAgZW5jb2RlTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOwotfQotCi1z
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShE
ZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgaW1hZ2UgPSBu
dWxscHRyOwotCi0gICAgYm9vbCBoYXNJbWFnZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c0ltYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFoYXNJbWFnZSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2Rl
ciwgaW1hZ2UpOwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAg
IGVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZW5jb2RlciwgaW1hZ2UpOwotfQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi1ib29sIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQotewotICAg
IHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICBy
ZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250
PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNiNDk2YjA5YjkyYjhlMy4uNGE5MzIxNTkx
MzBjYjdiY2RlNTVlMjExZTE3YzRiZWRlZjE3MDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
TmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNv
dXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwogfTsKIAotdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0cj4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+Jik7CisgICAgc3Rh
dGljIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwCmluZGV4IDk1OWRhODNkNWY2OTg4YjIxMTU4OGRhN2RkYjRmZjE4M2RjZTdkNjAuLjM2NTM0
ODIwYWY1YTIyODNjNmU2YTA2ZTc0MzMxNzdiOTAzZGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTE4NSwxMSArMTg1LDkgQEAgdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNz
Qml0bWFwLCBjb25zdCB2b2lkKgogCiBSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2UoKQogewotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0g
bWFrZUNHSW1hZ2UoKTsKLSAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9y
bUltYWdlKSk7CisgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkpCisg
ICAgICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3Bw
CmluZGV4IGIzODc5YTAwNDRlNjgxOWU4YjVmOTZmY2RiZDczNDVhOTUwYzI2MjQuLjBmMzBkOTRh
NzE0OTkyZjgxN2FhM2NmODViZTBjMzFiYjk1M2ZkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAgICAgYXV0byYgcGxhdGZvcm1Db250ZXh0
ID0gKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyBvcHRpb25zIHsgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IsIHN0YXRlLmJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbigpLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH07Ci0gICAg
RGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCks
IG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBE
aXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBEaXJlY3QyRDo6ZHJhd1BsYXRmb3Jt
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBtX3NpemUsIGRlc3RSZWN0LCBz
cmNSZWN0U2NhbGVkLCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CiB9CiAKIENPTVB0cjxJRDJEMUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVEaXJlY3QyRFN1cmZhY2UoSUQzRDExRGV2aWNlMSogZGlyZWN0WERldmljZSwgSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGJiODk2NTQ1ODg2N2ViMmEwZmM0ZWM4NTdm
MzQ3NWE0ZTgyNWEzNWMuLjMxYzM4ZjM2MTNiMzZiNTFkZWMwZmVkYTFiN2JjMTc3NzlkZjBkNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ljb25VUkxB
bmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zCiAgICAgfSk7
CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE5hdGl2ZUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUGxhdGZvcm1JbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBJY29u
RGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93
RGF0YWJhc2VXcml0ZQogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX2xv
YWRlZEljb25zTG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2xvYWRlZEljb25zLmNvbnRh
aW5zKGljb25VUkwpKSB7CiAgICAgICAgICAgICAgICAgICAgIGljb25EYXRhID0gdGhpcy0+aWNv
bkRhdGEoaWNvbklELnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2xvYWRlZEljb25z
LnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGlt
ZT4obnVsbHB0ciwgeyB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0
KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+
KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJvb2wgY2FuV3JpdGVUb0RhdGFiYXNlID0gbV9hbGxvd0RhdGFiYXNlV3JpdGUgPT0g
QWxsb3dEYXRhYmFzZVdyaXRlOjpZZXMgJiYgYWxsb3dEYXRhYmFzZVdyaXRlID09IEFsbG93RGF0
YWJhc2VXcml0ZTo6WWVzOwpAQCAtNTg3LDE0ICs1ODcsMTQgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VX
cml0ZQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2Vf
cGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgTW9ub3RvbmljVGlt
ZTo6bm93KCkpKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5z
ZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGlt
ZT4obnVsbHB0ciwgTW9ub3RvbmljVGltZTo6bm93KCkpKTsKICAgICAgICAgICAgIGlmICghaWNv
bkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkpLCB0cnVlKSA8IEVuY29kZWREYXRhU3Rh
dHVzOjpTaXplQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
YXV0byBpY29uID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdDsKQEAgLTYyMiwxMyAr
NjIyLDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIGJvb2wgcmVzdWx0ID0g
dHJ1ZTsKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9h
ZGVkSWNvbnNMb2NrKTsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29u
cy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1Rp
bWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRl
ZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25v
dG9uaWNUaW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgIGlmIChpY29uRGF0YVNpemUp
IHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShp
Y29uRGF0YSwgaWNvbkRhdGFTaXplKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2
YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmZpcnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1RpbWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IDk2MTJm
OTljMmNmYjdjNTEzNjRlODFlYzhjZjEwOWU2MzE4ZTAzOWIuLmUyMjUyYTAwMDBkMmJiZTViNmY2
OWNkMjI3MWQwMGExMjVjNTc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGludmFsaWRhdGUoKTsKIAogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElmTmVl
ZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0Rh
dGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9vbCk+JiYpOwotICAg
IHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0YWJhc2VXcml0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYmKT4mJik7
CisgICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFz
ZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIm
Jik+JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5z
aWduZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNl
V3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RiOwogICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1fcGFnZVVSTFRvSWNvblVSTE1hcDsKICAgICBMb2NrIG1fcGFnZVVSTFRvSWNvblVS
TE1hcExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciwgTW9ub3RvbmljVGltZT4+IG1fbG9hZGVkSWNvbnM7CisgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPj4g
bV9sb2FkZWRJY29uczsKICAgICBMb2NrIG1fbG9hZGVkSWNvbnNMb2NrOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9pY29uSURGb3JJY29uVVJMU3Rh
dGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZTQ4ZmNlNDcwYzEwYWRmZmE2MmU0NzdiNzgzOTM2
M2MyNWU5ODAyOS4uOGVmMWNlNDEyNzM2YThlZWQzYzZhYTE2YzAzMmIzM2FkYjliZjRjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tCkBAIC04NiwxMSArODYsMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdl
PiB1aUltYWdlRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
KCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
OmNnSW1hZ2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAK
IHN0YXRpYyBib29sIHNob3VsZFVzZURyYWdJbWFnZVRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3Vy
Y2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlMWIz
OWY1NDJkZDM5ODA2YmZlYjk1M2ZkZDY0MjU2NWM5NGE5MWE4Li43ODM0ZWVmMjQwYTBmNWRhMDEw
NjQ3YzliODVkODMzNzhmZGJlYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc1NDYsNyArNzU0Niw3
IEBAIHN0YXRpYyBOU0FycmF5PE5TSXRlbVByb3ZpZGVyICo+ICpleHRyYWN0SXRlbVByb3ZpZGVy
c0Zyb21Ecm9wU2Vzc2lvbihpZCA8VUlEcm9wCiAgICAgaWYgKCFfZHJvcEFuaW1hdGlvbkNvdW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JF
ZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxl
Y3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkg
b3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICBhdXRvIHVuc2VsZWN0ZWRD
b250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBz
Y2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50
YXRpb25VcF0pOwogICAgIF91bnNlbGVjdGVkQ29udGVudFNuYXBzaG90ID0gYWRvcHROUyhbW1VJ
SW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JF
ZGl0RHJhZy5nZXQoKV0pOwogICAgIFtfdW5zZWxlY3RlZENvbnRlbnRTbmFwc2hvdCBzZXRGcmFt
ZTpkYXRhLT5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlc107CiAKQEAgLTc3NjksMTEgKzc3NjksMTEgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdl
PiB1aUltYWdlRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlKQogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2UoKTsKLSAgICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTpjZ0ltYWdlLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0pOwogfQog
CiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggY3JlYXRlVGFyZ2V0ZWREcmFn
UHJldmlldyBpbiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuCkBAIC04MDM0LDcgKzgwMzQsNyBA
QCBzdGF0aWMgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IHNpemVzT2ZQbGFjZWhvbGRlckVsZW1l
bnRzVG9JbnNlcnRXaGVuRHJvcHBpbmdJdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9w
dE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdElt
YWdlLmdldCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
IG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CisgICAgICAgIGF1dG8gdW5zZWxl
Y3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpIHNjYWxlOnByb3RlY3RlZFNlbGYtPl9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVu
dGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAgICAgICAgIGF1dG8gc25hcHNob3RWaWV3
ID0gYWRvcHROUyhbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdlOnVuc2VsZWN0ZWRD
b250ZW50SW1hZ2VGb3JFZGl0RHJhZy5nZXQoKV0pOwogICAgICAgICBbc25hcHNob3RWaWV3IHNl
dEZyYW1lOmRhdGEtPmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzXTsKICAgICAgICAgW3Byb3RlY3RlZFNlbGYgYWRkU3VidmlldzpzbmFwc2hvdFZp
ZXcuZ2V0KCldOwpAQCAtMTAwODUsNyArMTAwODUsMTIgQEAgc3RhdGljIFVJTWVudSAqbWVudUZy
b21MZWdhY3lQcmV2aWV3T3JEZWZhdWx0QWN0aW9ucyhVSVZpZXdDb250cm9sbGVyICpwcmV2aWV3
VmkKIHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVu
dEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3Iu
Y29udGVudEltYWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CisKKyAgICBh
dXRvIG5hdGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250
ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJv
bGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTc2YzA2MzhjN2Rh
MmEwNGYxZTA4OWJjNGQ0OTBmMjI0Yjg3ZDIxNi4uYzNiZWVmNWQxNDBiNzI0MzhkYzc1MDU2MDNh
ZTlhNGNkZTJhMTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcApAQCAtOTYsMTQgKzk2LDE0IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFj
CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5KSBjb25zdAogewogI2lmIFVTRShDRykKLSAgICByZXR1cm4gbV9iaXRtYXAt
Pm1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0
bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKSk7CiAjZWxpZiBVU0UoRElSRUNUMkQpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCi0gICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVD
YWlyb1N1cmZhY2UoKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+
Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDA1YzEwOWNkMjAyNmQxNWY4MGViODMy
YWQ5ZjFiN2JhMzNiYjk1NTcuLjllMjRhYjk5ZWJjNjc1Y2UyMDFhNTkzOTcyOGM2MTlkYmE1OTVl
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CiAKLSAgICBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlk
ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5n
U3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4
MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNWY4NWRmODUxOWUxYTMx
ZTYyODNkYThmYjAwOGExMzViMjEzZTM0My4uMGQ3NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIx
NmRjOTVmNTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgZmluYWw7CiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkgZmluYWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4MWNiMzFiODVmZjI2ODUx
MDBiOTQyZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMz
ZmY3OTgxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWls
TG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wgd2FzQ2FuY2VsbGVkKQogI2lmIFBMQVRGT1JN
KENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRt
YXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQo
KTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCk7CiAgICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGlt
YWdlKSA9PSA4KTsKIAogICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0
bWFwSW5mbyhpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDY3NjQ4YzE3ZGEyZTgwMzhlMGZiODcxNjhjNTVjZGViZDk2NjM2ZmMuLmEw
ZjcyNGJkOTc4MWRiZWE0YjY3MzEyYjcwNzBkMzM5NWEwMzUyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MzkwLDcgKzQzOTAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdB
bmRJY29uKGNvbnN0IFZlY3RvcjxTdAogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
UmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgaWNvbkRhdGEuZGF0YSgpLCBpY29u
RGF0YS5zaXplKCkpKTsKICAgICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBpbWFn
ZVByb3ZpZGVyUmVmID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YVJlZi5nZXQoKSkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2VSZWYgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSlBFR0RhdGFQcm92aWRlcihpbWFnZVByb3ZpZGVyUmVm
LmdldCgpLCBudWxscHRyLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAg
ICAgIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoaW1hZ2VSZWYuZ2V0KCkpOworICAg
ICAgICBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKFdURk1vdmUoaW1hZ2VSZWYpKTsK
ICAgICB9CiAKICAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VG
aWxlc1dpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlcywgZGlzcGxheVN0cmluZywgaWNvbi5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2
Njc0YmYxNGFjMDEyMGMzNWZkZjNhZGY2Li5hMmY2Yjk5MjM4YTgzYmJlOTQ3ODZhOGVhNzE0NmVl
NTIxZGJkNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNSw4ICs1MzUs
MTAgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoRXZlbnRUYXJnZXQqIHRhcmdldCkKICAgICBh
dXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKG5vZGUpLCBvcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6Tm9uZSwgRmxvYXRTaXplKG1hcmdpbiwgbWFyZ2luKSk7CiAK
ICAgICBpZiAodGV4dEluZGljYXRvcikgewotICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CisgICAgICAgIGlmIChJbWFnZSogaW1hZ2Ug
PSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkgeworICAgICAgICAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNvbnRlbnRJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9y
bUltYWdlKCk7CisgICAgICAgICAgICAqY2dJbWFnZSA9IGNvbnRlbnRJbWFnZS5hdXRvcmVsZWFz
ZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCEqY2dJbWFnZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgxNzY5OTY3NWVjZmJiOWMyMzY3
OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2M2IxMzY3NWFjZGRlMzE3Yjlm
MzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzEs
MTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAgICBXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9u
KCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNhY2hlZFJlc291
cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2Um
IGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNv
dXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hl
ZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdl
KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNh
Y2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGFhN2JkNDhj
YzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlmMWY3OGM5My4uZDEwNDNmOTU2YzQxMjVkYmFjZjYyNGRk
MjRiYmJkNjNkNmRiYzllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtODQ2LDE0ICs4NDYsMTQgQEAgcHJpdmF0ZToKICAgICBfdGV4dFJlY3RzSW5C
b3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9yRGF0YS50ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVmKCk7CiAgICAgX2NvbnRlbnRJ
bWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsK
ICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAg
ICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdo
dC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBfY29udGVudEltYWdlV2l0aEhp
Z2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmlu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2Uo
KS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudElt
YWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2
ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9u
VXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2
ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0
b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7
CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJ
bWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3Jp
ZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9
IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25S
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
b3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="review"
          id="430228"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413639</attachid>
            <date>2020-11-09 16:20:24 -0800</date>
            <delta_ts>2020-11-09 16:46:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201109162023.patch</filename>
            <type>text/plain</type>
            <size>240972</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdiNDgzZTI4OTZmNzhj
N2Y5NWVkMjk3NmJmYzZkMTRlNGQwYzM1Zi4uYTMyMDBjZDIzY2MxYTdjZTE2M2IwZmE1MzdiZGYz
YTFjOWI3YTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxMSBAQAorMjAyMC0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgVGhpcyBhZGRzIGEgbmV3IGxldmVsIG9mIGluZGlyZWN0aW9uIGFyb3VuZCBO
YXRpdmVJbWFnZVB0ciB3aGljaCBpcyBub3cKKyAgICAgICAgcmVuYW1lZCBQbGF0Zm9ybUltYWdl
UHRyLiBUaGUgZ29hbCBpcyB0byBjb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZQorICAgICAg
ICBQbGF0ZnJvbUltYWdlUHRyIGluIFdlYktpdCByZWdhcmRsZXNzIGlmIGl0IGlzIHJldGFpbmVk
IG91dHNpZGUgV2ViS2l0CisgICAgICAgIG9yIG5vdC4gSW4gZnV0dXJlIHBhdGNoZXMsIGRlbGV0
aW5nIHRoZSBOYXRpdmVJbWFnZSB3aWxsIGJlIG9ic2VydmVkIGJ5CisgICAgICAgIFJlbW90ZVJl
c291cmVDYWNoZSBzdWNoIHRoYXQgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIEdQVVAgY2Fj
aGUgd2hlbgorICAgICAgICB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZCBpbiBXZWJQLgorCisgICAg
ICAgIFRoZSBuZXcgc3RydWN0dXJhbCBoaWVyYXJjaHkgb2YgdGhlIGJpdG1hcCBpbWFnZSBpcyB0
aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0gQ2FjaGVkSW1hZ2UgKHJlc3BvbnNpYmxlIG9mIHJl
Y2VpdmluZyB0aGUgZW5jb2RlZCBpbWFnZSBkYXRhKQorICAgICAgICAgIC0gQml0bWFwSW1hZ2Ug
KHJlc3BvbnNpYmxlIG9mIGRlY29kaW5nIHRoZSBpbWFnZSBkYXRhKQorICAgICAgICAgICAgLSBO
YXRpdmVJbWFnZSAocmVwcmVzZW50cyBhbiBpbWFnZSBmcmFtZSBhbmQgY29udHJvbHMgdGhlIGxp
ZmUgY3ljbGUgb2YgUGxhdGZvcm1JbWFnZVB0ciBpbiBXZWJLaXQpCisgICAgICAgICAgICAgIC0g
UGxhdGZvcm1JbWFnZVB0ciAocmVwcmVzZW50cyBhIHBsYXRmb3JtIGltYWdlIGFuZCBpdCBpcyB0
aGUgcmVzdWx0IG9mIEltYWdlRGVjb2RlcikKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZp
ZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5kaWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAg
IChjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zv
cm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVl
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUlt
YWdlQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJB
VkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRo
VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6ZmlsbFNoYWRvd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9J
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNs
ZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZUhhc0FscGhhKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZh
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJh
d0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
Om5hdGl2ZUltYWdlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFn
ZUhhc0FscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZl
SW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Z2RrVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c25hcHNob3ROU0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwOgorICAgICAg
ICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3JvcHBl
ZEltYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6
OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisK
IDIwMjAtMTEtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIEltYWdlQnVmZmVyOjpmbHVzaERpc3BsYXlMaXN0IHRvIEltYWdlQnVmZmVy
OjpzdWJtaXREaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5MWMxYmVkYmI1ZDg2NWEzMDY0NGExODcz
MjQyZDZkNmIzZjI1MDA5Li5kZGY5NWM1YTQ5OWM1M2Y5M2MxZWIwNjg2ZjJiNzhlMjg3YjZmMmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTExLTA5ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUg
bGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0
aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9X
S0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp1aUltYWdlRm9ySW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxpdmVyRGVs
YXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTpdKToKKyAgICAgICAgKHVpSW1hZ2VGb3JJbWFnZSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxh
Y2Vob2xkZXJzOnNlc3Npb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRh
dGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKwogMjAyMC0xMS0wOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgSW1h
Z2VCdWZmZXI6OmZsdXNoRGlzcGxheUxpc3QgdG8gSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmE2MjU3ZTc1YWRlOTQ2YTE4OGFl
ODVlODBmYmExNTdjMWY2YzJjNC4uNWU2NjVhNTc2MjAyMDhlZGU4NjU4YzJmNmZhOGZjZTU1MzZk
YzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTExLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2Ug
YnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUg
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6CisgICAgICAgICogTWlzYy9XZWJD
YWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGlu
aXRXaXRoSW1hZ2U6dGV4dEluZGljYXRvckRhdGE6c2NhbGU6XSk6CisKIDIwMjAtMTEtMDkgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5NjAzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzYxNDYyMzFhMmIzYTFlZWYwYzNh
MmUzZDE0MTI2N2RmNmFhYWRkOS4uZjc4OTk4YTdiNTM2NGNlNGRiZjU0MmJkMDFjYjFjNTFlNWYz
NTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjE3LDEzICsxMjE3LDEzIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bURpc3BsYXkuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTI5NGZiYTA4ZTQ3OWQxMTk0Zjc3ZjE3
Nzc0NzIxOWNjY2M0MjI3NS4uZDgzNzI5M2E1Nzg0YTM5ODVjYTEwN2JhMjA5NTVlMTU4MDAxYThk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDQsNiArMTk0NCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZl
MWIzMTcxN2I4ODgxMTcyMTA4MjJiZTI3MGJkNjQxYmNhYjBlOTcuLjY2OTYxZmMwOWU4YmZmYzhj
YWQxMzFkZmZmYTYzOTAxMjkwYjU4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTksNyArMjE1OSw3IEBACiAJCTcyNEVE
MzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFE
QzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkw
IC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZF
MjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBs
YXRmb3JtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQw
MDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQy
M0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk1OCw2ICs5OTU4LDcgQEAK
IAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9y
RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyog
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk2OCw3ICs5OTY5LDcgQEAKIAkJNzI2NkYwMjgy
MjQzMTIwMzAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Fu
aW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQxNyw4ICsyNjQxOCw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8q
IE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5
ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURD
MjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAy
MkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAg
LyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywK
IAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAq
LywKQEAgLTI2NDI3LDYgKzI2NDI4LDcgQEAKIAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcg
LyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQ
YXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAorCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8s
CiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAq
LywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXll
ci5oICovLApAQCAtMzM0NTAsNyArMzM0NTIsNiBAQAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4
MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0Qz
QzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNkQ1NkUz
MjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzI2
RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNS
ZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8q
IE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzM2NzUsNiArMzM2NzYsNyBA
QAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRm
b3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5NTFENTRGNUZCMDBE
RDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjZENTZFMjI1
M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUw
NjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYg
LyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAppbmRleCA2ZDI3ZjM2YzE3ODEzNWM5YWRjMWViZmJlMjYzNWNkNTU5
MDI2NDhkLi42ZGJiNzk3NWVkYjJiZGFjY2ZmNDBiMDA0ZTE0MjAzNWE3ODdjYTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBi
b29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogICAg
IHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSFRNTFZpZGVvRWxlbWVu
dDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CmluZGV4IDE3ZDY1MjE5MjA1MzdmY2RlOGMwNGI0Mjc4MTZkY2E3NzU0NTU5MmIuLjgxZjA4M2E1
MGM2NDc2MmJlMjk1YTNhNjMxMjQ0NmQ2YmYyYjkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5
IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBi
eSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8g
U2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2NjMxNmZiMGNkNTNhNmYw
Nzk1MzI5MjBjZjA0MmMyZTYxMzA1NTAwLi4xODBiOWI5MWMwMDM0ODY1MjE3M2MzNDc3MzZkMWQx
ZmFmMjkyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTYzNSw4ICsxNjM1LDggQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdl
KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCiAjaWYg
VVNFKENHKQotICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSkgewotICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZs
b2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0
LCBzcmNSZWN0KTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHZpZGVvLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSkgeworICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBGbG9hdFNp
emUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDE3YmE1MWZlMGU2Y2U3
MWQ4YzljNThhMGIwNzM4MmY2NmNlZmJlMDguLjc3Mjk1M2MyZTY2NjExN2JjMGIzY2NiYzNiYmZj
ZWQ2MGUxNDZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBib29sIGluZGljYXRvcldhbnRz
TWFudWFsQW5pbWF0aW9uKGNvbnN0IFRleHRJbmRpY2F0b3ImIGluZGljYXRvcikKIAogICAgIEZs
b2F0U2l6ZSBjb250ZW50c0ltYWdlTG9naWNhbFNpemUgPSBfdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlKCktPnNpemUoKTsKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAv
IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNv
bnRlbnRzSW1hZ2U7CiAgICAgaWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgqX3Rl
eHRJbmRpY2F0b3IpKQogICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNv
bnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICBlbHNlCkBAIC0y
MjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgaW5kaWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24o
Y29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9yKQogICAgICAgICBbdGV4dExheWVyIHNldEJv
cmRlckNvbG9yOmJvcmRlckNvbG9yLmdldCgpXTsKICAgICAgICAgW3RleHRMYXllciBzZXRCb3Jk
ZXJXaWR0aDpib3JkZXJXaWR0aF07CiAgICAgICAgIFt0ZXh0TGF5ZXIgc2V0RGVsZWdhdGU6W1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKLSAgICAgICAgW3RleHRM
YXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CisgICAg
ICAgIFt0ZXh0TGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdlIGlkKWNvbnRlbnRzSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAgICAgICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4g
bWFza0xheWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAg
ICBbbWFza0xheWVyIHNldFBhdGg6dHJhbnNsYXRlZFBhdGgucGxhdGZvcm1QYXRoKCldOwpAQCAt
MjY2LDggKzI2Niw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3Jl
YXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1l
SW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAg
UmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2lj
QW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdl
KCktPm5hdGl2ZUltYWdlKCk7Ci0gICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihf
X2JyaWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKKyAgICBhdXRvIGNvbnRlbnRzSW1hZ2Ug
PSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFtjcm9z
c2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2Rl
OmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3Zl
ZE9uQ29tcGxldGlvbjpOT107CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXREdXJhdGlvbjpk
dXJhdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3NzYyZTU1MzI3ODNmZGExNy4u
YTEyYWY0NTkwNzlmMDUzYzg2Y2U5ODI5N2JkMzRjYmY5ZDljYTI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7
CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1h
Z2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJjZTo6Y3JlYXRlKFdURk1vdmUo
aW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaQog
ICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRl
ZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRh
cmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0
bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsIHdhcyAlZCwgcmVz
YW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChp
bmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
OjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wCiAg
ICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0
aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZO
ZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2Fj
aGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zv
cm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdl
dENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
YwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIGNvcnJlY3RlZFNpemVGbG9h
dCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VTaXplKTsK
IAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc291cmNlU2l6
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CisgICAgYnVmZmVyLT5j
b250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNv
dXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpzaW5r
SW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoQ0cpCi1OYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHNpemVfdCBj
b3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwotICAgICAg
ICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9PSBzaXplKQorICAgICAgICBp
ZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1WZWN0b3I8TmF0aXZlSW1h
Z2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQorVmVjdG9yPFJlZjxOYXRp
dmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQogewotICAgIFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBp
bWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKG1ha2VSZWYoKmltYWdlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGltYWdlczsKQEAgLTIxMSwxMCArMjExLDEwIEBAIGJvb2wgQml0
bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQg
aXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUg
PSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6
ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0
aEFzSGVpZ2h0KCkpCiAgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1h
Z2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlcwogICAgIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgPSBtX2FsbG93U3Vi
c2FtcGxpbmcgPyBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoY29udGV4dCwgc2NhbGVG
YWN0b3JGb3JEcmF3aW5nKSA6IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9
ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGlu
dD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0
aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAob3B0aW9u
cy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAgICAg
ICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUg
fHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CkBAIC0zMjIsOSArMzIyLDkgQEAgSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXMKICAgICBhdXRvIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigp
OwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpIHsK
ICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9y
aWVudGF0aW9uIH0pOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsgb3B0
aW9ucywgb3JpZW50YXRpb24gfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShv
cmllbnRhdGlvbikpLCBvcHRpb25zKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
Y29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlv
bikpLCBvcHRpb25zKTsKIAogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDNiNjg5MDY3ODM1Njli
MDFjYWJhMTJmZDYwMWFkNTYxOTg0YjE3YjUuLjljNTllN2FlZGMwMmU2YmE4NzU2OGEyNWZlYWNk
NjJjZThhOWE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaApAQCAtNTMsNyArNTMsMTEgQEAgY2xhc3MgVGltZXI7CiAKIGNsYXNzIEJpdG1h
cEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIgPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSwgb2Jz
ZXJ2ZXIpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFJlZlB0
cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uo
V1RGTW92ZShuYXRpdmVJbWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTM1LDIzICsxMzks
MjMgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNm
b3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogI2lmIFVTRShDRykK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxOYXRp
dmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBmcmFt
ZXNOYXRpdmVJbWFnZXMoKTsKICNlbmRpZgogCiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxl
QXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2RlKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
IHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIm
JiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJ
bWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyBy
ZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQotICAgIE5hdGl2ZUlt
YWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRl
ZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52
YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBv
dXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1h
Z2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTE5OCw3ICsyMDIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVw
cmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYpOworICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmPE5hdGl2ZUlt
YWdlPj4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5k
ZXggMjIzZDlkYzE4M2QwM2UzZjRjYzM1MWY0ZGE2ZjZmODkzZjBhYjVlZi4uODU0MDIxNWY2MjM3
Y2MwYTNkNjI1ZTMyZmE5NjdkZjlhNjJlYzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFja2VuZC0+
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgOiAwOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VC
dWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0lu
dG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCmluZGV4IDMwYjg4NDkxOWIyYzYwNDVmNzk5NmMxOWExNWJhZjYzOWJj
NTI2OWUuLjAyNThkNjQxZDc2NGI5OWFiMWNkOGNkZjk0Mjk4ZDBkZGY4N2IxNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVu
cy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwbGF0Zm9ybURy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMGIzNWFjNjRmYThiOWZmZTBjOTQ0ODVlOTczZjI0YzJhYTBmMzQ5MC4u
ZmNjYWVlZDdmN2FhMGMxZDZjMGMxNzJiYjU2MGQ1ZjA1M2U4YTNjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3OSw3
ICszNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdS
ZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2Ug
fSk7CkBAIC02NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKLSAg
ICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZv
aWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIEZs
b2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0
IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaAppbmRleCBiYjliMGM5ZmIxZTYzOWQ5OWY5ODM3ZmUwNmRmMGFjNzAy
OTZjOTcyLi4yOGY0NTdhMjRhYWNjNDZjOWYyN2ZlYTY5NzkxMDdlODA2MzM0YzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCkBAIC01OSw4ICs1OSw2IEBAIHByaXZhdGU6
CiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VTdXJm
YWNlOwogI2VsaWYgVVNFKENHKQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOwogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fZm9y
bWFsaXplZFJHQkE4RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDZlMjIyYzAyZjJkOWFl
MzY0MDYxYjczZDljMzdiNzdiMjliMDNiNDYuLjlkNDQwZDA1M2IwNzgwZDhkNDI1YjY2ZWI5NTEw
ZDYxZGM4ZWNkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxl
UnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggYjU5NjBhZDVmZjdjNGRhNTZk
ZjRmNWE0YTc5YWRkOTg4NDEzNmQ3ZC4uODJlZDI2ODU4YzM1ODVmMmYwOTM4YTI1OWY1NDZlYTVj
NGMzZTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUlt
YWdlLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VsaWYgUExB
VEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU0ltYWdlOwpAQCAtMzksNyArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsK
LSAgICAKK2NsYXNzIE5hdGl2ZUltYWdlOworCiBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50
ZWQ8SWNvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpA
QCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdl
KFBsYXRmb3JtSW1hZ2VQdHImJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0
LDggKzY1LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgSWNvbihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24oUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNGI5YmVlZDg2NTdl
ZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZm
NGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRp
bGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdl
IGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4
NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJmM2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFnZUJhY2tpbmdTdG9yZShvdGhlcikpOwog
ICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisgICAgUGxhdGZvcm1J
bWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNi
YzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3
ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JTcAogICAgIHJldHVybiBidWZmZXI7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIp
CiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAw
NGUyYWJjNzk1ZDg3NjQxZmE4NDk0MTY1NzRmNDQ1ZWQ2MzhlMzQ2Li5jZjQ3YzE5ZjBjZTE3MDRm
MDI1MTk3MjBiMzkyYTAwMjVlOWUxNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAgICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIg
c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+KTsKKyAgICBzdGF0aWMgUmVm
UHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFn
ZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1
ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpID0gMDsKICAgICB2aXJ0dWFsIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJl
c29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdj
MDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmUKICAgICByZXR1cm4gYmFja2VuZFNp
emU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRp
dmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNiNTg3MjU2N2YwODgzYjViZDAyZTBlZWNi
OGNlZmRiZTcxMGE4ZWMuLmFhOWIzNDFhMDU3M2YyYWQ0ZTllZDMwNTdjMDQyMWU5NTkxYWU1YzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dM
LmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTQzLDYgKzQyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBOYXRpdmVJbWFn
ZTsKIAogZW51bSBCYWNraW5nU3RvcmVDb3B5IHsKICAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBH
dWFyYW50ZWUgc3Vic2VxdWVudCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCkBAIC03Nywx
MyArNzcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0ID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJ
bWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBz
aW5rSW50b05hdGl2ZUltYWdlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNzEwNGQwNzE5NGYzODE1OWIzM2Jl
YTZhYWVkODg1ZDcwOWJkOTgxNy4uYWFhNTFiZGRjZTA0ZmQ4NWU5ZWE2MWQzODJjYzNiMTFlZTZl
MjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAjaW5jbHVk
ZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBmcmFtZUFs
bG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CisgICAgdmlydHVhbCBQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5jcHAKaW5kZXggODNiNzhiNmVjMDA2ZmM1NDc3NDUyZmZkMDgxNTI3YjJkZDkxNjE4NC4uY2Mz
YjYzNjAyOTVjZTBjNWI5ZGIxNDE1MDRjZWNhNjI2ZWRiYTRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dW5zaWduZWQgSW1hZ2VGcmFtZTo6Y2xlYXJJbWFnZSgpCiAKICAgICB1bnNpZ25lZCBmcmFtZUJ5
dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOwogCi0gICAgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdl
cyhtX25hdGl2ZUltYWdlKTsKKyAgICBtX25hdGl2ZUltYWdlLT5jbGVhclN1YmltYWdlcygpOwog
ICAgIG1fbmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgIG1fZGVjb2RpbmdPcHRpb25zID0gRGVj
b2RpbmdPcHRpb25zKCk7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBDb2xvciBJbWFnZUZyYW1lOjpz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogICAgIGlmICghaGFzTmF0aXZlSW1hZ2UoKSB8
fCBtX3NpemUgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAg
ICByZXR1cm4gbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9uYXRpdmVJbWFnZSk7
CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKaW5k
ZXggNTRhOWM5ZGYzM2I0ZDMzYjEyNzVmOTE0NmZmODg0MmUzN2MwMDA3MS4uYWE3M2FlMzYzODll
YzJmYWM0MjFlYzM1YzNlNmM2NzE4MTFlN2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc05hdGl2ZUltYWdlKCkgPyAo
c2l6ZSgpLmFyZWEoKSAqIHNpemVvZih1aW50MzJfdCkpLnVuc2FmZUdldCgpIDogMDsgfQogICAg
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vi
c2FtcGxpbmdMZXZlbDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRp
dmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KIAogICAgIHZvaWQgc2V0
T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9u
ID0gb3JpZW50YXRpb247IH07CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToK
ICAgICBEZWNvZGluZ1N0YXR1cyBtX2RlY29kaW5nU3RhdHVzIHsgRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fbmF0
aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogICAgIFN1
YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCB9OwogICAgIERlY29kaW5nT3B0aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGY4
ZTIwMjhjM2MzYjNmNjE2YzZhMTM3OGE5NGVmZGZjNGU1YjE5NDkuLjE0ODAyMWNlZWU0NTVhZWJi
MzA1ZGZmMzU2MTNlYzQ3NDMzZjU1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW1hZ2VTb3VyY2U6
OkltYWdlU291cmNlKEJpdG1hcEltYWdlKiBpbWFnZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ28KIHsKIH0KIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKE5hdGl2ZUltYWdl
UHRyJiYgbmF0aXZlSW1hZ2UpCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIDogbV9ydW5Mb29wKFJ1bkxvb3A6OmN1cnJlbnQo
KSkKIHsKICAgICBtX2ZyYW1lQ291bnQgPSAxOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6Omdyb3dGcmFtZXMoKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG5ld1NpemUpOwog
fQogCi12b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogewogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkgPT0g
MSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1swXTsKQEAgLTI0NSw4ICsyNDUs
OCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQogICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdl
KTsKIAogICAgIGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxl
dGU7Ci0gICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm1fbmF0aXZlSW1h
Z2UpOwotICAgIGZyYW1lLm1faGFzQWxwaGEgPSBuYXRpdmVJbWFnZUhhc0FscGhhKGZyYW1lLm1f
bmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPnNp
emUoKTsKKyAgICBmcmFtZS5tX2hhc0FscGhhID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+aGFzQWxw
aGEoKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNh
Y2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluCiAKICAgICBpZiAoZnJhbWUubV9kZWNvZGluZ09wdGlvbnMuaGFzU2l6ZUZvckRyYXdpbmco
KSkgewogICAgICAgICBBU1NFUlQoZnJhbWUuaGFzTmF0aXZlSW1hZ2UoKSk7Ci0gICAgICAgIGZy
YW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5uYXRpdmVJbWFnZSgpKTsKKyAgICAg
ICAgZnJhbWUubV9zaXplID0gZnJhbWUubmF0aXZlSW1hZ2UoKS0+c2l6ZSgpOwogICAgIH0gZWxz
ZQogICAgICAgICBmcmFtZS5tX3NpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW4KICAgICAgICAgZnJhbWUubV9kdXJhdGlvbiA9IG1fZGVjb2Rlci0+ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJ
bWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYg
cGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0
YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXpl
KCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwpAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2
ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE1vdmUgdGhlIG5ldyBpbWFnZSB0byB0aGUgY2FjaGUuCi0gICAgZnJhbWUubV9uYXRpdmVJ
bWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOwogICAgIGZyYW1lLm1f
ZGVjb2RpbmdPcHRpb25zID0gZGVjb2RpbmdPcHRpb25zOwogICAgIGNhY2hlTWV0YWRhdGFBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ1N0YXR1cyk7CiAKQEAgLTMwMSw3
ICszMDEsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRp
dmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgIGRlY29kZWRTaXplSW5jcmVh
c2VkKGZyYW1lLmZyYW1lQnl0ZXMoKSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykK
K3ZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhQbGF0Zm9y
bUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25z
LCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlLCBzaXoKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkpOwogCiAg
ICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBhIG5ldyBvbmUKLSAgICBj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOworICAgIGNhY2hl
UGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOwogICAgIExPRyhJ
bWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMgYmVl
biBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBpbmRleCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGltYWdlIHdpdGggdGhlIHJl
YWRpbmVzcyBvZiB0aGUgbmV3IGZyYW1lIE5hdGl2ZUltYWdlLgpAQCAtMzYyLDggKzM2Miw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAg
ICAgICBzdGFydGluZ1RpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgotICAg
ICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBwcm90ZWN0ZWREZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5z
dWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zKTsKLSAgICAgICAg
ICAgIGlmIChuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IHBy
b3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRl
eCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09w
dGlvbnMpOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtSW1hZ2UpCiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhh
cyBiZWVuIGRlY29kZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3Vy
Y2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAt
IHVybDogJXMgW2RlY29kaW5nIGZvciBmcmFtZSAlbGQgaGFzIGZhaWxlZF0iLCBfX0ZVTkNUSU9O
X18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJl
cXVlc3QuaW5kZXgpOwpAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3Rh
cnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5n
RHVyYXRpb24gLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAg
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJl
YWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhy
ZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVj
dGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJM
Lmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFt
ZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291
cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgcXVldWUgbWF5IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2UgZ290IHRo
ZSBmcmFtZSBOYXRpdmVJbWFnZSwgc3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBjYWxsZWQu
CiAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkgPT0gcHJv
dGVjdGVkVGhpcy0+bV9kZWNvZGluZ1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0g
cHJvdGVjdGVkVGhpcy0+bV9kZWNvZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChw
cm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3Qp
OwogICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUu
cmVtb3ZlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXhBc3luYyhXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVSZXF1ZXN0
LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFdURk1v
dmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMsIGZyYW1lUmVxdWVzdC5k
ZWNvZGluZ1N0YXR1cyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVs
ZCB3aWxsIG5vdCBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBz
b3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAgICAg
IH0pOwpAQCAtNDU0LDkgKzQ1NCw5IEBAIGNvbnN0IEltYWdlRnJhbWUmIEltYWdlU291cmNlOjpm
cmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtCiAgICAgICAg
IGlmIChmcmFtZS5oYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKHN1YnNhbXBsaW5nTGV2ZWwpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcGVyZm9ybSBzeW5jaHJvbm91
cyBpbWFnZSBkZWNvZGluZyBpbiB0aGlzIGNvZGUuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlID0gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbFZhbHVlKTsKKyAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbV9kZWNv
ZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVl
KTsKICAgICAgICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBhIG5ldyBv
bmUuCi0gICAgICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2Up
LCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpOworICAgICAgICBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNjk3LDE5ICs2OTcsMjEgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB9CiAjZW5kaWYK
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGlz
RGVjb2RlckF2YWlsYWJsZSgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOworICAgIGlmICghaXNEZWNvZGVyQXZh
aWxhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6
OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXg8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUlt
YWdlKSk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PFJlZlB0cjxOYXRpdmVJbWFn
ZT4+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGZy
YW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgm
SW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPFJlZlB0cjxOYXRpdmVJbWFnZT4+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAppbmRleCBkOThlYzBlN2Y2ZTUyY2U1NTg5ZWRkOTliNDJjN2FkNjNj
ZWRmMDFkLi5hNmY0YWIxM2RlZWZkYTM2NTJiYjkzM2NiMmUyNjJhNWZjYjYwMzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJj
ZShpbWFnZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYg
bmF0aXZlSW1hZ2UpCisgICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKFJlZlB0cjxO
YXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQpAQCAtMTI1
LDEzICsxMjUsMTMgQEAgcHVibGljOgogI2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHNldFRh
cmdldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0Kik7CiAjZW5kaWYKLSAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKIAogcHJp
dmF0ZToKICAgICBJbWFnZVNvdXJjZShCaXRtYXBJbWFnZSosIEFscGhhT3B0aW9uID0gQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwotICAgIEltYWdlU291cmNlKE5hdGl2ZUlt
YWdlUHRyJiYpOworICAgIEltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNvbnN0
PgogICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxUPiogY2Fj
aGVkVmFsdWUgPSBudWxscHRyKTsKQEAgLTE1MiwxMCArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWNvZGVkU2l6ZVJlc2V0KHVuc2lnbmVkIGRlY29kZWRTaXplKTsKICAgICB2b2lkIGVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZChFbmNvZGVkRGF0YVN0YXR1cyk7CiAKLSAgICB2b2lkIHNl
dE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOworICAgIHZvaWQgc2V0TmF0aXZlSW1hZ2Uo
UmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlTWV0YWRhdGFBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0
ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERl
Y29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwotICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKKyAgICB2
b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdl
QXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CiAKICAgICBzdHJ1Y3Qg
SW1hZ2VGcmFtZVJlcXVlc3Q7CiAgICAgc3RhdGljIGNvbnN0IGludCBCdWZmZXJTaXplID0gODsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApp
bmRleCA3YWFhMWVmYjNhNWUzNTM2MTZiMjI5YmI1YTNmMjcwYWQ1Y2ExMGNmLi41OTU2N2QwYzM5
OTMyYjBlN2IxN2ZiNjVjNzJlNzZkZmE3ZjE5NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb24KICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAppbmRleCAzM2MxZGNhODgyNDEwMjBmNGZkMWRmNjJmNTZmMGFjZTc2MDhmOGE4Li5hMDU3OGFl
MDNlNzA3Yzg1NTY5NjRhNTM2ZTlhYjY0YTUzZTg1Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgdXNp
bmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3
b3JrU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggYzM2YzJmNTU1NThhNmY3M2M2ZTc1NDM3OWEzNDMx
MTQwMzhiMGI5MS4uN2U5MGNkZGRmYzg3MDFiYmNkYTcyZDk0YWU0ZGI4ZjBkYTAxMGRiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9h
dFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0s
IGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YxM2RjYWIzNWFjOGM1YTk4MWRkZDlhMzIw
ODg4ODRmZDRhYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXRpdmVJbWFnZS5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQoreworICAgIGlmICgh
cGxhdGZvcm1JbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisg
ICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKaW5kZXggMDMzNDc1OTYwN2Y4ZjIwZGUzMTI0ODU5YTZmMGYwOTQ1MWUx
OGU1Yi4uZDA2MmI5N2ZkNDQ0ZjBjZWFhMjJiZGQ4MzkwMDg4YzMzMjAyYzI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yNywxNiAr
MjcsMzAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
I2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENvbG9yOwotY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdl
IDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKIAotV0VCQ09SRV9FWFBPUlQgSW50
U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZl
SW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VT
aW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJO
YXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
SW1hZ2U7IH0KIAotfQorICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgc2l6ZSgpIGNvbnN0Owor
ICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OTJkMDdmOTQ0ZTllMzk4ZmNmNTI0ZmExOWVmMDQ1OTExMDEzZDEwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0Uo
Q0cpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2Vs
aWYgVVNFKERJUkVDVDJEKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJp
dG1hcD47CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD47CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFn
ZVB0ciA9IFJlZlB0cjxTaGFyZWRCaXRtYXA+OworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmluZGV4IDFi
MDdmODZmMzkzMTc4ZjRjZjdmZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUz
ZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFn
ZVB0cikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9G
dWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA4
YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgx
NjY0YTI0MTk0OTNlOTViYTUzNzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5
MTZmOTBhYmQwNzUzYTExNTU2YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRk
MGQzNDg0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCkBAIC01NjcsNyArNTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKICAgICBy
ZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7
CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5
YzFlYTYuLjI2YjNkNzhmZTFiMGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlKCk7CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBm
aW5hbDsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlBsYXll
ckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFW
RlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9u
U2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlk
ZW9UZXh0dXJlQ29waWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWPiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZjI5NDg4MTZlZGRlNzllNzhhMTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uMDBkMDg0NTM1NTQ4YWE1
MDk5ZDNmNzdlNzliNzg1MGI4OWFlOTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0x
MTI3LDcgKzExMjcsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogewog
ICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAg
ICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSht
X2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
IDogbnVsbHB0cik7CiB9CiAKIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCkBAIC0x
MTM5LDcgKzExMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbkxheWVyKQogICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBk
YXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRy
KTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0yMjkzLDcg
KzIyOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0
ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJD
b25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZl
ckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBidWZmZXIg
dG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsKIH0KQEAg
LTIzMTQsOCArMjMxNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSKTsKIAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFn
ZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgp
LCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIG1fbGFzdEltYWdlLT5zaXplKCkgfTsK
KyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbV9sYXN0SW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQg
YW4gQVZBc3NldEltYWdlR2VuZXJhdG9yIGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0
IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxlCiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQg
bm93IHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KQEAgLTIzNDEsNyArMjM0MSw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5j
b3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgs
IGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRl
TGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAppbmRleCBlN2JmN2E3NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFiLi5hMGFm
OWI4NzRjYWU4MmFiZDNmODA5MTBmNmJhMjlkOWUzOTRiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpZExvYWRp
bmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgdXBkYXRlTGFz
dFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3BlcmZvcm1UYXNrT2Jz
ZXJ2ZXI7CiAgICAgUmV0YWluUHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwog
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gbV9yZ2JDb25mb3JtZXI7CiAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKICAgICBEZXF1ZTxSZXRhaW5QdHI8aWQ+PiBtX3Np
emVDaGFuZ2VPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggOTI1YmY0
ZTFmOTBiNTRjNDI4NjZjMjY1ODA1OWM2MTFhY2MxYmIwZS4uNzA4ZDMxYjJlOTQ3YmUzMDJmMTI2
ODZhODE5NmEwM2RhZjE0M2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTY0
LDEwICs1NjQsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRpbmdQcm9ncmVzc2Vk
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5n
ZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQpAQCAtNjA3LDcg
KzYwNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRh
dGVMYXN0SW1hZ2UoKQogICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsK
ICAgICB9CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC02MjYsOCArNjI2LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICAgICAgcmV0
dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlLT5z
aXplKCkgfTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0
VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZh
ZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBh
aW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
Z0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25m
b3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEy
YWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li5hYzZjZGUzYzhkNTc5Y2JmMGE5NmIwMDM0
NDYxNmE4MmIzYzBlNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyAr
NzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVv
TGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOwor
ICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIu
Y2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxw
dHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50
RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxC
dWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRl
KG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7Cisg
ICAgRmxvYXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUo
KSB9OwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGlt
YWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Qu
c2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjli
MTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3
MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyAr
MTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkK
K3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRl
b0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRp
dmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlm
IChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29u
dGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGY1NzU5
ZmIxZTgyZjA3OGNiZWM2ZmFkYzczMDZmMDI5NWE1Mzk2M2QuLmEwODQ1MTJhNTIzNGUxMWI3ZTEw
MWNiMjkyOGNjMmYwYTMyN2JlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAv
LyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNj
YWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNo
YW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBs
YXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFk
NGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMz
NDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5
TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0
aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpA
QCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRD
b2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA5YTU3ZWJlMmQ1NWEwNzljMzdmMWNhYjk2YTdmYjczZjVi
ZjQzOWJhLi45NzcxMjkwZjQzNjIwNmViODUzMGYyNTg0ZWI4ZTNjZmQ3YTlhNTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBhdGgu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlNoYWRvd0Js
dXIuaCIKQEAgLTE3NCwxNiArMTc1LDE2IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAKIHN0
YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRQb2ludCYg
bGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZElu
dFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFk
b3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
IHsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVy
T3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwg
eyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9i
YWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBt
b3N0bHkgc2FtZSBhcyBkcmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0
d28uCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdQ
bGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAg
IH0KIH0KIApAQCAtMTkxLDggKzE5Miw4IEBAIHN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiB7CiAg
ICAgc2F2ZShwbGF0Zm9ybUNvbnRleHQpOwogCi0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVy
SW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgY2xp
cFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qo
bGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CisgICAgaWYgKGF1dG8g
bmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSkpCisgICAgICAgIGNsaXBUb0ltYWdlQnVmZmVyKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgRmxvYXRSZWN0KGxheWVyT3JpZ2luLCBleHBh
bmRlZEludFNpemUobGF5ZXJTaXplKSkpOwogCiAgICAgRmlsbFNvdXJjZSBmaWxsU291cmNlOwog
ICAgIGZpbGxTb3VyY2UuZ2xvYmFsQWxwaGEgPSBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYTsKQEAg
LTg2MCw3ICs4NjEsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3Rv
cmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUpCit2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5oCmluZGV4IDUwNWMwYWY0N2Q3YTBhNTBlOWMxOTA2NmRkOTNkZTU5NjFkNjY5MWEuLjNk
ZDkwMTM0ZDE0NWIzYTcwNmVhNTU1NGFkMjAyODkyYTk4MWU0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5o
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRv
d1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUs
IGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFn
cywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgRm9udFNtb290aGluZ01v
ZGUpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJv
X3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uNjg3ODEwNjNiOTIyMTA5ZDBmMGQ1ODg2NGQ1YzYyODZlMDgwMTgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86
OmRyYXdQbGF0Zm9ybUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
fSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlz
IGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFk
b3dzLgpAQCAtMjY2LDggKzI2Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQog
CiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0
KCksIGRlc3RSZWN0KTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91
bmRzKCkgY29uc3QKQEAgLTY4MSw4ICs2ODEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAog
ICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNp
emUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRm
b3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXpl
KGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91
bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3Bw
CmluZGV4IGZhZGIyNDNlNjc4YjcyN2YxMGIwYjZiM2IyZTkwZjA1OGJkMzkyNWUuLmM2YWE3NzE4
ZTliNDM0MTViMjUwNjQ5M2VhNWFjYzY4MDU3ZjgxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwCkBAIC01Niw5ICs1Niw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBp
ZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7
CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCgwKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faW1hZ2VTdXJm
YWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0
Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVv
RWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVk
IGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKICAgICAgICAgLy8g
d2hpY2ggaXMgdHJ1ZSBhdCBwcmVzZW50IGFuZCBtYXkgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJl
IGFuZCBuZWVkcyBhZGp1c3RtZW50IGFjY29yZGluZ2x5LgogICAgICAgICAvLyAyLiBGb3IgdGV4
SW1hZ2UyRCB3aXRoIEhUTUxDYW52YXNFbGVtZW50IGlucHV0IGluIHdoaWNoIEFscGhhIGlzIGFs
cmVhZHkgUHJlbXVsdGlwbGllZCBpbiB0aGlzIHBvcnQsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKaW5kZXggYjgzOGY1Zjc2NTQ5ODZlY2Q3NTM3ZjJmMGVhMjE2NTAzYTkw
NGM1Mi4uMWQxMWRjNDFhOTYxM2I0MGUzYzM1NDgzNjhhNzdhY2JkMzA0ODE3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODgsMTMgKzI4OCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29ucwogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAg
IGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJh
d05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0
ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0
Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2ZUlt
YWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJU
aGlja25lc3MpCkBAIC00MTksOCArNDE5LDggQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmNsaXBCb3VuZHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlciht
X3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRv
IG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSkpCisgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwg
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggOGE5MzdkYTIzOWQ2ZDZjZGQw
YTA0OGNjY2Q4MzY3OTEwNWQ5N2NhYy4uMzFhMGY1NDAwZWU4NGUwOGIwYzVkZDRmOGU1MmYxOTcz
NTM1ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGFjNGIxZjc5MDc2
ODRjYTZkYjg2MjcyMTM5OTdkNGI1NmE4MjBlOGYuLjdkYTE3MGU1OTkwYmUxODU5MGU5MWQ0ZDFj
YWE3ZDBlMzEwM2Y4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBjb25zdCBhdXRvJiBk
ZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CiAKICAgICBpZiAo
YXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/
IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRyYXdO
YXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBX
ZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKKyAg
ICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25z
LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRl
c3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUo
ZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0KIAogICAg
IGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAg
Q2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Uu
Z2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIG1fbG9n
aWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0
aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9y
U3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
NGYxZjc1NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uOTMxMDhkMDRlYzliMTFi
ZjBlNTQyNTc2ZmYzZDc5OTM0YjgwN2I4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2
aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTggQEAg
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2Uo
Y3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNy
LmdldCgpKTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUoV1RGTW92ZShjb3B5KSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJh
Y2tpbmdTdG9yZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZhY2UuZ2V0KCkpKTsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlKCkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAg
ICBCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBj
YWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVO
VF9DT0xPUl9BTFBIQSkKQEAgLTEwMCw3ICsxMDAsOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25z
dAogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JH
UkFEYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvIHN1cmZhY2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VU
b0ltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1h
Z2UoKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkgOiBudWxscHRyOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZS5n
ZXQoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBhNjlkNWVlMGZmNjNmNzc5NTgyNWRj
Njc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBjYmY1ZWIy
NDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAt
NDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJs
aWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiYmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNvZXJjZVRv
SW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJj
ZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJ
bWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDA1YzBmODFjYjM0MTkwY2IzNzNiZDg0MzQxNThiNGQw
MzMwMWFiMDQuLmZkYzdlN2Q2NWZkY2E5MTNlNzBjYzk4NjgyZWMzYzQ0Mzk2NzdhN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdl
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGltYWdl
ID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJu
IGNhaXJvU3VyZmFjZVNpemUobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKIH0KIAotYm9vbCBuYXRp
dmVJbWFnZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZl
SW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdlIHx8IGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Cisg
ICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9wbGF0Zm9ybUltYWdlLmdldCgp
KSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJ
bWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoc2l6ZSgp
ICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgaWYgKGNh
aXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9J
TUFHRSkKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3BsYXRmb3JtSW1hZ2UuZ2V0
KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7
CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICB1bnNpZ25l
ZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiAgICAgcmV0dXJuIHVucHJl
bXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKIH0KIAot
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgY2xl
YXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCit2b2lkIE5hdGl2
ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGNlNTI3
ODA2MGEwZGY1YzEwZmQxMjhmOTZkZjg5M2FmODZhMDJjZjEuLjU2MGY3NDdhOGZiNjQ4MWJlNGEz
MDE4NTg1MDBhYTlmYTE2MGY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzUsMTEgKzM1LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9
IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWlyb19wYXR0ZXJuX3Qq
IHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNlLmdldCgp
KTsKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9m
b3Jfc3VyZmFjZShuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIC8v
IGNhaXJvIG1lcmdlcyBwYXR0ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCiAgICAgY2Fp
cm9fbWF0cml4X3QgbWF0cml4ID0gdG9DYWlyb01hdHJpeChtX3BhdHRlcm5TcGFjZVRyYW5zZm9y
bWF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhN2RiZTZlNmJlNWY1NjI1MmMzYzcwYjEy
ODgwZTNiNjQ0YmE0Yzk5Li5mZTlhZDM3NjczMzA3ODY1ODQwYTNmYzAwM2Q1YTAxNmYwODZmYThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNl
VHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVm
PiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC00NDQsMjMgKzQ0NCwyMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1l
ZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFn
ZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWln
aHQodGlsZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gc3ViSW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAg
ICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0
aWxlSW1hZ2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFy
dGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBp
bWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFn
ZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hl
biB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2Uu
aGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJ
bWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdl
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQg
dG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBs
b2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhl
IGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2Nh
bGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
cGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgo
KSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFz
cGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRo
ZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRl
ci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1
dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MDksNyAr
NTA5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUg
YnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdl
ID8gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAKICAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlt
YWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQxOTdlY2E4MWJiZGJj
NGUwNTY3ZTQzYzA0ZC4uNDYxOWJlNDM0ZTgyYTJkYWQ3MDY5ZTNmMGIyM2I2ZDc4ZTA5MzY2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTMyNCwyMiArMzI0LDI1IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGRlY29kZWRJbWFnZTsKICAgICBib29sIGhhc0Fs
cGhhID0gIW1faW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOworCiAgICAgaWYg
KChpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxwaGEgJiYgIXByZW11bHRpcGx5
QWxwaGEpKSAmJiBtX2ltYWdlLT5kYXRhKCkpIHsKICAgICAgICAgYXV0byBzb3VyY2UgPSBJbWFn
ZVNvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0aXBsaWVkLCBp
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJ
Z25vcmVkIDogR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwogICAgICAgICBz
b3VyY2UtPnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFzb3Vy
Y2UtPmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBt
X2RlY29kZWRJbWFnZSA9IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7Ci0gICAg
ICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOworICAgICAgICBkZWNvZGVkSW1hZ2UgPSBz
b3VyY2UtPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZQotICAgICAgICBt
X2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
ICghbV9jZ0ltYWdlKQorICAgICAgICBkZWNvZGVkSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworCisgICAgaWYgKCFkZWNvZGVkSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1h
Z2UuZ2V0KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFn
ZS5nZXQoKSk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGRlY29kZWRJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChkZWNvZGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKCFt
X2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMzQ3LDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgLy8gc28sIHJl
LXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcK
ICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBpbmRpY2Vz
LCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShkZWNvZGVkSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBD
R0NvbG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29s
b3JTcGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBi
aXRtYXBDb250ZXh0OwpAQCAtMzYyLDIyICszNjUsMjQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGkKIAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwg
a0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFs
aXR5KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
bV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
bV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgZGVjb2RlZEltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFn
ZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KLSAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1h
Z2UuZ2V0KCk7CisgICAgICAgIGRlY29kZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSkpOwog
ICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJD
b21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJ
bWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghZGVjb2RlZElt
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVu
dCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGRlY29kZWRJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQ
aXhlbChkZWNvZGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQ
ZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1Bl
clBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0g
Q0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8g
Yml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGRlY29kZWRJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRo
ZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAog
ICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZh
c3QgaWYgd2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAg
ICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhh
Rm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5m
byhtX2NnSW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGRl
Y29kZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQog
ICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0
ICs0NjgsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNvdXJj
ZUZvcm1hdCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0lt
YWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGRl
Y29kZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERh
dGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdl
dCgpKSk7CiAKICAgICB1bnNpZ25lZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVf
dCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwor
ICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhkZWNvZGVkSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVz
UGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGlu
ZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUyOSw4
ICs1MzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgICAgICBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQaXhlbHMsIGRh
dGFTaXplLCAwKSk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAotICAgICAgICBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRl
cywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKKyAgICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHls
aW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAg
Ly8gdGhlIHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3Jy
ZWN0CkBAIC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFp
bnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1p
bWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0gICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0p
OworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNS
ZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJh
dG9yOjpDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFmYTVjMTdiMy4u
OGM1YWJmN2M5M2U3OTcxM2Y3MTNhNmRiZGU5YmMwMTdmMjFmODliYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmNwcApAQCAtNzQsMTcgKzc0LDE3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uCiAg
ICAgcmV0dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJ
bWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBj
b25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
bikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZO
ZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAgICBpZiAocmVzb2x1
dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGlt
YWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBiYWNrZW5kU2l6ZSkpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBs
b2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBD
R0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAg
ICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6
ZUluVXNlclNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShj
b250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVz
ZXJTcGFjZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdl
U2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAg
IGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGNvbnRleHQuZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1
LDcgKzk1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNj
YWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9y
LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5h
dGl2ZUltYWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAg
aWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5
QmVoYXZpb3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAg
ICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgsNyAr
MTM4LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZyb21J
bWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwog
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKIAogICAg
IGlmIChDRkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU4LDEwICsxNTgsMTAg
QEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKIAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5z
aW9ucy5oZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0g
MSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKLSAg
ICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2Uu
Z2V0KCksIGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tl
bmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRT
aXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgp
LCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNp
emUoKS5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4
IGZmZWY2NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjZjMDMzYzYzODM4YWZl
MWEwZjYyN2Q2YjQ0YTE1NDZmM2ZlZWU3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHAKQEAgLTEwNywxNyArMTA3LDE3IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250ZXh0
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJl
aGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCkpKTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKSk7CiAKICAg
ICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENH
SW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2Vu
ZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAgICAgY2FjaGVk
Q0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBtX2RhdGFQcm92
aWRlci5nZXQoKSwKLSAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3YTU0OTczMTA4Mjg1
Li43ZDIzM2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2ViOGIzZDFhZDg4ZDBh
YjNmMGVlZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4OTcxMGFlODM3ZmJm
OWIxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTM1LDE0
ICsxMzUsMTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNr
ZW5kQ29sb3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1hdDo6QkdSQTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpOworICAgIHJldHVy
biBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJ
bWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFjZTo6c2lua0ludG9J
bWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRl
KElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpKTsKIH0KIAogdm9p
ZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1
bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFkanVzdGVkU3JjUmVj
dC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRp
b25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNr
ZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIFJldGFp
blB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9DRkRhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0YTkwNDBjYzc0MGZi
Li5mNTA5ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0ZXJuYWxNZW1v
cnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRl
OwotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdDb25zdW1p
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2YmVhODc0NDVhYmEw
Yy4uY2RhZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cApAQCAtNDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNHOjpmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgcmV0dXJu
IChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBk
ZWNvZGluZ09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCiB7CiAgICAg
TE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleCAlbHUi
LCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gb3B0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUwNmRkZjZiM2IuLjhi
YTMwMDlkM2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4
KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA0
MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi4zNDQ4MDBiYTFkN2Y2NmU1
NGFlM2MzZjhlMmQxMjI2MDhjODU1NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyOSArMjgsMjUgQEAKIAog
I2lmIFVTRShDRykKIAotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2luY2x1ZGUgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRp
dmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJ
bWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJ
bnRTaXplKCk7CisgICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKG1fcGxhdGZvcm1J
bWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiB9
CiAKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Citib29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhh
SW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFn
ZUFscGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0
KCkpOwogICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qp
ICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9y
IE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAgIGlmICgh
aW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlm
IChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAg
ICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs1Niw3IEBAIENvbG9y
IG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGlt
YWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKIAogICAgIGlm
ICghcGl4ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKQEAg
LTY4LDExICs2NCwxMCBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRC
eXRlczxTUkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lk
IGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQor
dm9pZCBOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENBQ0hFX1NVQklNQUdF
UwotICAgIGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJ
bWFnZShpbWFnZS5nZXQoKSk7CisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFn
ZShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2Mjcz
YzNiNTdhYjlmM2RiY2M1YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3
ODdkMzc3MGFjYWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3Bh
Y2VUcmFuCiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAg
IHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAg
ICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1h
Z2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0g
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1h
Z2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5n
IGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAg
ICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBp
eGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0
dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5n
ZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7
CisgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcp
OwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5
U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxz
bwogICAgIC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0
LDEwIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVw
ZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRl
cm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBp
biBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0g
dGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJh
Y2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVh
c2VDYWxsYmFjayB9OwotICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGlu
Z0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBD
R1BhdHRlcm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwg
eVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2Fs
bGJhY2tzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tCmluZGV4IDAyYWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdkOWRhMzQyZGQ3
MDQuLjM4ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsx
NzcsNyBAQCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmltYWdlRm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyPigqc291cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VX
aXRoSU9TdXJmYWNlOmRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFn
ZSkuc3VyZmFjZSgpLnN1cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdl
V2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBy
ZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUlt
YWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0
IEZFQ29sb3JNYXRyaXgmIGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4m
IGlucHV0SW1hZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDFj
OWI3YTE0MWQ0MmJlNmNiNWNhOTc2ODg4MWE3MTVhZjgxYWQ1MjEuLmM3ZWRkNzU4ZDk4ZmUxOTI3
YWM1MjM2NTRlMWRmNDY5MzhhMGYyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwgbV9pbWFnZVNp
emUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1M2RlZDA4OWFhZTRjNGJlNmVhNDVjOGI0NWVk
MzcyOTI3ZWE4Yzg0Li5hODYxMWM3NjFmMWRhMzg1NmJlNDMyMTM2ZjQxZTcyZDE4NTdlNGU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsg
fQpAQCAtMTI5MSw3ICsxMjkxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBSZWY8TmF0aXZlSW1h
Z2U+IG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBt
X2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTMxMSw3ICsx
MzExLDcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4g
RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25h
bDxOYXRpdmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4g
aW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IGYxNDI5ZDgzYTkzNWViZDUxYTY4OTU3NWUwNTg4N2ViMGI1MTM3OGQuLmJmM2Ni
MzQwMTQxZDNlZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25z
dCBGbG9hdFJlYwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggNDY0OGY2ZGQ5MWNhODVlYTYzOGE4ZWZkMjQzNDg4NGQ2NTBl
MmFjNi4uZTY1OTZiZTgyMmJlNzljMWVmYWMzZTgxMTczYzNhMjM0MGU3OWMxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0
ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4
MDNhZGMyOGY0ZjI3MWVmZjU4OWI3Li5jMGFhZTNhN2Q0OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2
ZDdkNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYs
MTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkp
OwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAgICBQbGF0Zm9y
bUltYWdlUHRyIGltYWdlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2Uo
KS5uYXRpdmVJbWFnZSgpOworICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJ
bWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfQogICAgIHZvaWQgZHJvcEltYWdlKCkgeyBt
X2ltYWdlID0gbnVsbHB0cjsgfQogCkBAIC0xNzksNyArMTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5l
cmF0b3JMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2
ZTJlYTA3OTdiZDNjZmQzZTlkNDUwMDg0OTY4ZThkMzMzOTU5YTdkLi41ODY5ZDhjODZhNDE5NGQz
ZTM4OGVjOTIwZTUyNTdlNzgyNjkxYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJz
YW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8
PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29u
c3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxv
bmcgbG9uZykgZmluYWwgeyB9CiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzRjZTEyZGI3MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1
ZTY3OTIxOC4uZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUs
NyArMzIxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250CiAgICAgcmV0dXJuIG1fdmlkZW9U
ZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVm
ZmVyLmdldCgpLCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9u
KTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAppbmRleCAxOGU2ZDY4ODY2N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4wYWIy
YzZjOTE0YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkwOGFkMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBi
b29sKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZp
ZGVvVHJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VHdGsuY3BwCmluZGV4IGNkNTBhMWU4NmMyMzEyNmZkYjg5MTRkYTNhMzk3MDFmZGRkNmE2
NjEuLjcwMjg0ZGJlMjcyZTNlMjgyNDgwNGE5YzdjZGEwNmI3YzRjYjYzNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtNTYs
MTcgKzU2LDIyIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1ZigpCiB7
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIHN1cmZhY2UgPyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1
ZihzdXJmYWNlLmdldCgpKSA6IDA7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgICAgICByZXR1cm4gY2Fpcm9TdXJmYWNlVG9HZGtQ
aXhidWYoc3VyZmFjZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAj
aWYgVVNFKEdUSzQpCiBHZGtUZXh0dXJlKiBCaXRtYXBJbWFnZTo6Z2RrVGV4dHVyZSgpCiB7Ci0g
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisKICAgICBBU1NFUlQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0
KHN1cmZhY2UuZ2V0KCkpID09IENBSVJPX0ZPUk1BVF9BUkdCMzIpOwogICAgIGF1dG8gd2lkdGgg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKTsKICAgICBhdXRv
IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5k
ZXggODEzNmMxZmZmNDViOWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYTk3NzQ3ZmY2ZjRl
ZTIyMmNjYTRlNGU2NDM1MzU4ZTcxYzg5YmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDkgKzMzLDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlKQotICAgIDogbV9jZ0ltYWdlKGltYWdlKQorSWNvbjo6SWNvbihSZWZQdHI8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UpCisgICAgOiBtX2NnSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiB7CisgICAgQVNT
RVJUKG1fY2dJbWFnZSk7CiB9CiAKIEljb246On5JY29uKCkKQEAgLTQ3LDEyICs0OCwxMiBAQCBS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKmZpbGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8SWNvbj4g
SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1h
Z2UpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKFBsYXRmb3JtSW1hZ2VQ
dHImJiBpbWFnZSkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSWNvbihOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkpOwogfQog
CiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKQEAgLTYyLDEzICs2Myw5IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCi0gICAgZmxvYXQg
d2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBmbG9hdCBoZWln
aHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgRmxvYXRTaXplIHNp
emUod2lkdGgsIGhlaWdodCk7Ci0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBz
aXplKTsKLQorICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9jZ0lt
YWdlLT5zaXplKCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uUXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
bV9jZ0ltYWdlLmdldCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoKm1fY2dJbWFnZSwgc3JjUmVjdC5zaXplKCksIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCmluZGV4IDY5MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZm
YjkuLmNhZDliYjI3NTNlMzRlZTE5NWJhZTViNTU4Njc1M2MxMjY4MGYzNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcg
Kzc0LDcgQEAgUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hh
ciAqbmFtZSkKICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxO
YXRpdmVJbWFnZVB0cj4mIG5hdGl2ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1h
cEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPFJlZjxOYXRpdmVJbWFnZT4+
JiBuYXRpdmVJbWFnZXMpCiB7CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJv
LCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEK
ICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVX
aXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODks
NyArODksNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0g
ICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRp
dmVJbWFnZS5nZXQoKSwgMCk7CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRl
c3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsK
IAogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAg
ICByZXR1cm4gZGF0YTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gQml0
bWFwSW1hZ2U6OnNuYXBzaG90TlNJbWFnZSgpCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGRhdGEgPSB0aWZmUmVwcmVzZW50YXRpb24o
eyBuYXRpdmVJbWFnZSB9KTsKKyAgICBhdXRvIGRhdGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBt
YWtlUmVmKCpuYXRpdmVJbWFnZSkgfSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggYjAw
Nzk5ZmU3ZDIyMTRjNTUwYTgzYTM3YWYxODg3YTI1MDlmMmU2NC4uOWYxMTI0ZmVhNzA3NjZlNmUx
YzY0YmRiNWM3YzYzYjBhZTlhNDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBp
cGUuY3BwCkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZm
ZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2VTaXplKG5h
dGl2ZUltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIHNp
emUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUt
PnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxwaGEobmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8g
Qml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAj
aWYgVVNFKENBSVJPKQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZl
SW1hZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBp
bWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBk
YXRlQ29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2lu
dCgpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKaW5kZXggOGJjNWQyN2JlNjM1ZWZkZDVhN2QxZjZjNDczZjI4ZDg4ZjI5NjU4YS4uN2IyOTlh
NWY0NzE5N2U5YjBiMDcyMmI2MzQ4MTQ1YmIwYTY4MzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NCwxNCAr
NTU0LDE0IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uCiAgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAg
ICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZv
aWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJl
cGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwz
PigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9y
bUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+
KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU3Miw3ICs1
NzIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VT
aXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAg
YXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxE
cmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwog
fQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTU5Miw4ICs1OTIsOCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dAogICAgIH07CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgaWYgKGF1dG8gc3Vy
ZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGlt
YWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IG9wdGlvbnMpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0
ZXJuPihuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLCBJbnRTaXplKGltYWdlLnNpemUoKSks
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsK
IH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTEwNzcsOCArMTA3Nyw4IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgRmxvYXRSCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4oc3VyZmFjZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkK
KyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KG5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCksIGRlc3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA2OTFlNzQx
ODAwM2U1NzU4YTYwNDRmM2M5NzkxYjMxMDhhZDM3YzJmLi42NmVhZGU4NWRiMWI1MTgxM2ZhYjNi
NzU2NjNmZGFlY2FkZjY2MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3Jl
OjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJD
b3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihX
ZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
R0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0MjQxODBjOGFiNWQwYzkuLmE2
MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
R0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNv
bnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gZnJh
bWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICgh
ZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7CiAKICNpZiBVU0Uo
Q0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5nZXQoKTsK
KyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5l
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJ
UkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
Njc3ZGU3YzkyMDk5NjZkNzY4YjVhMDBmMDFhM2MxN2JiMjUzNmY5Ny4uMzAxZDc4N2QxMjNmOWRl
MjUzNmY4ODkwNGQ1OTU3MTFiOGVjNTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxHcmFwaGljc0xheWVyPiBHcmFw
aGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNz
CiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50KQogICAgIDogR3Jh
cGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUlt
YWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2VzKQogICAgICwgbV9uZWVkc0Rp
c3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKQEAgLTI5NCwyMiArMjkz
LDIyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIC8vIE1ha2UgdGhl
IGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBjaGFuZ2VkLgotICAgICAgICAv
LyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9u
IGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMg
Y2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQg
cG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8g
dGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhpcyBhc3N1bXB0aW9u
IGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5ld05h
dGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAg
ICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1dG8gbmV3TmF0aXZlSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFuZXdO
YXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAobmV3TmF0aXZl
SW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGlmIChuZXdO
YXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5ld05hdGl2ZUltYWdl
UHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5ld05hdGl2ZUltYWdlOwog
ICAgICAgICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAgICAgICAgbV9jb21wb3NpdGVk
SW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgICAg
ICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICAgICAg
bV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFnZVNjYWxlRmFjdG9yKCkg
KiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUlt
YWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBudWxscHRyOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgz
MzAxNWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li4yMWMzN2U5MDAwMDA0Y2NkZGQ2Zjlm
NTNkMzAyODM2M2JkNTEwNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaApAQCAtMTcsMTQgKzE3LDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAqLwogCi0jaWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKLSNkZWZpbmUgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaCIKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFRleHR1
cmVNYXBwZXJMYXllciBtX2xheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
TGF5ZXI+IG1fYmFja2Ryb3BMYXllcjsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBv
c2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50IG1fY2hhbmdlTWFzazsKQEAgLTE3NSw2ICsxNzUs
NCBAQCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0dSQVBISUNTTEFZRVIoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIsIGlzR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIoKSkKIAotI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cl9oCisjZW5kaWYgLy8gIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDUy
YzVkYjA3NzYwZWY3Y2YxNWYwOWMyODM3OGZjZmQ0ZDgwZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEw
MWFiMDk2Y2FiMzY2MjcwYzQ0ODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNiBAQCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVy
VHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50
KGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwg
bV9jb29yZGluYXRvcigwKQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAg
ICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdFBlbmRpbmdU
aWxlQ3JlYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4
NSwxMiArNTg0LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoYm9vbCBzaG93KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZVB0ciA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgOiBudWxscHRyOwotICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9PSBuYXRpdmVJbWFnZVB0cikKKyAgICBhdXRvIG5hdGl2
ZUltYWdlID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51
bGxwdHI7CisgICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlID09IG5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZSA9IGltYWdlOwotICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0g
bmF0aXZlSW1hZ2VQdHI7CisgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFn
ZTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAg
bm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwpAQCAtODQ5LDExICs4NDgsMTEgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQogICAgIG1fbmljb3NpYS5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQg
PSB0cnVlOwogCiAgICAgLy8gRGV0ZXJtaW5lIGltYWdlIGJhY2tpbmcgcHJlc2VuY2UgYWNjb3Jk
aW5nIHRvIHRoZSBjb21wb3NpdGVkIGltYWdlIHNvdXJjZS4KLSAgICBpZiAobV9jb21wb3NpdGVk
TmF0aXZlSW1hZ2VQdHIpIHsKKyAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAg
ICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgYXV0byYgaW1hZ2UgPSAq
bV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgICAgIHVpbnRwdHJfdCBpbWFnZUlEID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KCZpbWFnZSk7Ci0gICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFn
ZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdl
UHRyLmdldCgpKTsKKyAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSk7CiAKICAgICAgICAgLy8gUmVzcGF3biB0aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBp
ZiB0aGUgdW5kZXJseWluZyBpbWFnZSBjaGFuZ2VkLgogICAgICAgICBpZiAobV9uaWNvc2lhLmlt
YWdlQmFja2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IGVlOGY1Nzg3OWFkYTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNl
MTNlNDEuLjlmMGUxNDk2YmRjYzVkMmRiNmE5ZTY2YjAyNDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0gbV9uZWVkc0Rpc3BsYXk7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2U7CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAg
ICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRp
bmdUaWxlQ3JlYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKaW5kZXggODgzNWY4OGQx
YmJjZDIwM2MzMjU2MmRhMjQxNGNiYzI3YjZmYjBmOC4uNTI1YTE2MzQxZWJkNWZlNjQxOWQ4MmQ4
MGEwNDMwNGRiYTcyMmQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKQEAgLTgwNCw3ICs4MDQs
NyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQogCiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBv
cmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQg
Z2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRv
IG5hdGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2UpOwogICAgIENPTVB0cjxJRDJEMUJp
dG1hcD4gZGV2aWNlQml0bWFwOwpAQCAtODEzLDEwICs4MTMsMTAgQEAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1h
cCogaW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBiaXRtYXBT
aXplKGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29u
dGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdQbGF0Zm9ybUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0
LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93
U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9h
dCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1
dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRl
eCA3NGExMDM2NzA5ZjM4NTVjZThkNTRmNzVlY2MzNmYzMWQ4NjMyYzVhLi41ZDE5NjA4MGNkZTQ1
NTA3MDVjMzk3ZWY5OWM5NmM4NDk2ODc5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjgs
OCArMTI4LDggQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0
YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rv
cjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRh
bEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4
dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYp
OwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNC
aXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0
Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwor
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0
bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNo
YWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29u
c3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lk
IGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgQ09NUHRyPElEMkQxQml0bWFw
PiYmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1
N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4zYTY4ZGMzYWEwMTU1MzY4
NDY0ZjUxNzIzNWVjMGEzMTlmN2Q1N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRm
b3JtU3RhdGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBD
T01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhiZjg1YzA5OTM4ODI5MjQ4Zjgy
ZGRkOTFjOWRlMzNjMDc4My4uODhhNjVmN2JiZWMzZWExNGU1ZGU0NjY0YzQ4YzEwMDYxZWRiZTMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTI4MywxMCAr
MjgzLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsK
LSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEs
IERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3TmF0aXZl
SW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaAppbmRleCA5NWViMzcwYjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1
M2NjLi5jMTk3YjQ4OWMyOTI2Y2E2NThkNzM1ZTdlMTMzZjkyMTgwZmZjNDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw3ICs3MSw5IEBAIHB1YmxpYzoKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmlu
ZGV4IDdkMjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3YjY0ZTgxYzVjOTQuLjY1NmNiMTRlNzI4
OGYyM2E4OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwog
ICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgYml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgYml0bWFwOwogICAgIEhSRVNVTFQg
aHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1hcCk7CiAgICAgaWYgKCFTVUNDRUVE
RUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmNyZWF0ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUo
c2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHImJiBiaXRtYXApCitJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXApCiAgICAg
OiBJbWFnZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KFdURk1vdmUocGxh
dGZvcm1Db250ZXh0KSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmZsdXNoQ29udGV4
dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQ7
CiAgICAgSFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFy
Z2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQpOwpAQCAtMTMzLDEwICsxMzMsMTAg
QEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAgIH0KIAotICAgIHJldHVybiBpbWFnZTsK
KyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9CiAKLXN0
YXRpYyBOYXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJp
dG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0
IEludFNpemUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElE
MkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogewogICAgIEZsb2F0U2l6
ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgOiBGbG9hdFNpemUo
KTsKIApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIAogUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFBsYXRmb3JtSW1h
Z2VQdHIgaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShjb3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQotICAgICAgICBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGlt
YWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFn
ZSgpOwogCiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0
bWFwUmVuZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICByZXR1
cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQsIFdU
Rk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZl
UmVzb2x1dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICByZXR1cm4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQuZ2V0KCksIFdURk1vdmUo
aW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1
dGlvbik7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpj
b21wYXRpYmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCitQbGF0Zm9y
bUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CiAgICAgbG9hZERhdGFUb0JpdG1hcElm
TmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXggY2VmMzll
YTc5MjExZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2MS4uMWQ1NzRhZWVjZGI5ZDIyODAyMTRm
MWMwY2FmNWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7CiAKLSAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEltYWdlPiBz
aW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3ZlcnJpZGU7CkBAIC01OSw3ICs1OSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRD4gbV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4gbV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdlUHRyIG1fYml0bWFwOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
aW5kZXggNzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTkyMTMzZDU1M2NkM2E0Yi4uNmRhYmYyNDEz
ZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFw
KQogICAgIC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhpcy4KICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdl
OjpjcmVhdGUoV1RGTW92ZShjZ0ltYWdlKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MSw4ICs5
MSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0g
ICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAg
ICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAgICAgYXV0byBpbWFn
ZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNp
emUoKSA9PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9j
dXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAg
ICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRo
KCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4
IGQ0ZWFmYzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWViY2UzODA1YzAuLjJjZWM5OWRjNzI5ZmU2
NWUwODU0ZWVlNzJkZmM0ZWQ3YWYwOTUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDE3ICs5Mywx
NSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFt
ZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKLSAgICAgICAgaWYgKCFz
dXJmYWNlKQorICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPnNpemUoKSAhPSBzcmNT
aXplKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNy
Y1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2Uu
Z2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewotICAgICAg
ICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwotICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBj
b21wb3NpdGVPcCB9KTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1l
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHNpemVfdCBjdXJyZW50
RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOworICAg
ICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndp
ZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOworICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBk
cmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCAy
MWMxOWVjNjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1
YTIyMzk3MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250
ZXh0KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQg
PSByZW5kZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmKQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRj
YWYyZTMyZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwog
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCA5MGY3OGMyMzhm
MThmOTliYzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi5hNjRiNDU2OGI3Y2M1MzU3NDhiMGJkNjBj
MTMwZjU5ZDExZDFkNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC0yNiwxMiArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAKLSNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgotI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKICNp
bmNsdWRlIDxkMmQxLmg+CkBAIC01MCw2MCArNDYsMjkgQEAgc3RhdGljIElXSUNJbWFnaW5nRmFj
dG9yeSogaW1hZ2luZ0ZhY3RvcnkoKQogICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKIH0KIAot
SW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50
U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgVUlOVCB3aWR0aCA9IDA7Ci0g
ICAgVUlOVCBoZWlnaHQgPSAwOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICByZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6ZSgpOworICAgIHJldHVybiBtX3BsYXRm
b3JtSW1hZ2UtPkdldFBpeGVsU2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEo
KSBjb25zdAogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEQyRDFfUElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7
CisgICAgRDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBtX3BsYXRmb3JtSW1hZ2UtPkdl
dFBpeGVsRm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQx
X0FMUEhBX01PREVfSUdOT1JFOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29s
aWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2
ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsK
LSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
Ci0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBz
bWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0
aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBh
ZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUp
LCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0
ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0
YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlm
IChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkp
OwotI2VuZGlmCiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0N1cnNvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3Rr
LmNwcAppbmRleCA4N2Y4NGNhODRjNTRmNDI0MjJmYjQ5N2M3OTVmMjYzNTFkNjZkNWMwLi5lZGVk
N2U4ZGQyM2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcApAQCAtNjMsMTAgKzYzLDExIEBAIHN0YXRpYyBHUmVm
UHRyPEdka0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIGhvdFNwCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhv
dFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9u
ZXdfZnJvbV90ZXh0dXJlKHRleHR1cmUuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZl
Y3RpdmVIb3RTcG90LnkoKSwgZmFsbGJhY2tDdXJzb3IoKS5nZXQoKSkpOwogI2Vsc2UKLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBk
ZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdk
a19jdXJzb3JfbmV3X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBzdXJm
YWNlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsK
ICNlbmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJ
bWFnZUd0ay5jcHAKaW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNmOWUwM2Ez
Mi4uYWVlY2ZjZjUyMjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
RHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1h
Z2UsIGZsb2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4
MTUxMDQxZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVl
ZjUwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBA
QCBTZWNvbmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1J
bWFnZVB0ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewog
ICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBp
bWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVt
cHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMz
YmIzODU3NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xv
clByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVh
NjljYmM0NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUy
MWI2OWM1NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVs
cy0+cmVmKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZh
ZjAzMWZhMTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5
LDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAg
ICAgICAgICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSks
IElPU3VyZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAg
IFtdKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtd
KFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1
cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAg
ICAgfQogICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFu
c2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUs
IHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBb
dGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1l
ZGlhU2FtcGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1w
bGUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmlu
ZGV4IGZmYzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0
OTNkMmE1ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwogCiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUg
PSBXVEY6OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPj47CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8
TmF0aXZlSW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVy
ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVs
cGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2
ZWQ1ZGZhMzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAx
NGM0NGY4MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24p
CiAgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1h
Z2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVm
ZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29u
ZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5j
cmVhdGVNZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCku
Z2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShw
bGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkp
OwogICAgIGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2
ZTIyODNhZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMw
NGE5NjA5NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoZHJhd0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRp
dmVJbWFnZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwg
a0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250
ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1h
Z2UgPSBzcmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRT
ZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0
KCkpOworICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fp
cm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcAppbmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li4zMzBm
MDRmNTJkYTI3ZmIxNjk4ZjJmMjBiMjZjNDBlOTQ0NWIyMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIs
OCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIElt
YWdlT3JpZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAx
LjApOwogICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAg
ICBpZiAoc3VyZmFjZSkgeworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7
CiAgICAgICAgIGNhaXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQppbmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0Mzcz
ZmEyLi4xMTFhNGIyYzM1NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENH
UmVjdE1ha2UocmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFk
Z2VPZmZzZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJh
ZGdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9u
KTsKIAotICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdl
OmltYWdlLm5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBb
Q0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKV07CiAKICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhl
IGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4K
ICAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdp
dGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRn
ZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCmluZGV4IDY1OWNkYjUzYWM1NmE2MjBiMDM5MTgzNjdhZmMyNWQxNjE3NWZhZWQu
LmE4OTI0OTZmOWJjMDA4Y2U5NjQ0ZGU2NmUyZmM4ZGNjOGVjZDZiYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJh
d1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlw
IG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVk
cworLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIg
c28gTmF0aXZlSW1hZ2UgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0
aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCopCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJ
bWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KikKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7
CiAgICAgaWYgKCFtX3BhZ2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5
ZThkMjguLjI4MjVmOWQzODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQot
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KSBmaW5hbDsKICNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBu
YXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cikgZmluYWw7CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7
IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkw
YzVjZDY1ZjVlODMxYjMxYWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4
ZDI3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dAogICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFp
bmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBt
X2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgK
aW5kZXggZTY0NGY3YWNmMzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFm
YTk1MDUzYzU5MjI1NzM3MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VG
b3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNp
emUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjg1ZWQ1YzM3ZWY3
NjgxMTQ0NTgwMzU1YzlhYTQyM2FiMTg1YzEzYS4uMWZiNzMzZDVjMTU4OTAxZjYxYTM2NjM5MWRm
M2Y5MDIzYTc2OTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yMTgsNyArMjE4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVj
bGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAogICAg
ICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4
NTVjOGJjNTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uMmQyNmVlMzI3YjJkZmI3NTY1ZjYyZDQ0MWNk
ZDczODY5ZmUyMWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KIAogQ0dJbWFnZVJlZiBXS0lt
YWdlQ3JlYXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlUmVmKQogewpAQCAtNDYsNyArNDcsOCBA
QCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVm
LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgIGlmICghaW1hZ2VSZWYpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAotICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKENHSW1h
Z2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsKKyAgICBh
dXRvIG5hdGl2ZUltYWdlID0gV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZVJlZik7
CisgICAgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwog
ICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBX
ZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKIAogICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtNTQs
OCArNTYsOSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVm
IGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwg
MCksIGltYWdlU2l6ZSk7CisgICAgCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVj
dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdl
U2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2Uo
Km5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3
ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkNjNlOTFjMjgxNjA3OTE1YmIwNGY5NDI2MjIzZjE3
NmU5NzA2NWQxLi4xNTcxM2Q1Y2U5MmQyOWMxNDkzNzc1YzIzZWIxY2RlZDY2YzdkYjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEx
MDAsMTEgKzExMDAsMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxOYXRp
dmVJbWFnZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2ZUltYWdl
PiYgaW1hZ2UpCiB7Ci0gICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2Up
OworICAgIGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisK
ICAgICBlbmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250
ZXh0KQogICAgICAgICByZXR1cm47CkBAIC0xMTE3LDYzICsxMTE4LDMwIEBAIHN0YXRpYyB2b2lk
IGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUlt
YWdlUHRyJiBuYXRpdmVJbWFnZSkKK09wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50
Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBkZWNvZGVyID4+
IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWRpZENyZWF0ZUdyYXBoaWNzQ29u
dGV4dC5oYXNWYWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQudmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUp
OwogICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvIGltYWdlID0gYml0bWFwLT5jcmVhdGVJbWFnZSgp
OwogICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAgIGlmICgh
bmF0aXZlSW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1zdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBib29sIGhhc0ltYWdlID0g
ISFpbWFnZTsKLSAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwotCi0gICAgaWYgKGhhc0ltYWdlKQot
ICAgICAgICBlbmNvZGVOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19Ci0KLXN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKERlY29kZXIm
IGRlY29kZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBpbWFnZSA9IG51bGxwdHI7
Ci0KLSAgICBib29sIGhhc0ltYWdlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2Up
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0ltYWdlKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFn
ZSk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgZW5jb2Rl
T3B0aW9uYWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19CisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJu
IGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBt
YWtlUmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBh
YmNhMDI0MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0OTZiMDliOTJiOGUzLi40YTkzMjE1OTEzMGNiN2Jj
ZGU1NWUyMTFlMTdjNGJlZGVmMTcwNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJ
bWFnZVB0ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0
aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+
CkBAIC00MTksOSArNDE5LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpJbWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYp
OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mKTsKKyAgICBzdGF0aWMgT3B0
aW9uYWw8UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5k
ZXggOTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4uMzY1MzQ4MjBhZjVh
MjI4M2M2ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg1LDExICsxODUsOSBAQCB2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAs
IGNvbnN0IHZvaWQqCiAKIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFn
ZSgpCiB7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJ
bWFnZSgpOwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2Up
KTsKKyAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXgg
YjM4NzlhMDA0NGU2ODE5ZThiNWY5NmZjZGJkNzM0NWE5NTBjMjYyNC4uMGYzMGQ5NGE3MTQ5OTJm
ODE3YWEzY2Y4NWJlMGMzMWJiOTUzZmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2NhbGVGYWN0b3IsIGNvbnN0IEkKICAgICBhdXRvJiBwbGF0Zm9ybUNvbnRleHQgPSAqY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlv
bnMgeyBzdGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKCksIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfTsKLSAgICBEaXJlY3Qy
RDo6ZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgbV9zaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJE
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZShw
bGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RT
Y2FsZWQsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKIH0KIAogQ09NUHRyPElEMkQxQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZURpcmVj
dDJEU3VyZmFjZShJRDNEMTFEZXZpY2UxKiBkaXJlY3RYRGV2aWNlLCBJRDJEMVJlbmRlclRhcmdl
dCogcmVuZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYmI4OTY1NDU4ODY3ZWIyYTBmYzRlYzg1N2YzNDc1YTRl
ODI1YTM1Yy4uMzFjMzhmMzYxM2IzNmI1MWRlYzBmZWRhMWI3YmMxNzc3OWRmMGQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBA
IC01NDMsNyArNTQzLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBh
Z2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICB9KTsKIH0KIAot
dm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoTmF0aXZlSW1hZ2VQdHImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElj
b25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxs
b3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChQbGF0Zm9ybUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFz
ZVdyaXRlCiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNv
bnNMb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNv
blVSTCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShp
Y29uSUQudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGlj
b25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxs
cHRyLCB7IH0pKTsKKyAgICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVS
TCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0
ciwgeyB9KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ym9vbCBjYW5Xcml0ZVRvRGF0YWJhc2UgPSBtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0Rh
dGFiYXNlV3JpdGU6OlllcyAmJiBhbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdy
aXRlOjpZZXM7CkBAIC01ODcsMTQgKzU4NywxNCBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZElj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5h
dGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3co
KSkpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29u
VVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxs
cHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAgICAgICAgaWYgKCFpY29uRGF0YS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNp
emVBdmFpbGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIGlj
b24gPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwpAQCAtNjIyLDEzICs2MjIsMTMg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwog
ICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29u
c0xvY2spOwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChp
Y29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVs
bHB0ciwgeyB9KSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMu
c2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1Rp
bWU+KG51bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgaWYgKGljb25EYXRhU2l6ZSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGljb25EYXRh
LCBpY29uRGF0YVNpemUpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
KQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Qg
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggOTYxMmY5OWMyY2Zi
N2M1MTM2NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uZTIyNTJhMDAwMGQyYmJlNWI2ZjY5Y2QyMjcx
ZDAwYTEyNWM1Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VX
cml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7Ci0gICAgdm9pZCBs
b2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiYpPiYmKTsKKyAgICB2
b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNlV3JpdGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYmKT4mJik7
CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9wYWdlVVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9j
azsKLSAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
LCBNb25vdG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAgICBIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRl
ZEljb25zOwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xvY2s7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBhZGZmYTYyZTQ3N2I3ODM5MzYzYzI1ZTk4
MDI5Li44ZWYxY2U0MTI3MzZhOGVlZDNjNmFhMTZjMDMyYjMzYWRiOWJmNGM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUubW0KQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1h
Z2VGb3JJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAg
ICBpZiAoIWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFn
ZS5nZXQoKV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGlj
IGJvb2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25z
dCBEcmFnU291cmNlU3RhdGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGUxYjM5ZjU0MmRk
Mzk4MDZiZmViOTUzZmRkNjQyNTY1Yzk0YTkxYTguLjc4MzRlZWYyNDBhMGY1ZGEwMTA2NDdjOWI4
NWQ4MzM3OGZkYmVhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzU0Niw3ICs3NTQ2LDcgQEAgc3Rh
dGljIE5TQXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURy
b3BTZXNzaW9uKGlkIDxVSURyb3AKICAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFn
ID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25h
cHNob3RJbWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF0pOworICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJ
bWFnZUZvckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTp1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOl9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVw
XSk7CiAgICAgX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZp
ZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFn
LmdldCgpXSk7CiAgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEt
PmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsK
IApAQCAtNzc2OSwxMSArNzc2OSwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1h
Z2VGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
OwotICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRo
Q0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3
IGluIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS4KQEAgLTgwMzQsNyArODAzNCw3IEBAIHN0YXRp
YyBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0lu
c2VydFdoZW5Ecm9wcGluZ0l0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0
KCkgc2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50
YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29u
dGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2Nh
bGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9w
dE5TKFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJ
bWFnZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6
ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXNdOwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQo
KV07CkBAIC0xMDA4NSw3ICsxMDA4NSwxMiBAQCBzdGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2Fj
eVByZXZpZXdPckRlZmF1bHRBY3Rpb25zKFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewog
ICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50
SW1hZ2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKworICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFn
ZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAt
IChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihV
SVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlNzZjMDYzOGM3ZGEyYTA0ZjFl
MDg5YmM0ZDQ5MGYyMjRiODdkMjE2Li5jM2JlZWY1ZDE0MGI3MjQzOGRjNzUwNTYwM2FlOWE0Y2Rl
MmExMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCkBAIC05NiwxNCArOTYsMTQgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLU5h
dGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNH
SW1hZ2VDb3B5KCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1h
a2VDR0ltYWdlQ29weSgpKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbGlmIFVTRShDQUlSTykKLSAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVD
YWlyb1N1cmZhY2UoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3
YmEzM2JiOTU1Ny4uOWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5
ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNv
cHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1
NTU4NjdlZDU4My4uNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2Rh
OGZiMDA4YTEzNWIyMTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSBmaW5hbDsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVt
LCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5h
bDsKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJm
OGVjZDY1MTg3Y2Q0MjgzODEuLjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdl
YkZyYW1lKiB3ZWJGcmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBzdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsK
LSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAg
IENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKTsKICAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09
IDgpOwogCiAgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZv
KGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZTBmM2MyZTQxYjdhNjBjZWQ5NWVmMDI4ZThlMzQwMWY2YTExZmEwYi4uNjcxYThiNjM1
MzJiY2NlMTZkZjU2Mjc3MThhOTcwMjU4NjdhOGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQzOTAsNyArNDM5MCw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24o
Y29uc3QgVmVjdG9yPFN0CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGFSZWYgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNp
emUoKSkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGltYWdlUHJvdmlk
ZXJSZWYgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhUmVmLmdl
dCgpKSk7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZVJlZiA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhKUEVHRGF0YVByb3ZpZGVyKGltYWdlUHJvdmlkZXJSZWYuZ2V0KCks
IG51bGxwdHIsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICAgICAgaWNv
biA9IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZi5nZXQoKSk7CisgICAgICAgIGlj
b24gPSBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoV1RGTW92ZShpbWFnZVJlZikpOwogICAgIH0K
IAogICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmRpZENob29zZUZpbGVzV2l0
aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0
YWMwMTIwYzM1ZmRmM2FkZjYuLjg1YTJmZGI2NzFjMmQyNjZiODVjMWZhMmM5NDllYmUwNGYzYjRm
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM1LDggKzUzNSwxMCBAQCBp
ZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogICAgIGF1dG8gdGV4
dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMobm9kZSksIG9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luLCBtYXJnaW4pKTsKIAogICAgIGlm
ICh0ZXh0SW5kaWNhdG9yKSB7Ci0gICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNh
dG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKSB7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgICAgICAgICAq
Y2dJbWFnZSA9IGNvbnRlbnRJbWFnZS5hdXRvcmVsZWFzZSgpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCEqY2dJbWFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KaW5kZXggZDgxNzY5OTY3NWVjZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQw
OTZkZGY5NTBjYmZlODE2M2IxMzY3NWFjZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZh
dWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyIHsKICAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Ug
PSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJl
cXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNhY2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNo
ZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2Up
OwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7
CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2
ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGFhN2JkNDhjYzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlm
MWY3OGM5My4uZDEwNDNmOTU2YzQxMjVkYmFjZjYyNGRkMjRiYmJkNjNkNmRiYzllMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQ2LDE0ICs4NDYs
MTQgQEAgcHJpdmF0ZToKICAgICBfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9
IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3Jk
aW5hdGVzKS5sZWFrUmVmKCk7CiAgICAgX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGlj
YXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5n
ZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9y
ZWRdOworICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJ
bWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdl
V2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
IHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07
CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlKQotICAgICAgICBfY29udGVudElt
YWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2Nh
bGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudElt
YWdlID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNh
dG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAK
ICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAg
ICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhv
dXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFn
ZSkgewotICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBz
Y2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAg
ICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkg
c2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAg
ICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlczsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="commit-queue"
          id="430277"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413645</attachid>
            <date>2020-11-09 16:48:50 -0800</date>
            <delta_ts>2020-11-09 19:14:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218427-20201109164849.patch</filename>
            <type>text/plain</type>
            <size>241422</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdiNDgzZTI4OTZmNzhj
N2Y5NWVkMjk3NmJmYzZkMTRlNGQwYzM1Zi4uYTMyMDBjZDIzY2MxYTdjZTE2M2IwZmE1MzdiZGYz
YTFjOWI3YTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxMSBAQAorMjAyMC0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENvbnRyb2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNs
YXNzIG5hbWVkIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgVGhpcyBhZGRzIGEgbmV3IGxldmVsIG9mIGluZGlyZWN0aW9uIGFyb3VuZCBO
YXRpdmVJbWFnZVB0ciB3aGljaCBpcyBub3cKKyAgICAgICAgcmVuYW1lZCBQbGF0Zm9ybUltYWdl
UHRyLiBUaGUgZ29hbCBpcyB0byBjb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZQorICAgICAg
ICBQbGF0ZnJvbUltYWdlUHRyIGluIFdlYktpdCByZWdhcmRsZXNzIGlmIGl0IGlzIHJldGFpbmVk
IG91dHNpZGUgV2ViS2l0CisgICAgICAgIG9yIG5vdC4gSW4gZnV0dXJlIHBhdGNoZXMsIGRlbGV0
aW5nIHRoZSBOYXRpdmVJbWFnZSB3aWxsIGJlIG9ic2VydmVkIGJ5CisgICAgICAgIFJlbW90ZVJl
c291cmVDYWNoZSBzdWNoIHRoYXQgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIEdQVVAgY2Fj
aGUgd2hlbgorICAgICAgICB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZCBpbiBXZWJQLgorCisgICAg
ICAgIFRoZSBuZXcgc3RydWN0dXJhbCBoaWVyYXJjaHkgb2YgdGhlIGJpdG1hcCBpbWFnZSBpcyB0
aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0gQ2FjaGVkSW1hZ2UgKHJlc3BvbnNpYmxlIG9mIHJl
Y2VpdmluZyB0aGUgZW5jb2RlZCBpbWFnZSBkYXRhKQorICAgICAgICAgIC0gQml0bWFwSW1hZ2Ug
KHJlc3BvbnNpYmxlIG9mIGRlY29kaW5nIHRoZSBpbWFnZSBkYXRhKQorICAgICAgICAgICAgLSBO
YXRpdmVJbWFnZSAocmVwcmVzZW50cyBhbiBpbWFnZSBmcmFtZSBhbmQgY29udHJvbHMgdGhlIGxp
ZmUgY3ljbGUgb2YgUGxhdGZvcm1JbWFnZVB0ciBpbiBXZWJLaXQpCisgICAgICAgICAgICAgIC0g
UGxhdGZvcm1JbWFnZVB0ciAocmVwcmVzZW50cyBhIHBsYXRmb3JtIGltYWdlIGFuZCBpdCBpcyB0
aGUgcmVzdWx0IG9mIEltYWdlRGVjb2RlcikKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgICogcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5tbToKKyAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZp
ZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5kaWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6CisgICAgICAg
IChjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zv
cm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lOjpuYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVl
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQXRJbmRleENhY2hlSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNo
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUlt
YWdlQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2Fj
aGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpwbGF0Zm9ybUltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJB
VkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5Jbmxp
bmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRo
VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6ZmlsbFNoYWRvd0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNlVG9J
bWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNs
ZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZUhhc0FscGhhKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZh
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNv
cHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJh
d0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
Om5hdGl2ZUltYWdlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFn
ZUhhc0FscGhhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZl
SW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvclNvdXJjZUdyYXBoaWMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Z2RrVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnRpZmZSZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c25hcHNob3ROU0ltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwOgorICAgICAg
ICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2
ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3JvcHBl
ZEltYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6Y2xlYXJTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6
OmltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjplbWl0RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisK
IDIwMjAtMTEtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIEltYWdlQnVmZmVyOjpmbHVzaERpc3BsYXlMaXN0IHRvIEltYWdlQnVmZmVy
OjpzdWJtaXREaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5MWMxYmVkYmI1ZDg2NWEzMDY0NGExODcz
MjQyZDZkNmIzZjI1MDA5Li5kZGY5NWM1YTQ5OWM1M2Y5M2MxZWIwNjg2ZjJiNzhlMjg3YjZmMmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTExLTA5ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUg
bGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0
aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9X
S0ltYWdlQ0cuY3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdl
VVJMKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp1aUltYWdlRm9ySW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWxpdmVyRGVs
YXllZERyb3BQcmV2aWV3SWZQb3NzaWJsZTpdKToKKyAgICAgICAgKHVpSW1hZ2VGb3JJbWFnZSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hhbmRsZURyb3BCeUluc2VydGluZ0ltYWdlUGxh
Y2Vob2xkZXJzOnNlc3Npb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRh
dGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29w
eU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKwogMjAyMC0xMS0wOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgSW1h
Z2VCdWZmZXI6OmZsdXNoRGlzcGxheUxpc3QgdG8gSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmE2MjU3ZTc1YWRlOTQ2YTE4OGFl
ODVlODBmYmExNTdjMWY2YzJjNC4uNWU2NjVhNTc2MjAyMDhlZGU4NjU4YzJmNmZhOGZjZTU1MzZk
YzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTExLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2Ug
YnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNworCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICAqIERPTS9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUg
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6CisgICAgICAgICogTWlzYy9XZWJD
YWNoZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGlu
aXRXaXRoSW1hZ2U6dGV4dEluZGljYXRvckRhdGE6c2NhbGU6XSk6CisKIDIwMjAtMTEtMDkgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5NjAzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzYxNDYyMzFhMmIzYTFlZWYwYzNh
MmUzZDE0MTI2N2RmNmFhYWRkOS4uZjc4OTk4YTdiNTM2NGNlNGRiZjU0MmJkMDFjYjFjNTFlNWYz
NTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMjE3LDEzICsxMjE3LDEzIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bURpc3BsYXkuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTI5NGZiYTA4ZTQ3OWQxMTk0Zjc3ZjE3
Nzc0NzIxOWNjY2M0MjI3NS4uZDgzNzI5M2E1Nzg0YTM5ODVjYTEwN2JhMjA5NTVlMTU4MDAxYThk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE5NDQsNiArMTk0NCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZl
MWIzMTcxN2I4ODgxMTcyMTA4MjJiZTI3MGJkNjQxYmNhYjBlOTcuLjY2OTYxZmMwOWU4YmZmYzhj
YWQxMzFkZmZmYTYzOTAxMjkwYjU4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTksNyArMjE1OSw3IEBACiAJCTcyNEVE
MzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFE
QzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkw
IC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZF
MjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBs
YXRmb3JtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQw
MDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQy
M0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk1OCw2ICs5OTU4LDcgQEAK
IAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9y
RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyog
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk2OCw3ICs5OTY5LDcgQEAKIAkJNzI2NkYwMjgy
MjQzMTIwMzAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8q
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Fu
aW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQxNyw4ICsyNjQxOCw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8q
IE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5
ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1MjM5NkIyNTRDQURD
MjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAy
MkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAg
LyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywK
IAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAq
LywKQEAgLTI2NDI3LDYgKzI2NDI4LDcgQEAKIAkJCQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcg
LyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQ
YXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAorCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8s
CiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAq
LywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXll
ci5oICovLApAQCAtMzM0NTAsNyArMzM0NTIsNiBAQAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4
MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0Qz
QzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNkQ1NkUz
MjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzI2
RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNS
ZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8q
IE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzM2NzUsNiArMzM2NzYsNyBA
QAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRm
b3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5NTFENTRGNUZCMDBE
RDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjZENTZFMjI1
M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUw
NjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXli
b2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYg
LyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAppbmRleCA2ZDI3ZjM2YzE3ODEzNWM5YWRjMWViZmJlMjYzNWNkNTU5
MDI2NDhkLi42ZGJiNzk3NWVkYjJiZGFjY2ZmNDBiMDA0ZTE0MjAzNWE3ODdjYTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCBi
b29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogICAg
IHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSFRNTFZpZGVvRWxlbWVu
dDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CmluZGV4IDE3ZDY1MjE5MjA1MzdmY2RlOGMwNGI0Mjc4MTZkY2E3NzU0NTU5MmIuLjgxZjA4M2E1
MGM2NDc2MmJlMjk1YTNhNjMxMjQ0NmQ2YmYyYjkzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5
IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBi
eSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8g
U2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2NjMxNmZiMGNkNTNhNmYw
Nzk1MzI5MjBjZjA0MmMyZTYxMzA1NTAwLi4xODBiOWI5MWMwMDM0ODY1MjE3M2MzNDc3MzZkMWQx
ZmFmMjkyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTYzNSw4ICsxNjM1LDggQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdl
KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGUKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCiAjaWYg
VVNFKENHKQotICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSkgewotICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZs
b2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0
LCBzcmNSZWN0KTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHZpZGVvLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSkgeworICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBGbG9hdFNp
emUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDE3YmE1MWZlMGU2Y2U3
MWQ4YzljNThhMGIwNzM4MmY2NmNlZmJlMDguLjc3Mjk1M2MyZTY2NjExN2JjMGIzY2NiYzNiYmZj
ZWQ2MGUxNDZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5tbQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBib29sIGluZGljYXRvcldhbnRz
TWFudWFsQW5pbWF0aW9uKGNvbnN0IFRleHRJbmRpY2F0b3ImIGluZGljYXRvcikKIAogICAgIEZs
b2F0U2l6ZSBjb250ZW50c0ltYWdlTG9naWNhbFNpemUgPSBfdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlKCktPnNpemUoKTsKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAv
IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNv
bnRlbnRzSW1hZ2U7CiAgICAgaWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgqX3Rl
eHRJbmRpY2F0b3IpKQogICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNv
bnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICBlbHNlCkBAIC0y
MjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgaW5kaWNhdG9yV2FudHNNYW51YWxBbmltYXRpb24o
Y29uc3QgVGV4dEluZGljYXRvciYgaW5kaWNhdG9yKQogICAgICAgICBbdGV4dExheWVyIHNldEJv
cmRlckNvbG9yOmJvcmRlckNvbG9yLmdldCgpXTsKICAgICAgICAgW3RleHRMYXllciBzZXRCb3Jk
ZXJXaWR0aDpib3JkZXJXaWR0aF07CiAgICAgICAgIFt0ZXh0TGF5ZXIgc2V0RGVsZWdhdGU6W1dl
YkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKLSAgICAgICAgW3RleHRM
YXllciBzZXRDb250ZW50czooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CisgICAg
ICAgIFt0ZXh0TGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdlIGlkKWNvbnRlbnRzSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV07CiAKICAgICAgICAgUmV0YWluUHRyPENBU2hhcGVMYXllcj4g
bWFza0xheWVyID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAg
ICBbbWFza0xheWVyIHNldFBhdGg6dHJhbnNsYXRlZFBhdGgucGxhdGZvcm1QYXRoKCldOwpAQCAt
MjY2LDggKzI2Niw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3Jl
YXRlQm91bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1l
SW50ZXJ2YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAg
UmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2lj
QW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdl
KCktPm5hdGl2ZUltYWdlKCk7Ci0gICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihf
X2JyaWRnZSBpZCljb250ZW50c0ltYWdlLmdldCgpXTsKKyAgICBhdXRvIGNvbnRlbnRzSW1hZ2Ug
PSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFtjcm9z
c2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2Rl
OmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3Zl
ZE9uQ29tcGxldGlvbjpOT107CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXREdXJhdGlvbjpk
dXJhdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKaW5kZXggYjNiNWNmODk0NzY2MDRjNDNkOWY0ODU3NzYyZTU1MzI3ODNmZGExNy4u
YTEyYWY0NTkwNzlmMDUzYzg2Y2U5ODI5N2JkMzRjYmY5ZDljYTI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7
CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8
TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1h
Z2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NvdXJjZShJbWFnZVNvdXJjZTo6Y3JlYXRlKFdURk1vdmUo
aW1hZ2UpKSkKIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaQog
ICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBkZWNvZGluZ1N0YXR1czsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRl
ZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRh
cmdldENvbnRleHQpCiB7CiAgICAgaWYgKCFmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSkgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0
bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsIHdhcyAlZCwgcmVz
YW1wbGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZnJhbWVTdWJzYW1wbGluZ0xldmVsQXRJbmRleChp
bmRleCkpKTsKQEAgLTE0MiwxNyArMTQyLDE3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
OjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4LCBTdWJzYW1wCiAg
ICAgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0
aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZO
ZWVkZWQoMCwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFyZ2V0Q29udGV4dCk7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4Q2Fj
aGVJZk5lZWRlZChtX2N1cnJlbnRGcmFtZSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgdGFy
Z2V0Q29udGV4dCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zv
cm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcmVzcGVjdE9yaWVudGF0aW9uLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJv
b2wgcmVzcGVjdE9yaWVudGF0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQpCiB7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRhcmdl
dENvbnRleHQpOwogCkBAIC0xNzEsMTggKzE3MSwxOCBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
YwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIGNvcnJlY3RlZFNpemVGbG9h
dCk7CiAgICAgRmxvYXRSZWN0IHNvdXJjZVJlY3QoRmxvYXRQb2ludCgpLCBzb3VyY2VTaXplKTsK
IAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc291cmNlU2l6
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CisgICAgYnVmZmVyLT5j
b250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIHNv
dXJjZVJlY3QsIHsgb3JpZW50YXRpb24gfSk7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpzaW5r
SW50b05hdGl2ZUltYWdlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoQ0cpCi1OYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHNpemVfdCBj
b3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKGksIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwotICAgICAg
ICBpZiAoaW1hZ2UgJiYgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSA9PSBzaXplKQorICAgICAgICBp
ZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KIApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWMKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1WZWN0b3I8TmF0aXZlSW1h
Z2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQorVmVjdG9yPFJlZjxOYXRp
dmVJbWFnZT4+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQogewotICAgIFZlY3Rv
cjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBp
bWFnZXM7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChhdXRvIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGkpKQotICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChpbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKG1ha2VSZWYoKmltYWdlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGltYWdlczsKQEAgLTIxMSwxMCArMjExLDEwIEBAIGJvb2wgQml0
bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQg
aXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUg
PSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6
ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0
aEFzSGVpZ2h0KCkpCiAgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1h
Z2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlcwogICAgIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgPSBtX2FsbG93U3Vi
c2FtcGxpbmcgPyBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoY29udGV4dCwgc2NhbGVG
YWN0b3JGb3JEcmF3aW5nKSA6IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9
ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGlu
dD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0
aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAob3B0aW9u
cy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAgICAg
ICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUg
fHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CkBAIC0zMjIsOSArMzIyLDkgQEAgSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXMKICAgICBhdXRvIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigp
OwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpIHsK
ICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9y
aWVudGF0aW9uIH0pOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsgb3B0
aW9ucywgb3JpZW50YXRpb24gfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShv
cmllbnRhdGlvbikpLCBvcHRpb25zKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
Y29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlv
bikpLCBvcHRpb25zKTsKIAogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFt
ZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDNiNjg5MDY3ODM1Njli
MDFjYWJhMTJmZDYwMWFkNTYxOTg0YjE3YjUuLjljNTllN2FlZGMwMmU2YmE4NzU2OGEyNWZlYWNk
NjJjZThhOWE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaApAQCAtNTMsNyArNTMsMTEgQEAgY2xhc3MgVGltZXI7CiAKIGNsYXNzIEJpdG1h
cEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJp
dG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIgPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSwgb2Jz
ZXJ2ZXIpKTsKKyAgICB9CisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFJlZlB0
cjxOYXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uo
V1RGTW92ZShuYXRpdmVJbWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTM1LDIzICsxMzks
MjMgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1h
Z2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3Bl
Y3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRp
dmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNm
b3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogI2lmIFVTRShDRykK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxOYXRp
dmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWY8TmF0aXZlSW1hZ2U+PiBmcmFt
ZXNOYXRpdmVJbWFnZXMoKTsKICNlbmRpZgogCiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxl
QXRJbmRleChzaXplX3QpOwogICAgIHZvaWQgZGVjb2RlKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAK
IHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIm
JiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJ
bWFnZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsK
IAotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyBy
ZXR1cm4gbV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQotICAgIE5hdGl2ZUlt
YWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7
IH0KKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRl
ZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52
YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBv
dXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1h
Z2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTE5OCw3ICsyMDIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVw
cmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYpOworICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmPE5hdGl2ZUlt
YWdlPj4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5k
ZXggMjIzZDlkYzE4M2QwM2UzZjRjYzM1MWY0ZGE2ZjZmODkzZjBhYjVlZi4uODU0MDIxNWY2MjM3
Y2MwYTNkNjI1ZTMyZmE5NjdkZjlhNjJlYzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFja2VuZC0+
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgOiAwOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGNv
cHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VC
dWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0lu
dG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCmluZGV4IDMwYjg4NDkxOWIyYzYwNDVmNzk5NmMxOWExNWJhZjYzOWJj
NTI2OWUuLjAyNThkNjQxZDc2NGI5OWFiMWNkOGNkZjk0Mjk4ZDBkZGY4N2IxNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVu
cy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwbGF0Zm9ybURy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7CisgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMGIzNWFjNjRmYThiOWZmZTBjOTQ0ODVlOTczZjI0YzJhYTBmMzQ5MC4u
ZmNjYWVlZDdmN2FhMGMxZDZjMGMxNzJiYjU2MGQ1ZjA1M2U4YTNjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3OSw3
ICszNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdS
ZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2Ug
fSk7CkBAIC02NTAsNyArNjUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKLSAg
ICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZv
aWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIEZs
b2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0
IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaAppbmRleCBiYjliMGM5ZmIxZTYzOWQ5OWY5ODM3ZmUwNmRmMGFjNzAy
OTZjOTcyLi4yOGY0NTdhMjRhYWNjNDZjOWYyN2ZlYTY5NzkxMDdlODA2MzM0YzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCkBAIC01OSw4ICs1OSw2IEBAIHByaXZhdGU6
CiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VTdXJm
YWNlOwogI2VsaWYgVVNFKENHKQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOwogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fZm9y
bWFsaXplZFJHQkE4RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDZlMjIyYzAyZjJkOWFl
MzY0MDYxYjczZDljMzdiNzdiMjliMDNiNDYuLjlkNDQwZDA1M2IwNzgwZDhkNDI1YjY2ZWI5NTEw
ZDYxZGM4ZWNkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxl
UnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggYjU5NjBhZDVmZjdjNGRhNTZk
ZjRmNWE0YTc5YWRkOTg4NDEzNmQ3ZC4uODJlZDI2ODU4YzM1ODVmMmYwOTM4YTI1OWY1NDZlYTVj
NGMzZTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUlt
YWdlLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VsaWYgUExB
VEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU0ltYWdlOwpAQCAtMzksNyArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsK
LSAgICAKK2NsYXNzIE5hdGl2ZUltYWdlOworCiBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50
ZWQ8SWNvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwpA
QCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRo
ZSBQTEFURk9STShJT1NfRkFNSUxZKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdl
KFBsYXRmb3JtSW1hZ2VQdHImJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0
LDggKzY1LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgSWNvbihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24oUmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNGI5YmVlZDg2NTdl
ZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2ZhYi4uNDM2YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZm
NGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1MywxMCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRp
bGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07
CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdl
IGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGExNzVkZGE1NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4
NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2Mzc0MjJmM2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5ldyBJbWFnZUJhY2tpbmdTdG9yZShvdGhlcikpOwog
ICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Q7CisgICAgUGxhdGZvcm1J
bWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDNkM2Y4MDA3Y2I3ZWU5MmM2YTAwZThmZTA4NjVkMDU4MTE0ZDNi
YzMuLjhmNjJkYzZhMzQ4M2M4NDNkMDViZWY2NzM0ZGM1NGExM2I0YjBlNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3
ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JTcAogICAgIHJldHVybiBidWZmZXI7CiB9
CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIp
CiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAw
NGUyYWJjNzk1ZDg3NjQxZmE4NDk0MTY1NzRmNDQ1ZWQ2MzhlMzQ2Li5jZjQ3YzE5ZjBjZTE3MDRm
MDI1MTk3MjBiMzkyYTAwMjVlOWUxNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKLSAgICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIg
c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+KTsKKyAgICBzdGF0aWMgUmVm
UHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4p
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFn
ZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1
ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZSgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpID0gMDsKICAgICB2aXJ0dWFsIFJl
ZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJl
c29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4MDE3YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdj
MDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmUKICAgICByZXR1cm4gYmFja2VuZFNp
emU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRp
dmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGNiNTg3MjU2N2YwODgzYjViZDAyZTBlZWNi
OGNlZmRiZTcxMGE4ZWMuLmFhOWIzNDFhMDU3M2YyYWQ0ZTllZDMwNTdjMDQyMWU5NTkxYWU1YzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dM
LmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTQzLDYgKzQyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiBjbGFzcyBIb3N0
V2luZG93OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBOYXRpdmVJbWFn
ZTsKIAogZW51bSBCYWNraW5nU3RvcmVDb3B5IHsKICAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBH
dWFyYW50ZWUgc3Vic2VxdWVudCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCkBAIC03Nywx
MyArNzcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiA0ICogbV9iYWNrZW5kU2l6ZS5hcmVhKCkudW5zYWZlR2V0KCk7IH0KICAgICB2
aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAK
LSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0ID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJ
bWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBz
aW5rSW50b05hdGl2ZUltYWdlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNzEwNGQwNzE5NGYzODE1OWIzM2Jl
YTZhYWVkODg1ZDcwOWJkOTgxNy4uYWFhNTFiZGRjZTA0ZmQ4NWU5ZWE2MWQzODJjYzNiMTFlZTZl
MjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAjaW5jbHVk
ZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBmcmFtZUFs
bG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CisgICAgdmlydHVhbCBQ
bGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5jcHAKaW5kZXggODNiNzhiNmVjMDA2ZmM1NDc3NDUyZmZkMDgxNTI3YjJkZDkxNjE4NC4uY2Mz
YjYzNjAyOTVjZTBjNWI5ZGIxNDE1MDRjZWNhNjI2ZWRiYTRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dW5zaWduZWQgSW1hZ2VGcmFtZTo6Y2xlYXJJbWFnZSgpCiAKICAgICB1bnNpZ25lZCBmcmFtZUJ5
dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOwogCi0gICAgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdl
cyhtX25hdGl2ZUltYWdlKTsKKyAgICBtX25hdGl2ZUltYWdlLT5jbGVhclN1YmltYWdlcygpOwog
ICAgIG1fbmF0aXZlSW1hZ2UgPSBudWxscHRyOwogICAgIG1fZGVjb2RpbmdPcHRpb25zID0gRGVj
b2RpbmdPcHRpb25zKCk7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBDb2xvciBJbWFnZUZyYW1lOjpz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogICAgIGlmICghaGFzTmF0aXZlSW1hZ2UoKSB8
fCBtX3NpemUgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAg
ICByZXR1cm4gbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9uYXRpdmVJbWFnZSk7
CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2UtPnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKaW5k
ZXggNTRhOWM5ZGYzM2I0ZDMzYjEyNzVmOTE0NmZmODg0MmUzN2MwMDA3MS4uYWE3M2FlMzYzODll
YzJmYWM0MjFlYzM1YzNlNmM2NzE4MTFlN2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc05hdGl2ZUltYWdlKCkgPyAo
c2l6ZSgpLmFyZWEoKSAqIHNpemVvZih1aW50MzJfdCkpLnVuc2FmZUdldCgpIDogMDsgfQogICAg
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vi
c2FtcGxpbmdMZXZlbDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRp
dmVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2U7IH0KIAogICAgIHZvaWQgc2V0
T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9u
ID0gb3JpZW50YXRpb247IH07CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToK
ICAgICBEZWNvZGluZ1N0YXR1cyBtX2RlY29kaW5nU3RhdHVzIHsgRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fbmF0
aXZlSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX25hdGl2ZUltYWdlOwogICAgIFN1
YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCB9OwogICAgIERlY29kaW5nT3B0aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGY4
ZTIwMjhjM2MzYjNmNjE2YzZhMTM3OGE5NGVmZGZjNGU1YjE5NDkuLjE0ODAyMWNlZWU0NTVhZWJi
MzA1ZGZmMzU2MTNlYzQ3NDMzZjU1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSW1hZ2VTb3VyY2U6
OkltYWdlU291cmNlKEJpdG1hcEltYWdlKiBpbWFnZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ28KIHsKIH0KIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKE5hdGl2ZUltYWdl
UHRyJiYgbmF0aXZlSW1hZ2UpCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogICAgIDogbV9ydW5Mb29wKFJ1bkxvb3A6OmN1cnJlbnQo
KSkKIHsKICAgICBtX2ZyYW1lQ291bnQgPSAxOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6Omdyb3dGcmFtZXMoKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG5ld1NpemUpOwog
fQogCi12b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoUmVmUHRyPE5hdGl2
ZUltYWdlPiYmIG5hdGl2ZUltYWdlKQogewogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkgPT0g
MSk7CiAgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lc1swXTsKQEAgLTI0NSw4ICsyNDUs
OCBAQCB2b2lkIEltYWdlU291cmNlOjpzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlKQogICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdl
KTsKIAogICAgIGZyYW1lLm1fZGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6Q29tcGxl
dGU7Ci0gICAgZnJhbWUubV9zaXplID0gbmF0aXZlSW1hZ2VTaXplKGZyYW1lLm1fbmF0aXZlSW1h
Z2UpOwotICAgIGZyYW1lLm1faGFzQWxwaGEgPSBuYXRpdmVJbWFnZUhhc0FscGhhKGZyYW1lLm1f
bmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPnNp
emUoKTsKKyAgICBmcmFtZS5tX2hhc0FscGhhID0gZnJhbWUubV9uYXRpdmVJbWFnZS0+aGFzQWxw
aGEoKTsKIH0KIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVz
IGRlY29kaW5nU3RhdHVzKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNh
Y2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluCiAKICAgICBpZiAoZnJhbWUubV9kZWNvZGluZ09wdGlvbnMuaGFzU2l6ZUZvckRyYXdpbmco
KSkgewogICAgICAgICBBU1NFUlQoZnJhbWUuaGFzTmF0aXZlSW1hZ2UoKSk7Ci0gICAgICAgIGZy
YW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5uYXRpdmVJbWFnZSgpKTsKKyAgICAg
ICAgZnJhbWUubV9zaXplID0gZnJhbWUubmF0aXZlSW1hZ2UoKS0+c2l6ZSgpOwogICAgIH0gZWxz
ZQogICAgICAgICBmcmFtZS5tX3NpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6Y2FjaGVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW4KICAgICAgICAgZnJhbWUubV9kdXJhdGlvbiA9IG1fZGVjb2Rlci0+ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2
ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiBkZWNvZGluZ09wdGlvbnMsIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQordm9pZCBJ
bWFnZVNvdXJjZTo6Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleChQbGF0Zm9ybUltYWdlUHRyJiYg
cGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0
YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXpl
KCkpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbaW5kZXhdOwpAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KE5hdGl2
ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNpemVfdCBpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE1vdmUgdGhlIG5ldyBpbWFnZSB0byB0aGUgY2FjaGUuCi0gICAgZnJhbWUubV9uYXRpdmVJ
bWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOworICAgIGZyYW1lLm1fbmF0aXZlSW1hZ2UgPSBO
YXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOwogICAgIGZyYW1lLm1f
ZGVjb2RpbmdPcHRpb25zID0gZGVjb2RpbmdPcHRpb25zOwogICAgIGNhY2hlTWV0YWRhdGFBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ1N0YXR1cyk7CiAKQEAgLTMwMSw3
ICszMDEsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRp
dmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgIGRlY29kZWRTaXplSW5jcmVh
c2VkKGZyYW1lLmZyYW1lQnl0ZXMoKSk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTmF0
aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykK
K3ZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhQbGF0Zm9y
bUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25z
LCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKIHsKICAgICBpZiAoIWlzRGVjb2RlckF2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmIG5h
dGl2ZUltYWdlLCBzaXoKICAgICBBU1NFUlQoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkpOwogCiAg
ICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBhIG5ldyBvbmUKLSAgICBj
YWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOworICAgIGNhY2hl
UGxhdGZvcm1JbWFnZUF0SW5kZXgoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSwgaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwsIGRlY29kaW5nT3B0aW9ucywgZGVjb2RpbmdTdGF0dXMpOwogICAgIExPRyhJ
bWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVsZCBoYXMgYmVl
biBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBpbmRleCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGltYWdlIHdpdGggdGhlIHJl
YWRpbmVzcyBvZiB0aGUgbmV3IGZyYW1lIE5hdGl2ZUltYWdlLgpAQCAtMzYyLDggKzM2Miw4IEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAg
ICAgICBzdGFydGluZ1RpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJbWFnZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgotICAg
ICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UgPSBwcm90ZWN0ZWREZWNvZGVyLT5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5z
dWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zKTsKLSAgICAgICAg
ICAgIGlmIChuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IHBy
b3RlY3RlZERlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGZyYW1lUmVxdWVzdC5pbmRl
eCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09w
dGlvbnMpOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtSW1hZ2UpCiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkltYWdlU291cmNlOjolcyAtICVwIC0gdXJsOiAlcyBbZnJhbWUgJWxkIGhh
cyBiZWVuIGRlY29kZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3Vy
Y2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAt
IHVybDogJXMgW2RlY29kaW5nIGZvciBmcmFtZSAlbGQgaGFzIGZhaWxlZF0iLCBfX0ZVTkNUSU9O
X18sIHByb3RlY3RlZFRoaXMucHRyKCksIHNvdXJjZVVSTC51dGY4KCkuZGF0YSgpLCBmcmFtZVJl
cXVlc3QuaW5kZXgpOwpAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3Rh
cnRBc3luY0RlY29kaW5nUXVldWUoKQogICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5n
RHVyYXRpb24gLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAg
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJl
YWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhy
ZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgcHJvdGVj
dGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291cmNlVVJMID0gc291cmNlVVJM
Lmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpLCBmcmFt
ZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpcywgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSwgcHJvdGVjdGVkRGVjb2Rlciwgc291
cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBwbGF0Zm9ybUltYWdlID0gV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgcXVldWUgbWF5IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2UgZ290IHRo
ZSBmcmFtZSBOYXRpdmVJbWFnZSwgc3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBjYWxsZWQu
CiAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZERlY29kaW5nUXVldWUucHRyKCkgPT0gcHJv
dGVjdGVkVGhpcy0+bV9kZWNvZGluZ1F1ZXVlICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0g
cHJvdGVjdGVkVGhpcy0+bV9kZWNvZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChw
cm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3Qp
OwogICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0UXVldWUu
cmVtb3ZlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXhBc3luYyhXVEZNb3ZlKG5hdGl2ZUltYWdlKSwgZnJhbWVSZXF1ZXN0
LmluZGV4LCBmcmFtZVJlcXVlc3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29k
aW5nT3B0aW9ucywgZnJhbWVSZXF1ZXN0LmRlY29kaW5nU3RhdHVzKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+Y2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRleEFzeW5jKFdURk1v
dmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNh
bXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ09wdGlvbnMsIGZyYW1lUmVxdWVzdC5k
ZWNvZGluZ1N0YXR1cyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVs
ZCB3aWxsIG5vdCBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBz
b3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAgICAg
IH0pOwpAQCAtNDU0LDkgKzQ1NCw5IEBAIGNvbnN0IEltYWdlRnJhbWUmIEltYWdlU291cmNlOjpm
cmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtCiAgICAgICAg
IGlmIChmcmFtZS5oYXNGdWxsU2l6ZU5hdGl2ZUltYWdlKHN1YnNhbXBsaW5nTGV2ZWwpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcGVyZm9ybSBzeW5jaHJvbm91
cyBpbWFnZSBkZWNvZGluZyBpbiB0aGlzIGNvZGUuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlID0gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbFZhbHVlKTsKKyAgICAgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gbV9kZWNv
ZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVl
KTsKICAgICAgICAgLy8gQ2xlYW4gdGhlIG9sZCBuYXRpdmUgaW1hZ2UgYW5kIHNldCBhIG5ldyBv
bmUuCi0gICAgICAgIGNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4KFdURk1vdmUobmF0aXZlSW1hZ2Up
LCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpOworICAgICAgICBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsVmFsdWUsIERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNjk3LDE5ICs2OTcsMjEgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0VGFyZ2V0
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiB9CiAjZW5kaWYK
IAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGlz
RGVjb2RlckF2YWlsYWJsZSgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOworICAgIGlmICghaXNEZWNvZGVyQXZh
aWxhYmxlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6
OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXg8TmF0aXZlSW1hZ2VQdHI+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUlt
YWdlKSk7CisgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4PFJlZlB0cjxOYXRpdmVJbWFn
ZT4+KGluZGV4LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlU291cmNlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7Ci0gICAgcmV0dXJuIGZy
YW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxOYXRpdmVJbWFnZVB0cj4oaW5kZXgsICgm
SW1hZ2VGcmFtZTo6bmF0aXZlSW1hZ2UpLCBudWxscHRyLCBJbWFnZUZyYW1lOjpDYWNoaW5nOjpN
ZXRhZGF0YUFuZEltYWdlLCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gZnJhbWVNZXRh
ZGF0YUF0SW5kZXhDYWNoZUlmTmVlZGVkPFJlZlB0cjxOYXRpdmVJbWFnZT4+KGluZGV4LCAoJklt
YWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0
YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAppbmRleCBkOThlYzBlN2Y2ZTUyY2U1NTg5ZWRkOTliNDJjN2FkNjNj
ZWRmMDFkLi5hNmY0YWIxM2RlZWZkYTM2NTJiYjkzM2NiMmUyNjJhNWZjYjYwMzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJj
ZShpbWFnZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYg
bmF0aXZlSW1hZ2UpCisgICAgc3RhdGljIFJlZjxJbWFnZVNvdXJjZT4gY3JlYXRlKFJlZlB0cjxO
YXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQpAQCAtMTI1
LDEzICsxMjUsMTMgQEAgcHVibGljOgogI2lmIFVTRShESVJFQ1QyRCkKICAgICB2b2lkIHNldFRh
cmdldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0Kik7CiAjZW5kaWYKLSAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4
Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQp
OworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KTsKIAogcHJp
dmF0ZToKICAgICBJbWFnZVNvdXJjZShCaXRtYXBJbWFnZSosIEFscGhhT3B0aW9uID0gQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwotICAgIEltYWdlU291cmNlKE5hdGl2ZUlt
YWdlUHRyJiYpOworICAgIEltYWdlU291cmNlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNvbnN0
PgogICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxUPiogY2Fj
aGVkVmFsdWUgPSBudWxscHRyKTsKQEAgLTE1MiwxMCArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWNvZGVkU2l6ZVJlc2V0KHVuc2lnbmVkIGRlY29kZWRTaXplKTsKICAgICB2b2lkIGVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZChFbmNvZGVkRGF0YVN0YXR1cyk7CiAKLSAgICB2b2lkIHNl
dE5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyJiYpOworICAgIHZvaWQgc2V0TmF0aXZlSW1hZ2Uo
UmVmUHRyPE5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlTWV0YWRhdGFBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6
SW52YWxpZCk7Ci0gICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChOYXRpdmVJbWFnZVB0
ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERl
Y29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOwotICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzKTsKKyAgICB2
b2lkIGNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0ciYmLCBzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVz
ID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdl
QXRJbmRleEFzeW5jKFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CiAKICAgICBzdHJ1Y3Qg
SW1hZ2VGcmFtZVJlcXVlc3Q7CiAgICAgc3RhdGljIGNvbnN0IGludCBCdWZmZXJTaXplID0gODsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApp
bmRleCA3YWFhMWVmYjNhNWUzNTM2MTZiMjI5YmI1YTNmMjcwYWQ1Y2ExMGNmLi41OTU2N2QwYzM5
OTMyYjBlN2IxN2ZiNjVjNzJlNzZkZmE3ZjE5NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKiBjb24KICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAppbmRleCAzM2MxZGNhODgyNDEwMjBmNGZkMWRmNjJmNTZmMGFjZTc2MDhmOGE4Li5hMDU3OGFl
MDNlNzA3Yzg1NTY5NjRhNTM2ZTlhYjY0YTUzZTg1Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwog
Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgdXNp
bmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3
b3JrU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggYzM2YzJmNTU1NThhNmY3M2M2ZTc1NDM3OWEzNDMx
MTQwMzhiMGI5MS4uN2U5MGNkZGRmYzg3MDFiYmNkYTcyZDk0YWU0ZGI4ZjBkYTAxMGRiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9h
dFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0s
IGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YxM2RjYWIzNWFjOGM1YTk4MWRkZDlhMzIw
ODg4ODRmZDRhYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXRpdmVJbWFnZS5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZUltYWdlPiBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQoreworICAgIGlmICgh
cGxhdGZvcm1JbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmF0aXZlSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkpOworfQorCitOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCisg
ICAgOiBtX3BsYXRmb3JtSW1hZ2UoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKaW5kZXggMDMzNDc1OTYwN2Y4ZjIwZGUzMTI0ODU5YTZmMGYwOTQ1MWUx
OGU1Yi4uZDA2MmI5N2ZkNDQ0ZjBjZWFhMjJiZGQ4MzkwMDg4YzMzMjAyYzI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yNywxNiAr
MjcsMzAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgor
I2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENvbG9yOwotY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdl
IDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKIAotV0VCQ09SRV9FWFBPUlQgSW50
U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLWJvb2wgbmF0aXZl
SW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotQ29sb3IgbmF0aXZlSW1hZ2VT
aW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLXZvaWQgY2xlYXJO
YXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
SW1hZ2U7IH0KIAotfQorICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgc2l6ZSgpIGNvbnN0Owor
ICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdDsKKworICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKKworcHJpdmF0ZToKKyAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOworCisgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2E4OThkMzk4NzM2NDExMTc0ZjE5Zjc1MTQwNzFk
MDdjOTU4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci10eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VsaWYg
VVNFKENBSVJPKQotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jZWxpZiBVU0UoV0lOR0RJKQot
I2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIFVTRShDRykKLXR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdl
UHRyOwotI2VsaWYgVVNFKERJUkVDVDJEKQotdHlwZWRlZiBDT01QdHI8SUQyRDFCaXRtYXA+IE5h
dGl2ZUltYWdlUHRyOwotI2VsaWYgVVNFKENBSVJPKQotdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVTRShXSU5HREkpCi10eXBlZGVmIFJlZlB0
cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OTJkMDdmOTQ0ZTllMzk4ZmNmNTI0ZmExOWVmMDQ1OTExMDEzZDEwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJT
aGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0Uo
Q0cpCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmV0YWluUHRyPENHSW1hZ2VSZWY+OworI2Vs
aWYgVVNFKERJUkVDVDJEKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IENPTVB0cjxJRDJEMUJp
dG1hcD47CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlUHRyID0gUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD47CisjZWxpZiBVU0UoV0lOR0RJKQordXNpbmcgUGxhdGZvcm1JbWFn
ZVB0ciA9IFJlZlB0cjxTaGFyZWRCaXRtYXA+OworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCmluZGV4IDFi
MDdmODZmMzkzMTc4ZjRjZjdmZTgzYTgxNDc4MDg0ZWJmMjI4MzEuLmFkM2MxYmI3OWFlZGNhYWUz
ZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFn
ZVB0cikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlkZW9G
dWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgPSAwOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA4
YTVmNTg3MGEzNTM1NzNkODY5NzY2OTM5MTU0ZDk3YjcyMmNmYzMwLi5mYjNiZmNkYzJiZTFlNzgx
NjY0YTI0MTk0OTNlOTViYTUzNzg3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNp
Z25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMjViZjE1OWRlNDQ1MzQ5
MTZmOTBhYmQwNzUzYTExNTU2YWM1MTJiNy4uOGNkZmM3MWI2NDUwM2RlMzMzMTYzNTljZDMzOWRk
MGQzNDg0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCkBAIC01NjcsNyArNTY3LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKICAgICBy
ZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7
CiAgICAgTG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCmluZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5
YzFlYTYuLjI2YjNkNzhmZTFiMGNlNmQ0NzZkMmE1ZTczODc1ZTM5MGUzZWRlODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlKCk7CiAKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBm
aW5hbDsKQEAgLTM0Myw3ICszNDMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlBsYXll
ckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFW
RlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9u
U2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+IG1fdmlk
ZW9UZXh0dXJlQ29waWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWPiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZjI5NDg4MTZlZGRlNzllNzhhMTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uMDBkMDg0NTM1NTQ4YWE1
MDk5ZDNmNzdlNzliNzg1MGI4OWFlOTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0x
MTI3LDcgKzExMjcsNyBAQCBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoKQogewog
ICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKLSAg
ICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSht
X2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
IDogbnVsbHB0cik7CiB9CiAKIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCkBAIC0x
MTM5LDcgKzExMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqCiB7CiAgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbkxheWVyKQogICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBk
YXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX2xhc3RJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRy
KTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQogCkBAIC0yMjkzLDcg
KzIyOTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0
ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcGl4ZWxCdWZmZXJD
b25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpKTsKKyAgICBtX2xhc3RJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9waXhlbEJ1ZmZl
ckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIu
Z2V0KCkpKTsKIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjcmVhdGluZyBidWZmZXIg
dG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydCkuc2Vjb25kcygpKTsKIH0KQEAg
LTIzMTQsOCArMjMxNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSKTsKIAotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFn
ZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgp
LCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIG1fbGFzdEltYWdlLT5zaXplKCkgfTsK
KyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbV9sYXN0SW1hZ2UsIGltYWdlUmVjdC5zaXpl
KCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQg
YW4gQVZBc3NldEltYWdlR2VuZXJhdG9yIGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0
IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxlCiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQg
bm93IHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KQEAgLTIzNDEsNyArMjM0MSw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5j
b3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgs
IGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRl
TGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAppbmRleCBlN2JmN2E3NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFiLi5hMGFm
OWI4NzRjYWU4MmFiZDNmODA5MTBmNmJhMjlkOWUzOTRiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaApAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpZExvYWRp
bmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgdXBkYXRlTGFz
dFBpeGVsQnVmZmVyKCk7CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3BlcmZvcm1UYXNrT2Jz
ZXJ2ZXI7CiAgICAgUmV0YWluUHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwog
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4gbV9yZ2JDb25mb3JtZXI7CiAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKICAgICBEZXF1ZTxSZXRhaW5QdHI8aWQ+PiBtX3Np
emVDaGFuZ2VPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggOTI1YmY0
ZTFmOTBiNTRjNDI4NjZjMjY1ODA1OWM2MTFhY2MxYmIwZS4uNzA4ZDMxYjJlOTQ3YmUzMDJmMTI2
ODZhODE5NmEwM2RhZjE0M2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTY0
LDEwICs1NjQsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRpbmdQcm9ncmVzc2Vk
OwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5n
ZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQpAQCAtNjA3LDcg
KzYwNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRh
dGVMYXN0SW1hZ2UoKQogICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsK
ICAgICB9CiAKLSAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC02MjYsOCArNjI2LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICAgICAgcmV0
dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQp
OwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3Qp
OworICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlLT5z
aXplKCkgfTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5z
aXplKCksIG91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0
VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCkBAIC0xMjE5LDcgKzEyMTksNyBAQCBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGVWaWRlb0Z1bGxzYwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIgKnZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlKTsKKyAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aAppbmRleCAwODhmMWQ5MmM5N2YzOTI1YmY5YTliYzBiMjM3OWQzNTBiZGJiY2E5Li44NzgwOTZh
ZGJkNmUyNWQ0MzE4NmJlZWIwYmFkZjQ2OGY4NmNlNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIEN1cnJlbnRGcmFtZVBh
aW50ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZTsKKyAgICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
Z0ltYWdlOwogICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4ZWxCdWZmZXJDb25m
b3JtZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA5ODlmYjg5ZGEy
YWIzOGQxZjFjMTdkNWFmZDFjYTgyMjYwMjI3Y2I0Li5hYzZjZGUzYzhkNTc5Y2JmMGE5NmIwMDM0
NDYxNmE4MmIzYzBlNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC03NjIsNyAr
NzYyLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2MKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgdXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKTsKLSAgICBtX3ZpZGVv
TGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UpOwor
ICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pbWFnZVBhaW50ZXIu
Y2dJbWFnZSA/IG1faW1hZ2VQYWludGVyLmNnSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxw
dHIpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpAQCAtOTU1LDcgKzk1NSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50
RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcikpOwotICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxC
dWZmZXIpOworICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRl
KG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpAQCAtOTc1LDE0ICs5NzUsMTQg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNnSW1h
Z2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZS5nZXQoKTsKLSAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpKTsKKyAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7Cisg
ICAgRmxvYXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUo
KSB9OwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9y
bSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9y
bTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGlt
YWdlUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Qu
c2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMuaAppbmRleCA5OWQ4NWIzZjJkYzhlNzhhNTZkMmI5MTE3ZGNmYjNjZjgwYmY3NTg1Li5iNjli
MTA3MDg5NjdmODc1ZGI4MGFlYzlkMDljMzZjZGIzYWMyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFu
YWdlck9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRp
dmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQy5tbQppbmRleCBmNjc5NTNkNjMxM2I3ZDliNjJhYzZkMWE2ZTY1NmI4MDg4NDc3
MDRkLi5mMTE4ZGI1YzNjNWNiZWJlZGU0MTFlYTU0ZDVlYWY2ZWNhMmFmN2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b0xheWVyTWFuYWdlck9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCkBAIC0xMDMsNyAr
MTAzLDcgQEAgUGxhdGZvcm1MYXllciogVmlkZW9MYXllck1hbmFnZXJPYmpDOjp2aWRlb0Z1bGxz
Y3JlZW5MYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihQbGF0Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIE5hdGl2ZUltYWdlUHRyIGN1cnJlbnRJbWFnZSkK
K3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyICp2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIgY3VycmVudEltYWdlKQogewogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID09IHZpZGVvRnVsbHNjcmVlbkxheWVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBWaWRl
b0xheWVyTWFuYWdlck9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCB2aWRl
b0Z1bGxzY3JlZW5GcmEKICAgICBzeW5jVGV4dFRyYWNrQm91bmRzKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShOYXRp
dmVJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjp1cGRhdGVWaWRl
b0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyIGltYWdlKQogewogICAgIGlm
IChtX3ZpZGVvSW5saW5lTGF5ZXIpCiAgICAgICAgIFttX3ZpZGVvSW5saW5lTGF5ZXIgc2V0Q29u
dGVudHM6KF9fYnJpZGdlIGlkKWltYWdlLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGY1NzU5
ZmIxZTgyZjA3OGNiZWM2ZmFkYzczMDZmMDI5NWE1Mzk2M2QuLmEwODQ1MTJhNTIzNGUxMWI3ZTEw
MWNiMjkyOGNjMmYwYTMyN2JlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjU5Myw3ICsyNTkzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQogICAgICAgICAv
LyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNj
YWxlZCBkb3duLAogICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNo
YW5nZXM/CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVyKFBs
YXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAobV9sYXllckNsb25lcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA4ODVmNzk5ZjZmMTFk
NGY5NTUxZjU1YWM0NmZjZTNjZTRlOGNlOTYxLi5hZWYzYzI2OGY1ZDEyNGQ0NzllNmRmZmFkOGMz
NDczZGM5OWU2YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5
TGlzdDsKIAogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEltYWdlOworY2xhc3MgTmF0
aXZlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewpA
QCAtNjAwLDggKzYwMSw4IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbnRlbnRzU29saWRD
b2xvcjsKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAg
IFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKICAgICBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA5YTU3ZWJlMmQ1NWEwNzljMzdmMWNhYjk2YTdmYjczZjVi
ZjQzOWJhLi45NzcxMjkwZjQzNjIwNmViODUzMGYyNTg0ZWI4ZTNjZmQ3YTlhNTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBhdGgu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlNoYWRvd0Js
dXIuaCIKQEAgLTE3NCwxNiArMTc1LDE2IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAKIHN0
YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRQb2ludCYg
bGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgewotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZElu
dFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFk
b3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkp
IHsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVy
T3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwg
eyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9i
YWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBt
b3N0bHkgc2FtZSBhcyBkcmF3U2hhZG93TGF5ZXJCdWZmZXIsIHNvIHdlIHNob3VsZCBtZXJnZSB0
d28uCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFn
ZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdQ
bGF0Zm9ybUltYWdlKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAg
IH0KIH0KIApAQCAtMTkxLDggKzE5Miw4IEBAIHN0YXRpYyB2b2lkIGZpbGxTaGFkb3dCdWZmZXIo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiB7CiAg
ICAgc2F2ZShwbGF0Zm9ybUNvbnRleHQpOwogCi0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVy
SW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgY2xp
cFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qo
bGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7CisgICAgaWYgKGF1dG8g
bmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSkpCisgICAgICAgIGNsaXBUb0ltYWdlQnVmZmVyKHBsYXRmb3JtQ29udGV4dCwgbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgRmxvYXRSZWN0KGxheWVyT3JpZ2luLCBleHBh
bmRlZEludFNpemUobGF5ZXJTaXplKSkpOwogCiAgICAgRmlsbFNvdXJjZSBmaWxsU291cmNlOwog
ICAgIGZpbGxTb3VyY2UuZ2xvYmFsQWxwaGEgPSBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYTsKQEAg
LTg2MCw3ICs4NjEsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3Rv
cmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUpCit2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0
aW9ucy5oCmluZGV4IDUwNWMwYWY0N2Q3YTBhNTBlOWMxOTA2NmRkOTNkZTU5NjFkNjY5MWEuLjNk
ZDkwMTM0ZDE0NWIzYTcwNmVhNTU1NGFkMjAyODkyYTk4MWU0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5o
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRv
d1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUs
IGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFn
cywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgRm9udFNtb290aGluZ01v
ZGUpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJv
X3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90Kiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIE9yaWVudGF0aW9uU2l6aW5nIG9w
ZXJhdGlvblNpemluZyA9IE9yaWVudGF0aW9uU2l6aW5nOjpOb3JtYWwpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggOWQ0MDhmNmU1ZTc4ZjBjNzA3NjgyMGQwNmE1NWJhNWM1
NTgyNDhjMy4uNjg3ODEwNjNiOTIyMTA5ZDBmMGQ1ODg2NGQ1YzYyODZlMDgwMTgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIzLDE0ICsxMjMsMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3Rh
dGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86
OmRyYXdQbGF0Zm9ybUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
fSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlz
IGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFk
b3dzLgpAQCAtMjY2LDggKzI2Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAgICAgfQog
CiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNl
ID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0
KCksIGRlc3RSZWN0KTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91
bmRzKCkgY29uc3QKQEAgLTY4MSw4ICs2ODEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAog
ICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNp
emUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucyk7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKQorICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRm
b3JtQ29udGV4dCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXpl
KGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91
bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3Bw
CmluZGV4IGZhZGIyNDNlNjc4YjcyN2YxMGIwYjZiM2IyZTkwZjA1OGJkMzkyNWUuLmM2YWE3NzE4
ZTliNDM0MTViMjUwNjQ5M2VhNWFjYzY4MDU3ZjgxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEdMQ2Fpcm8uY3BwCkBAIC01Niw5ICs1Niw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAg
ICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBp
ZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7
CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCgwKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faW1hZ2VTdXJm
YWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5wbGF0
Zm9ybUltYWdlKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVv
RWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVk
IGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKICAgICAgICAgLy8g
d2hpY2ggaXMgdHJ1ZSBhdCBwcmVzZW50IGFuZCBtYXkgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJl
IGFuZCBuZWVkcyBhZGp1c3RtZW50IGFjY29yZGluZ2x5LgogICAgICAgICAvLyAyLiBGb3IgdGV4
SW1hZ2UyRCB3aXRoIEhUTUxDYW52YXNFbGVtZW50IGlucHV0IGluIHdoaWNoIEFscGhhIGlzIGFs
cmVhZHkgUHJlbXVsdGlwbGllZCBpbiB0aGlzIHBvcnQsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKaW5kZXggYjgzOGY1Zjc2NTQ5ODZlY2Q3NTM3ZjJmMGVhMjE2NTAzYTkw
NGM1Mi4uZDJjZjQ5NWZmOTBhYTM2MThiZjJmNmM2MDZhYWZjMWY0ZGI5NTkzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODQsMTcgKzI4NCwxNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBp
bWFnZSwgY29uc3QgRmxvYXRSZQogICAgIGltYWdlLmRyYXcoZ3JhcGhpY3NDb250ZXh0KCksIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8m
IHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBo
YSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUlt
YWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
fSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgQ2Fpcm86OmRyYXdQ
YXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25l
c3MpCkBAIC00MTksOCArNDE5LDggQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNsaXBCb3VuZHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
IHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIGlmIChhdXRvIG5hdGl2
ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisg
ICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggOGE5MzdkYTIzOWQ2ZDZjZGQwYTA0OGNj
Y2Q4MzY3OTEwNWQ5N2NhYy4uMzFhMGY1NDAwZWU4NGUwOGIwYzVkZDRmOGU1MmYxOTczNTM1ZDZl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpU
aWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGFjNGIxZjc5MDc2ODRjYTZk
Yjg2MjcyMTM5OTdkNGI1NmE4MjBlOGYuLjdkYTE3MGU1OTkwYmUxODU5MGU5MWQ0ZDFjYWE3ZDBl
MzEwM2Y4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBjb25zdCBhdXRvJiBkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CiAKICAgICBpZiAoYXV0byBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRyYXdOYXRpdmVJ
bWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3Jl
OjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKKyAgICAgICAg
ZHJhd1BsYXRmb3JtSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0
aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0
aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGlu
YXRpb25Db250ZXh0U3RhdGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAt
ODAsNyArODAsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0KIAogICAgIGlmIChh
dXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8g
Q29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86
OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCks
IG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIG1fbG9naWNhbFNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGYxZjc1
NzI2YWE4M2Q4NGFkYmIzNzJhZWY3NmRmYzRjOGVmN2I4NS4uOTMxMDhkMDRlYzliMTFiZjBlNTQy
NTc2ZmYzZDc5OTM0YjgwN2I4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fp
cm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7
CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTggQEAgTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0
KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgp
KTsKIAotICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpj
cmVhdGUoV1RGTW92ZShjb3B5KSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdT
dG9yZToKLSAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUlt
YWdlOjpjcmVhdGUobWFrZVJlZlB0cihtX3N1cmZhY2UuZ2V0KCkpKTsKICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VU
b0ltYWdlKCkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKICAgICBCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlw
ZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xP
Ul9BTFBIQSkKQEAgLTEwMCw3ICsxMDAsOCBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNh
aXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdAogCiBW
ZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRh
KCkgY29uc3QKIHsKLSAgICBhdXRvIHN1cmZhY2UgPSBjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdl
KCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKTsK
KyAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkgOiBudWxscHRyOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7
CiAKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBhNjlkNWVlMGZmNjNmNzc5NTgyNWRjNjc2NmQ2
ZDE2YjcyNjFkNjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2YTIyZjgxMzZmZjBjYmY1ZWIyNDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDAsNyAr
NDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBS
ZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2Uo
KSBjb25zdDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1h
Z2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgbXV0YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCmluZGV4IDA1YzBmODFjYjM0MTkwY2IzNzNiZDg0MzQxNThiNGQwMzMwMWFi
MDQuLmZkYzdlN2Q2NWZkY2E5MTNlNzBjYzk4NjgyZWMzYzQ0Mzk2NzdhN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzUsMzQgKzM1LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50
U2l6ZSBOYXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fp
cm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIGNhaXJv
U3VyZmFjZVNpemUobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFn
ZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6
Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWltYWdlIHx8IGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CisgICAgcmV0
dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSAhPSBD
QUlST19DT05URU5UX0NPTE9SOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29s
aWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2
ZUltYWdlU2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgaWYgKGNhaXJvX3N1
cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkK
KyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpICE9
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAg
ICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICB1bnNpZ25lZCogcGl4
ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiAgICAgcmV0dXJuIHVucHJlbXVsdGlw
bGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKIH0KIAotdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCit2b2lkIE5hdGl2ZUltYWdl
OjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGNlNTI3ODA2MGEw
ZGY1YzEwZmQxMjhmOTZkZjg5M2FmODZhMDJjZjEuLjU2MGY3NDdhOGZiNjQ4MWJlNGEzMDE4NTg1
MDBhYTlmYTE2MGY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzUsMTEgKzM1LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJ
bWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRl
cm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShzdXJmYWNlLmdldCgpKTsKKyAg
ICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3Vy
ZmFjZShuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIC8vIGNhaXJv
IG1lcmdlcyBwYXR0ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCiAgICAgY2Fpcm9fbWF0
cml4X3QgbWF0cml4ID0gdG9DYWlyb01hdHJpeChtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhN2RiZTZlNmJlNWY1NjI1MmMzYzcwYjEyODgwZTNi
NjQ0YmE0Yzk5Li5mZTlhZDM3NjczMzA3ODY1ODQwYTNmYzAwM2Q1YTAxNmYwODZmYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNm
b3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC00NDQsMjMgKzQ0NCwyMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdAogCiAgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5wcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVu
dGF0aW9uOjpGcm9tSW1hZ2UpOwogCi0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAo
dGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1h
Z2U7CisgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFp
bnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQg
aW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3Mg
ZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGls
ZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LmdldCgpKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBo
ID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5n
LmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFn
ZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFn
ZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUg
bGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCkBAIC01MDksNyArNTA5LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICB9CiAKICAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdGluYXRpb25SZWN0LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlID8gbmF0
aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHI7CiAKICAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5l
ZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0R0xDRy5jcHAKaW5kZXggYmI5MWRlYzkxMjI0ZDQxOTdlY2E4MWJiZGJjNGUwNTY3
ZTQzYzA0ZC4uNDYxOWJlNDM0ZTgyYTJkYWQ3MDY5ZTNmMGIyM2I2ZDc4ZTA5MzY2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0R0xDRy5jcHAKQEAgLTMyNCwyMiArMzI0LDI1IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBpCiB7CiAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGRlY29kZWRJbWFnZTsKICAgICBib29sIGhhc0FscGhhID0g
IW1faW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpOworCiAgICAgaWYgKChpZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxwaGEgJiYgIXByZW11bHRpcGx5QWxwaGEp
KSAmJiBtX2ltYWdlLT5kYXRhKCkpIHsKICAgICAgICAgYXV0byBzb3VyY2UgPSBJbWFnZVNvdXJj
ZTo6Y3JlYXRlKG51bGxwdHIsIEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0aXBsaWVkLCBpZ25vcmVH
YW1tYUFuZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
IDogR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwogICAgICAgICBzb3VyY2Ut
PnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFzb3VyY2UtPmZy
YW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29k
ZWRJbWFnZSA9IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7Ci0gICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOworICAgICAgICBkZWNvZGVkSW1hZ2UgPSBzb3VyY2Ut
PmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1h
Z2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghbV9j
Z0ltYWdlKQorICAgICAgICBkZWNvZGVkSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworCisgICAgaWYgKCFkZWNvZGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0
KCkpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQo
KSk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGRlY29kZWRJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChkZWNvZGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdl
V2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ3
LDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFj
dEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgLy8gc28sIHJlLXJlbmRl
ciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAv
LyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3Ig
dGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9
IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShkZWNvZGVkSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9y
U3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFj
ZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBD
b250ZXh0OwpAQCAtMzYyLDIyICszNjUsMjQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKIAog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxl
bmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJp
dG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFn
ZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFn
ZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgZGVjb2RlZEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQg
cmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KLSAgICAgICAg
bV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1h
cENvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0
KCk7CisgICAgICAgIGRlY29kZWRJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSkpOwogICAgIH0K
IAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25l
bnQobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdl
dEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIGlmICghZGVjb2RlZEltYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENH
SW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGRlY29kZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChk
ZWNvZGVkSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21w
b25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVs
IC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFn
ZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5m
byA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGRlY29kZWRJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNv
dWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8v
IHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYg
d2UKQEAgLTQxOSw3ICs0MjQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogCiAgICAgbV9h
bHBoYU9wID0gQWxwaGFPcDo6RG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0
ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2Nn
SW1hZ2UuZ2V0KCkpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGRlY29kZWRJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAg
ICAgICAgbV9hbHBoYU9wID0gQWxwaGFPcDo6RG9Vbm11bHRpcGx5OwpAQCAtNDYzLDE0ICs0Njgs
MTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1h
dCA9PSBEYXRhRm9ybWF0OjpOdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0
RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGRlY29kZWRJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7
CiAKICAgICB1bnNpZ25lZCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRl
c1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNp
emVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhkZWNvZGVkSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93
IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewog
ICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUyOSw4ICs1MzQs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjbwogICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQaXhlbHMsIGRhdGFTaXpl
LCAwKSk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwg
OCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAotICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAg
YXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMySG9zdCwKKyAgICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1h
eSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhl
IHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0CkBA
IC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZVNp
emUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOworICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpD
b3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFmYTVjMTdiMy4uOGM1YWJm
N2M5M2U3OTcxM2Y3MTNhNmRiZGU5YmMwMTdmMjFmODliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcApAQCAtNzQsMTcgKzc0LDE3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3Jl
YXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uCiAgICAgcmV0
dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFm
dGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKK3N0
YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQo
UmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAgICBpZiAocmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdl
dCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShj
cmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBiYWNrZW5kU2l6ZSkpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2Fs
U2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNl
UmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAg
IENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgbG9naWNhbFNpemUpKTsKICAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNl
clNwYWNlID0gbG9naWNhbFNpemU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFj
ZSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUlu
VXNlclNwYWNlKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgICAgIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkKQEAgLTk1LDcgKzk1
LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewotICAgIE5hdGl2ZUlt
YWdlUHRyIGltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgaWYgKG1f
cmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZp
b3IpOwogICAgIGVsc2UKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZAogICAgIHNyY1JlY3RTY2FsZWQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCiAgICAgaWYg
KGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkg
PyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBkZXN0
Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKKyAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQs
IG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0xMzgsNyArMTM4LDcg
QEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGkKICAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1
ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJvdGVjdGVkUGl4ZWxBcnJheTsKIAogICAgIGlmIChD
RkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtMTU4LDEwICsxNTgsMTAgQEAgUmV0
YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGkKIAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBwaXhlbEFycmF5RGltZW5zaW9ucy5o
ZWlnaHQoKSwgOCwgMzIsIDQgKiBwaXhlbEFycmF5RGltZW5zaW9ucy53aWR0aCgpLCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5v
bmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOwogICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBw
cmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKLSAgICAgICAg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAg
ICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCks
IGJhY2tlbmRTaXplKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJhY2tlbmRTaXpl
KCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGJhY2tlbmRTaXplKCku
d2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dC
bGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5o
ZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGZmZWY2
NjMzMGQxZmJlMjZjNGM4ZjAyM2ZmOTRlNzg4NTJjNmM5MjAuLjZjMDMzYzYzODM4YWZlMWEwZjYy
N2Q2YjQ0YTE1NDZmM2ZlZWU3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5j
cHAKQEAgLTEwNywxNyArMTA3LDE3IEBAIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqbV9jb250ZXh0OwogfQog
Ci1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9y
KSB7CiAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsK
KyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKSk7CiAKICAgICBjYXNl
IERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKAorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VD
cmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUu
aGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAgICAgY2FjaGVkQ0dDb2xv
clNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBtX2RhdGFQcm92aWRlci5n
ZXQoKSwKLSAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsK
KyAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuaAppbmRleCBiOWJkN2YxYmFiNDdmZjdjNzk3NDM0ODMzYzI3YTU0OTczMTA4Mjg1Li43ZDIz
M2QyMjI3ODVhZDNkZGYwNjNjNGE4NjQ4ZmRmZmFjZTdjZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGRiYzNiN2ViOGIzZDFhZDg4ZDBhYjNmMGVl
ZjkwYTdjOGQ4NWUwMzAuLmE5ZDU0ODVhMjYxYjVhMGRmNTNkMmI4OTcxMGFlODM3ZmJmOWIxYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTM1LDE0ICsxMzUs
MTQgQEAgQ29sb3JGb3JtYXQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kQ29s
b3JGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiBDb2xvckZvcm1hdDo6QkdSQTsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVJbWFnZSgpOworICAgIHJldHVybiBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSk7CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgp
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShX
VEZNb3ZlKG1fc3VyZmFjZSkpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKElPU3Vy
ZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3ZlKG1fc3VyZmFjZSkpKTsKIH0KIAogdm9pZCBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0NvbnN1bWluZyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2Fs
ZShtX3Jlc29sdXRpb25TY2FsZSk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJbnRvTmF0
aXZlSW1hZ2UoKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdl
dCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
KyAgICAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgbV9iYWNrZW5kU2l6
ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIFJldGFpblB0cjxD
RkRhdGFSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRp
b24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaAppbmRleCAzMjMwOTRlYTc5NWM1ZDI0ODNjODg0NDAzMTI0YTkwNDBjYzc0MGZiLi5mNTA5
ZWVlNjVhNzIyZTEyMDFmZmMwZmI1NzdjZmI4MmJmZWM2OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1l
bW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzaW5r
SW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdDb25zdW1pbmcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKaW5kZXggODkwYTA3MTgxMDkyM2Y3NWJhMGUyMjkzYzQ2YmVhODc0NDVhYmEwYy4uY2Rh
ZjE1YzEwOWRjNzk3Mjk3ZTliMTAyOTQzNzBhMWUyNzUwNmZmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAt
NDkyLDcgKzQ5Miw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckNHOjpmcmFtZUJ5dGVzQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgcmV0dXJuIChmcmFt
ZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
RGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGlu
Z09wdGlvbnMpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMpCiB7CiAgICAgTE9HKElt
YWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleCAlbHUiLCB0aGlz
LCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gb3B0aW9uczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CmluZGV4IDQ2NzkyNTExMzU5NTFjZDFiNTM4YmRkZjFlY2U1NDUwNmRkZjZiM2IuLjhiYTMwMDlk
M2I2YjYzNDk3M2JhZjhlOWExOTA1NzMxM2Q1NTE2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVf
dCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7
CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBm
aW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA0MDBkNmVm
MGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRlYmRhZGMyLi4zNDQ4MDBiYTFkN2Y2NmU1NGFlM2Mz
ZjhlMmQxMjI2MDhjODU1NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwyOSArMjgsMjUgQEAKIAogI2lmIFVT
RShDRykKIAotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW50U2l6ZSBuYXRpdmVJbWFn
ZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBOYXRpdmVJbWFnZTo6
c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXpl
KCk7CisgICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKG1fcGxhdGZvcm1JbWFnZS5n
ZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiB9CiAKLWJv
b2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitib29s
IE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhhSW5mbyBp
bmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFnZUFscGhh
SW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0KCkpOwog
ICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpICYmIChp
bmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9yIE5hdGl2
ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAgIGlmICghaW1hZ2Ug
fHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlmIChzaXpl
KCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICB1bnNp
Z25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC02MCw3ICs1Niw3IEBAIENvbG9yIG5hdGl2
ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
ICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0
bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0lt
YWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdl
dCgpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCAxLCAxKSwgbV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKIAogICAgIGlmICghcGl4
ZWxbM10pCiAgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjazsKQEAgLTY4LDEx
ICs2NCwxMCBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxT
UkdCQT4ocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGNsZWFy
TmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBO
YXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMoKQogewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAg
IGlmIChpbWFnZSkKLSAgICAgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShp
bWFnZS5nZXQoKSk7CisgICAgU3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6Y2xlYXJJbWFnZShtX3Bs
YXRmb3JtSW1hZ2UuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGNiZjYyNGY2MjczYzNiNTdh
YjlmM2RiY2M1YWIxN2Q1ZTMxOTZkNGEuLjY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3
MGFjYWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtNjMsMTAgKzYzLDE3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRl
cm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBQbGF0
Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0
aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICAKKyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJv
dGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBp
bnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNy
YWNrcy4KICAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIENH
UGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIodGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAg
ICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCks
IHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAg
ICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwg
bm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwogICAg
IC8vIHJlc3VsdCBpbiBub3RoaW5nIGJlaW5nIHJlbmRlcmVkLgpAQCAtNzcsMTAgKzg0LDEwIEBA
IENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/
IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2ls
bCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0
ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gdGlsZUlt
YWdlKCkubmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBs
YXRmb3JtSW1hZ2UubGVha1JlZigpOwogCiAgICAgY29uc3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBh
dHRlcm5DYWxsYmFja3MgPSB7IDAsIHBhdHRlcm5DYWxsYmFjaywgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayB9OwotICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGUocGxhdGZvcm1JbWFnZSwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0
YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOworICAgIHJldHVybiBDR1BhdHRl
cm5DcmVhdGUoaW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAs
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tz
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCmluZGV4IDAyYWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdkOWRhMzQyZGQ3MDQuLjM4
ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
aW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTE3Nyw3ICsxNzcsNyBA
QCBSZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdl
Rm9yU291cmNlR3JhcGhpYyhTb3VyY2VHcgogICAgIGlmIChpczxBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyPigqc291cmNlSW1hZ2UpKQogICAgICAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoSU9T
dXJmYWNlOmRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3Vy
ZmFjZSgpLnN1cmZhY2UoKV07CiAgICAgCi0gICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENH
SW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICByZXR1cm4g
W0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCkt
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CiB9CiAKIFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VGb3JGRUNvbG9yTWF0cml4KGNvbnN0IEZFQ29s
b3JNYXRyaXgmIGVmZmVjdCwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0
SW1hZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDFjOWI3YTE0
MWQ0MmJlNmNiNWNhOTc2ODg4MWE3MTVhZjgxYWQ1MjEuLmM3ZWRkNzU4ZDk4ZmUxOTI3YWM1MjM2
NTRlMWRmNDY5MzhhMGYyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0K
IAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiAgICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwgbV9pbWFnZVNpemUoaW1h
Z2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA1M2RlZDA4OWFhZTRjNGJlNmVhNDVjOGI0NWVkMzcyOTI3
ZWE4Yzg0Li5hODYxMWM3NjFmMWRhMzg1NmJlNDMyMTM2ZjQxZTcyZDE4NTdlNGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQpAQCAt
MTI5MSw3ICsxMjkxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxEcmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1f
aW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTMxMSw3ICsxMzExLDcg
QEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gRHJhd05h
dGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxOYXRp
dmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gaW1hZ2U7
CiAgICAgZGVjb2RlciA+PiBpbWFnZTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IGYxNDI5ZDgzYTkzNWViZDUxYTY4OTU3NWUwNTg4N2ViMGI1MTM3OGQuLmJmM2NiMzQwMTQx
ZDNlZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlYwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZv
aWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggNDY0OGY2ZGQ5MWNhODVlYTYzOGE4ZWZkMjQzNDg4NGQ2NTBlMmFjNi4u
ZTY1OTZiZTgyMmJlNzljMWVmYWMzZTgxMTczYzNhMjM0MGU3OWMxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
cmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4MDNhZGMy
OGY0ZjI3MWVmZjU4OWI3Li5jMGFhZTNhN2Q0OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2ZDdkNmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYsMTEgKzQ2
LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkpOwogICAg
IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIGltYWdlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRp
dmVJbWFnZSgpOworICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgp
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgfQogICAgIHZvaWQgZHJvcEltYWdlKCkgeyBtX2ltYWdl
ID0gbnVsbHB0cjsgfQogCkBAIC0xNzksNyArMTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwKICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAot
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmKQogewogICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JM
b2NrIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2ZTJlYTA3
OTdiZDNjZmQzZTlkNDUwMDg0OTY4ZThkMzMzOTU5YTdkLi41ODY5ZDhjODZhNDE5NGQzZTM4OGVj
OTIwZTUyNTdlNzgyNjkxYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3Nh
bXBsZURhdGEuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmlu
YWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9u
ZykgZmluYWwgeyB9CiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggYzRjZTEyZGI3MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1ZTY3OTIx
OC4uZjFmODdmYmUzZWE0NTljZWNjNjI1YmU2YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUsNyArMzIx
NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJl
Q29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdl
dCgpLCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0K
IAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApp
bmRleCAxOGU2ZDY4ODY2N2Q3YzMyYzE1ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4wYWIyYzZjOTE0
YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkwOGFkMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xl
bnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBv
dmVycmlkZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZpZGVvVHJh
Y2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VH
dGsuY3BwCmluZGV4IGNkNTBhMWU4NmMyMzEyNmZkYjg5MTRkYTNhMzk3MDFmZGRkNmE2NjEuLjcw
Mjg0ZGJlMjcyZTNlMjgyNDgwNGE5YzdjZGEwNmI3YzRjYjYzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtNTYsMTcgKzU2
LDIyIEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIq
IG5hbWUpCiAKIEdka1BpeGJ1ZiogQml0bWFwSW1hZ2U6OmdldEdka1BpeGJ1ZigpCiB7Ci0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgcmV0dXJuIHN1cmZhY2UgPyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1ZihzdXJm
YWNlLmdldCgpKSA6IDA7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpOworICAgICAgICByZXR1cm4gY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYo
c3VyZmFjZS5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCiAjaWYgVVNF
KEdUSzQpCiBHZGtUZXh0dXJlKiBCaXRtYXBJbWFnZTo6Z2RrVGV4dHVyZSgpCiB7Ci0gICAgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCk7CisKICAgICBBU1NFUlQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZh
Y2UuZ2V0KCkpID09IENBSVJPX0ZPUk1BVF9BUkdCMzIpOwogICAgIGF1dG8gd2lkdGggPSBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKTsKICAgICBhdXRvIGhlaWdo
dCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggODEz
NmMxZmZmNDViOWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYTk3NzQ3ZmY2ZjRlZTIyMmNj
YTRlNGU2NDM1MzU4ZTcxYzg5YmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDkgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKLUljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQot
ICAgIDogbV9jZ0ltYWdlKGltYWdlKQorSWNvbjo6SWNvbihSZWZQdHI8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UpCisgICAgOiBtX2NnSW1hZ2UoV1RGTW92ZShpbWFnZSkpCiB7CisgICAgQVNTRVJUKG1f
Y2dJbWFnZSk7CiB9CiAKIEljb246On5JY29uKCkKQEAgLTQ3LDEyICs0OCwxMiBAQCBSZWZQdHI8
SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZp
bGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6
Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBp
bWFnZSkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSWNvbihOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKSkpOwogfQogCiB2b2lk
IEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCkKQEAgLTYyLDEzICs2Myw5IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCi0gICAgZmxvYXQgd2lkdGgg
PSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKLSAgICBmbG9hdCBoZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7Ci0gICAgRmxvYXRTaXplIHNpemUod2lk
dGgsIGhlaWdodCk7Ci0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsK
LQorICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9jZ0ltYWdlLT5z
aXplKCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBv
bGF0aW9uUXVhbGl0eTo6SGlnaCk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9jZ0lt
YWdlLmdldCgpLCBzaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoKm1fY2dJbWFnZSwgc3JjUmVjdC5zaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCmluZGV4IDY5MDhmMTA3NjMyZTg5MDE4Y2E5MGU5OTBmMzQ0ODc3Yjk0YjZmYjkuLmNh
ZDliYjI3NTNlMzRlZTE5NWJhZTViNTU4Njc1M2MxMjY4MGYzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTc0LDcgKzc0LDcg
QEAgUmVmPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFt
ZSkKICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKGNvbnN0IFZlY3RvcjxOYXRpdmVJ
bWFnZVB0cj4mIG5hdGl2ZUltYWdlcykKK1JldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdl
Ojp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPFJlZjxOYXRpdmVJbWFnZT4+JiBuYXRp
dmVJbWFnZXMpCiB7CiAgICAgLy8gSWYgbmF0aXZlSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBr
bm93IGZvciBjZXJ0YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAv
LyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0
YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LApAQCAtODksNyArODks
NyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9u
KGNvbnN0IFZlY3RvcjxOYXRpdmVJbWFnZVB0cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCi0gICAgICAg
IENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFn
ZS5nZXQoKSwgMCk7CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0
aW9uLmdldCgpLCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCAwKTsKIAogICAg
IENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1
cm4gZGF0YTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gQml0bWFwSW1h
Z2U6OnNuYXBzaG90TlNJbWFnZSgpCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGRhdGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBuYXRp
dmVJbWFnZSB9KTsKKyAgICBhdXRvIGRhdGEgPSB0aWZmUmVwcmVzZW50YXRpb24oeyBtYWtlUmVm
KCpuYXRpdmVJbWFnZSkgfSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggYjAwNzk5ZmU3
ZDIyMTRjNTUwYTgzYTM3YWYxODg3YTI1MDlmMmU2NC4uOWYxMTI0ZmVhNzA3NjZlNmUxYzY0YmRi
NWM3YzYzYjBhZTlhNDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3Bw
CkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6
OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VCdWZmZXIpKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUlt
YWdlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIHNpemUgPSBu
YXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0
KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxwaGEobmF0aXZlSW1hZ2UpID8gQml0bWFwVGV4dHVyZTo6
U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNF
KENBSVJPKQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2Uu
Z2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURh
dGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9kYXRhKHN1cmZhY2UpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5k
ZXggOGJjNWQyN2JlNjM1ZWZkZDVhN2QxZjZjNDczZjI4ZDg4ZjI5NjU4YS4uN2IyOTlhNWY0NzE5
N2U5YjBiMDcyMmI2MzQ4MTQ1YmIwYTY4MzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NCwxNCArNTU0LDE0
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uCiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRl
ZC4KIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
c3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRp
b25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAg
dmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhl
Y3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShy
ZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBh
cmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdl
KGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFy
ZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU3Miw3ICs1NzIsNyBA
QCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsK
ICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90Pihp
bWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRp
b25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0
aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKQEAgLTU5Miw4ICs1OTIsOCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogICAg
IH07CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9
IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNp
emUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlv
bnMpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihu
YXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0KIAog
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKQEAgLTEwNzcsOCArMTA3Nyw4IEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgRmxvYXRSCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQot
ICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4oc3VyZmFjZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgaWYgKGF1dG8g
bmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KG5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCksIGRlc3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA2OTFlNzQxODAwM2U1
NzU4YTYwNDRmM2M5NzkxYjMxMDhhZDM3YzJmLi42NmVhZGU4NWRiMWI1MTgxM2ZhYjNiNzU2NjNm
ZGFlY2FkZjY2MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFn
ZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpO
YXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3Jl
OjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3Bw
CmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0MjQxODBjOGFiNWQwYzkuLmE2MTEwOTJl
YzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3Bw
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KIHsKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGF1dG8gZnJhbWVJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWVJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFy
Z2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8p
Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS5nZXQoKTsKKyAgICBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNjc3ZGU3
YzkyMDk5NjZkNzY4YjVhMDBmMDFhM2MxN2JiMjUzNmY5Ny4uMzAxZDc4N2QxMjNmOWRlMjUzNmY4
ODkwNGQ1OTU3MTFiOGVjNTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzCiAKIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihUeXBl
IGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50KQogICAgIDogR3JhcGhpY3NM
YXllcihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
KDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXko
ZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKQEAgLTI5NCwyMiArMjkzLDIyIEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIC8vIE1ha2UgdGhlIGRlY2lz
aW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBjaGFuZ2VkLgotICAgICAgICAvLyBUaGlz
IGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2ludGVyIGVxdWFsaXR5IG9uIGEgTmF0
aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdl
ZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgcG9pbnRl
ciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBp
ZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhpcyBhc3N1bXB0aW9uIGlzIHRy
dWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5hdGl2ZUltYWdlUHRyIG5ld05hdGl2ZUlt
YWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlm
ICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1dG8gbmV3TmF0aXZlSW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFuZXdOYXRpdmVJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAobmV3TmF0aXZlSW1hZ2VQ
dHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGlmIChuZXdOYXRpdmVJ
bWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG5ld05hdGl2ZUltYWdlUHRyOwor
ICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5ld05hdGl2ZUltYWdlOwogICAgICAg
ICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2Ug
PSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogICAgICAgICBtX2Nv
bXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICAgICAgbV9jb21w
b3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2NvbXBvc2l0ZWROYXRp
dmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlID0g
bnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAzYjNhNDgzMzAxNWM1
Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li4yMWMzN2U5MDAwMDA0Y2NkZGQ2ZjlmNTNkMzAy
ODM2M2JkNTEwNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApA
QCAtMTcsMTQgKzE3LDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKLSNkZWZpbmUgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmUuaCIKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBw
ZXJMYXllciBtX2xheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+
IG1fYmFja2Ryb3BMYXllcjsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlOwogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IG1fYmFj
a2luZ1N0b3JlOwogCiAgICAgaW50IG1fY2hhbmdlTWFzazsKQEAgLTE3NSw2ICsxNzUsNCBAQCBw
cml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0dSQVBISUNTTEFZRVIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIsIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
KSkKIAotI2VuZGlmCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCisj
ZW5kaWYgLy8gIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDUyYzVkYjA3
NzYwZWY3Y2YxNWYwOWMyODM3OGZjZmQ0ZDgwZDk1My4uNzEzMzkyNGM5MWI5MjdmOTEwMWFiMDk2
Y2FiMzY2MjcwYzQ0ODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNiBAQCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVyVHlwZSwg
R3JhcGhpY3NMYXllcgogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50KGZhbHNl
KQogICAgICwgbV9zaG91bGRVcGRhdGVQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwgbV9jb29y
ZGluYXRvcigwKQotICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1f
YW5pbWF0aW9uU3RhcnRlZFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjph
bmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdFBlbmRpbmdUaWxlQ3Jl
YXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKQEAgLTU4NSwxMiAr
NTg0LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG93UmVwYWludENv
dW50ZXIoYm9vbCBzaG93KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZVB0ciA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgOiBu
dWxscHRyOwotICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBpbWFnZSAmJiBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0ciA9PSBuYXRpdmVJbWFnZVB0cikKKyAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSA6IG51bGxwdHI7
CisgICAgaWYgKG1fY29tcG9zaXRlZEltYWdlID09IGltYWdlICYmIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlID09IG5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbXBvc2l0
ZWRJbWFnZSA9IGltYWdlOwotICAgIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyID0gbmF0aXZl
SW1hZ2VQdHI7CisgICAgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UgPSBuYXRpdmVJbWFnZTsKIAog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7CiAgICAgbm90aWZ5
Rmx1c2hSZXF1aXJlZCgpOwpAQCAtODQ5LDExICs4NDgsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAg
IG1fbmljb3NpYS5kZWx0YS5hbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVudENoYW5nZWQgPSB0cnVl
OwogCiAgICAgLy8gRGV0ZXJtaW5lIGltYWdlIGJhY2tpbmcgcHJlc2VuY2UgYWNjb3JkaW5nIHRv
IHRoZSBjb21wb3NpdGVkIGltYWdlIHNvdXJjZS4KLSAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIpIHsKKyAgICBpZiAobV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UpIHsKICAgICAgICAg
QVNTRVJUKG1fY29tcG9zaXRlZEltYWdlKTsKICAgICAgICAgYXV0byYgaW1hZ2UgPSAqbV9jb21w
b3NpdGVkSW1hZ2U7CiAgICAgICAgIHVpbnRwdHJfdCBpbWFnZUlEID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KCZpbWFnZSk7Ci0gICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJbWFnZUlEID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyLmdl
dCgpKTsKKyAgICAgICAgdWludHB0cl90IG5hdGl2ZUltYWdlSUQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obV9jb21wb3NpdGVkTmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSk7CiAKICAgICAgICAgLy8gUmVzcGF3biB0aGUgSW1hZ2VCYWNraW5nIG9iamVjdCBpZiB0aGUg
dW5kZXJseWluZyBpbWFnZSBjaGFuZ2VkLgogICAgICAgICBpZiAobV9uaWNvc2lhLmltYWdlQmFj
a2luZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCmluZGV4IGVlOGY1Nzg3OWFkYTZjOTFmMDM5OTE5MmVmOTVjOTI0ZWNlMTNlNDEu
LjlmMGUxNDk2YmRjYzVkMmRiNmE5ZTY2YjAyNDIzNWQzNzI0YTYyNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTIyMyw3
ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIH0gbV9uZWVkc0Rpc3BsYXk7CiAKICAgICBSZWZQdHI8
SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwotICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlUHRyOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9jb21wb3NpdGVkTmF0
aXZlSW1hZ2U7CiAKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAgICBSdW5M
b29wOjpUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fcmVxdWVzdFBlbmRpbmdUaWxl
Q3JlYXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKaW5kZXggODgzNWY4OGQxYmJjZDIw
M2MzMjU2MmRhMjQxNGNiYzI3YjZmYjBmOC4uNTI1YTE2MzQxZWJkNWZlNjQxOWQ4MmQ4MGEwNDMw
NGRiYTcyMmQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCB2
b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQogCiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0
YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5h
bEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFs
QWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIG5hdGl2
ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2UpOwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4g
ZGV2aWNlQml0bWFwOwpAQCAtODEzLDEwICs4MTMsMTAgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1h
Z2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBiaXRtYXBTaXplKGRl
dmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwg
ZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdQbGF0Zm9ybUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJE
MUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQordm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9i
YWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gYml0
bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCA3NGEx
MDM2NzA5ZjM4NTVjZThkNTRmNzVlY2MzNmYzMWQ4NjMyYzVhLi41ZDE5NjA4MGNkZTQ1NTA3MDVj
Mzk3ZWY5OWM5NmM4NDk2ODc5NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjgsOCArMTI4
LDggQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9h
dFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29u
c3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNp
Z25lZCBzaG9ydD4mIGdseXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFu
Y2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdp
bmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12
b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAq
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0LCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucywgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQbGF0Zm9ybUlt
YWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0
YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgUGF0
aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQ
YXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgQ09NUHRyPElEMkQxQml0bWFwPiYmLCBj
b25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1N2JhODU4
ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRlYzk5Li4zYTY4ZGMzYWEwMTU1MzY4NDY0ZjUx
NzIzNWVjMGEzMTlmN2Q1N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3Rh
dGUoKQogICAgIERpcmVjdDJEOjpyZXN0b3JlKCpwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8
SUQyRDFCaXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRm
b3JtSW1hZ2UoY29uc3QgQ09NUHRyPElEMkQxQml0bWFwPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYzUzZDhiZjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFj
OWRlMzNjMDc4My4uODhhNjVmN2JiZWMzZWExNGU1ZGU0NjY0YzQ4YzEwMDYxZWRiZTMzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTI4MywxMCArMjgzLDEw
IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1w
bDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBE
aXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVj
dDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2Uo
bV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaAppbmRleCA5NWViMzcwYjc1YmFkZTAzOWQ2Zjk0ODcyYWVhZjRjZjFlNWU1M2NjLi5j
MTk3YjQ4OWMyOTI2Y2E2NThkNzM1ZTdlMTMzZjkyMTgwZmZjNDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw3ICs3MSw5IEBAIHB1YmxpYzoKICAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisgICAgCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDdk
MjQ4ZTZkNThkOThjOTI4ZTNhY2VmMjJlNjk3YjY0ZTgxYzVjOTQuLjY1NmNiMTRlNzI4OGYyM2E4
OTE3ZjIyODg5ZGE3M2U5YmM5NGEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIGlm
ICghYml0bWFwQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Yml0bWFwOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgYml0bWFwOwogICAgIEhSRVNVTFQgaHIgPSBi
aXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJmJpdG1hcCk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm47CkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0
ZShjCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoc2l6ZSwg
MSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+JiYgY29udGV4dCwgTmF0aXZlSW1hZ2VQdHImJiBiaXRtYXApCitJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiYmIGNvbnRleHQsIFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXApCiAgICAgOiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KFdURk1vdmUocGxhdGZvcm1D
b250ZXh0KSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmZsdXNoQ29udGV4dCgpCiAg
ICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7
CiAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQ7CiAgICAg
SFJFU1VMVCBociA9IGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCkt
PlF1ZXJ5SW50ZXJmYWNlKCZiaXRtYXBUYXJnZXQpOwpAQCAtMTMzLDEwICsxMzMsMTAgQEAgTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHkKIAogICAgIH0KIAotICAgIHJldHVybiBpbWFnZTsKKyAgICBy
ZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9CiAKLXN0YXRpYyBO
YXRpdmVJbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJRDJEMUJpdG1hcFJl
bmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEludFNp
emUmIGJvdW5kcykKK3N0YXRpYyBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElEMkQxQml0
bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogewogICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgOiBGbG9hdFNpemUoKTsKIApA
QCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChJRDJEMUJpdG1hcFJlbmRlclRhcmcKIAogUmVmUHRyPElt
YWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdAogewotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOworICAgIFBsYXRmb3JtSW1hZ2VQdHIg
aW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0
aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRp
dmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShj
b3B5QmVoYXZpb3IpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgZWxzZQotICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKS0+cGxhdGZvcm1JbWFnZSgpOwog
CiAgICAgYXV0byBiaXRtYXBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PElEMkQxQml0bWFwUmVu
ZGVyVGFyZ2V0Kj4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICByZXR1cm4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQsIFdURk1vdmUo
aW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1
dGlvbik7CkBAIC0xODcsMTEgKzE4NywxMSBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOjpzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZQogICAg
IGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQuZ2V0KCksIFdURk1vdmUoaW1hZ2Up
LCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNjYWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRp
YmxlQml0bWFwKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCitQbGF0Zm9ybUltYWdl
UHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb21wYXRpYmxlQml0bWFwKElEMkQxUmVu
ZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiB7CiAgICAgbG9hZERhdGFUb0JpdG1hcElmTmVlZGVk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKaW5kZXggY2VmMzllYTc5MjEx
ZDVmMThkZjY1MDQ5OTQ3OTI0NmM0NTdkYzI2MS4uMWQ1NzRhZWVjZGI5ZDIyODAyMTRmMWMwY2Fm
NWZjNTYwMDkxMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgb3ZlcnJpZGU7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlk
ZTsKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50
b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3ZlcnJpZGU7CkBAIC01OSw3ICs1OSw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4g
bV9wbGF0Zm9ybUNvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
bV9jb250ZXh0OwotICAgIE5hdGl2ZUltYWdlUHRyIG1fYml0bWFwOworICAgIFBsYXRmb3JtSW1h
Z2VQdHIgbV9iaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXgg
NzRkMzZkZmQ1OGMzNzZlODRmOTNiOWQ0ZTkyMTMzZDU1M2NkM2E0Yi4uNmRhYmYyNDEzZmVkMzU3
NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWZQ
dHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAg
IC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhpcy4KICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRt
YXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVh
dGUoV1RGTW92ZShjZ0ltYWdlKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBP
ZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MSw4ICs5MSw4IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291
bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAg
IENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAg
aWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAgICAgYXV0byBpbWFnZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKSA9
PSBzcmNTaXplKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50
RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IGQ0ZWFm
YzU5OWEwMGYyMzk1Nzg5MmUzY2FhMmU4NWViY2UzODA1YzAuLjJjZWM5OWRjNzI5ZmU2NWUwODU0
ZWVlNzJkZmM0ZWQ3YWYwOTUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDE3ICs5MywxNSBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBh
dXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKLSAgICAgICAgaWYgKCFzdXJmYWNl
KQorICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAg
ICAgIGlmICghbmF0aXZlSW1hZ2UgfHwgbmF0aXZlSW1hZ2UtPnNpemUoKSAhPSBzcmNTaXplKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
aGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkp
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewotICAgICAgICAgICAg
c2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwotICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgeyBjb21wb3Np
dGVPcCB9KTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUg
PSBtX2N1cnJlbnRGcmFtZTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOworICAgICAgICBk
cmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCks
IHNyY1NpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOworICAgICAgICBtX2N1cnJlbnRG
cmFtZSA9IGN1cnJlbnRGcmFtZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIE5v
IGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5n
IHRoZSBjdXJyZW50IGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCAyMWMxOWVj
NjNiNTQ2OTBmY2MyOWNkODA2ZDM0NzdkYTY5NjRkYzM1Li43N2IxYTRhMTg4ODFjMGI1YTIyMzk3
MGNmMDE0NzZlMWU5MWU2MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0MCw3
ICsyNDAsNyBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRUYXJnZXRDb250ZXh0KElE
MkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQgPSByZW5k
ZXJUYXJnZXQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
KQogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNzZkN2FjYTkzZTM5MjQyN2IyNjUzNTRjYWYyZTMy
ZWVhY2NmMTdlMC4uYzBkY2FmZDY5NTRjNTdkZWIzOTIwNGU5ZmJiMDZhZDBiMWM5MTEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisgICAgUGxhdGZvcm1JbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCA5MGY3OGMyMzhmMThmOTli
YzUwOWMxZTMwOTE4M2ZjYWY4YTQ4YzlmLi5hNjRiNDU2OGI3Y2M1MzU3NDhiMGJkNjBjMTMwZjU5
ZDExZDFkNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC0yNiwxMiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAKLSNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkRpcmVjdDJET3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCIKICNpbmNsdWRl
IDxkMmQxLmg+CkBAIC01MCw2MCArNDYsMjkgQEAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSog
aW1hZ2luZ0ZhY3RvcnkoKQogICAgIHJldHVybiBpbWFnaW5nRmFjdG9yeTsKIH0KIAotSW50U2l6
ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorSW50U2l6ZSBO
YXRpdmVJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgVUlOVCB3aWR0aCA9IDA7Ci0gICAgVUlO
VCBoZWlnaHQgPSAwOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAg
ICByZXR1cm4gaW1hZ2UtPkdldFBpeGVsU2l6ZSgpOworICAgIHJldHVybiBtX3BsYXRmb3JtSW1h
Z2UtPkdldFBpeGVsU2l6ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25z
dAogewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEQyRDFf
UElYRUxfRk9STUFUIHBpeGVsRm9ybWF0ID0gaW1hZ2UtPkdldFBpeGVsRm9ybWF0KCk7CisgICAg
RDJEMV9QSVhFTF9GT1JNQVQgcGl4ZWxGb3JtYXQgPSBtX3BsYXRmb3JtSW1hZ2UtPkdldFBpeGVs
Rm9ybWF0KCk7CiAgICAgcmV0dXJuIHBpeGVsRm9ybWF0LmFscGhhTW9kZSAhPSBEMkQxX0FMUEhB
X01PREVfSUdOT1JFOwogfQogCi1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xv
cihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitDb2xvciBOYXRpdmVJbWFnZTo6c2luZ2xl
UGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlIHx8IG5hdGl2ZUltYWdl
U2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoc2l6ZSgpICE9IEludFNpemUo
MSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBh
dXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAg
Ly8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVy
IHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUlt
YWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBv
ZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vi
c2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsK
LSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBhZGp1c3Rl
ZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9h
dFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0ZSA9IGNv
bnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNv
bnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0
YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLQotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlmIChpbWFn
ZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOwotI2Vu
ZGlmCiB9CiAKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1
cnNvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcApp
bmRleCA4N2Y4NGNhODRjNTRmNDI0MjJmYjQ5N2M3OTVmMjYzNTFkNjZkNWMwLi5lZGVkN2U4ZGQy
M2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ3Vyc29yR3RrLmNwcApAQCAtNjMsMTAgKzYzLDExIEBAIHN0YXRpYyBHUmVmUHRyPEdk
a0N1cnNvcj4gY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQm
IGhvdFNwCiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3Qo
aW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJv
bV90ZXh0dXJlKHRleHR1cmUuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVI
b3RTcG90LnkoKSwgZmFsbGJhY2tDdXJzb3IoKS5nZXQoKSkpOwogI2Vsc2UKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgaWYgKCFzdXJmYWNlKQorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1p
bmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19jdXJz
b3JfbmV3X2Zyb21fc3VyZmFjZShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBzdXJmYWNlLmdl
dCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpKTsKICNlbmRp
ZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9E
cmFnSW1hZ2VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0
ay5jcHAKaW5kZXggNmExYTczZjlkN2ZmZTEwOGY3NmU5YjQzYjNhOGZiOTNmOWUwM2EzMi4uYWVl
Y2ZjZjUyMjcwYzU1ZGJhZWJjMTBjZTEyYWUzYjkxYjgzYmFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgRHJhZ0lt
YWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZs
b2F0IGZyYWN0aW9uKQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKElt
YWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDczYjUxZWI4NTM2OWNhZThmOTc4MTUxMDQx
ZmVhMWMyZGY1YTg4MzEuLjc0YTYwY2I4Mzc4ZTIxYjNlNDM2MmQxODI3ZTcwYjUxZjVlZjUwYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBTZWNv
bmRzIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0CiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCi1OYXRpdmVJbWFnZVB0ciBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQorUGxhdGZvcm1JbWFnZVB0
ciBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMg
Y2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGlt
YWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
ODhjOTBiNmU4YTJkMzRjOTAyMjBkZGE5NmQ0ZmNmNzU3NjMyMDg4Zi4uMjgzMjIyZWMzYmIzODU3
NDczYWNiOTdkN2U1MTA0ZjcyZWQ0YmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBA
IC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2Zp
bGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGI4MzVhNjljYmM0
NWI3Yjg5MmUwZTdiZmExOWZmMDE5OTViZWNiNTAuLjYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1
NGFmYmUyYTAwZjU1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK1BsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKIHsKICAgICBtX3BpeGVscy0+cmVm
KCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuY3BwCmluZGV4IDk4MTk0ZDE0M2UwZDJjZmQwYjk2MTQwZWJlNzZhZjAzMWZh
MTgxYzIuLjNmNGU0ZGNmNDJjMGZhOTNlZjlhYjYyZGQyMmE5N2M1MTM4NzA2NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBA
IHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAg
ICAgcmV0dXJuIEludFNpemUoSU9TdXJmYWNlR2V0V2lkdGgoc3VyZmFjZS5nZXQoKSksIElPU3Vy
ZmFjZUdldEhlaWdodChzdXJmYWNlLmdldCgpKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFtdKFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gSW50U2l6ZSB7CisgICAgICAgIFtdKFJlZlB0
cjxOYXRpdmVJbWFnZT4gaW1hZ2UpIC0+IEludFNpemUgewogICAgICAgICAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgICAgICByZXR1cm4gSW50
U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPnNpemUoKTsKICAgICAgICAgfQog
ICAgICk7CiAKQEAgLTI2MywxMSArMjYzLDExIEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6ZW1pdEZyYW1lKCkKIAogICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywg
c2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2Ft
cGxlPiB7CiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoaW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAg
fQogICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGZm
YzE0YmNhNjVmNjE4ZTJjYWJlNWU4ZWViMmRlZDY0Mzc0MGRlZjQuLjBiNmIyNDRhNDg0OTNkMmE1
ZWM0ZGViMjMzODIzMzhhYWFjNjc4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwog
CiBjbGFzcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UgewogcHVibGljOgotICAgIHVzaW5nIERpc3BsYXlGcmFtZVR5cGUgPSBXVEY6
OlZhcmlhbnQ8UmV0YWluUHRyPENHSW1hZ2VSZWY+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47
CisgICAgdXNpbmcgRGlzcGxheUZyYW1lVHlwZSA9IFdURjo6VmFyaWFudDxSZWZQdHI8TmF0aXZl
SW1hZ2U+LCBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj47CiAgICAgY2xhc3MgQ2FwdHVyZXIKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgOiBwdWJsaWMgTG9nZ2VySGVscGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggM2Y2Y2I2ZWQ1ZGZh
MzhjMjZiMzVlZGM3N2M5MTkzOTM1ZTU4ZDIzMC4uYjA1OWEzMjUxZDhiOTY1N2JhOTAxNGM0NGY4
MDYzYWY4MjdiMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQpAQCAtOTEsOCArOTEsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBk
YXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCiAgICAg
ICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVh
dGUocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKTsKIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIg
cGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5j
b3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2
ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisKICAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7
Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVN
ZWRpYVNhbXBsZShpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCks
IHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24oKSk7CisgICAgYXV0byBzYW1wbGVC
dWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9y
bUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwogICAg
IGlmICghc2FtcGxlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDFkYmVkMzY1NDU2ZTIyODNh
ZDRlMGFkYWExYjdjNzVjOTM3N2MyZjEuLjM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5
NmJjNjViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNH
V2luLmNwcApAQCAtMTM5LDggKzEzOSwxMCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJh
d0NvbnRleHQsIHJlY3QpOwogICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5uYXRpdmVJbWFn
ZSgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxl
bmRNb2RlTm9ybWFsKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCBy
ZWN0LCBzcmNJbWFnZS5nZXQoKSk7CisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBz
cmNJbWFnZS0+cGxhdGZvcm1JbWFnZSgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRCbGVu
ZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICB9CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2UoZHJhd0NvbnRleHQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApp
bmRleCAzYTVlMDBiZTY3MThiMTE4NjI5ODY4YmFmYmFjNzk3Y2U2ZmUwN2I1Li4zMzBmMDRmNTJk
YTI3ZmIxNjk4ZjJmMjBiMjZjNDBlOTQ0NWIyMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTE2Miw4ICsxNjIsOCBAQCBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3Jp
ZW50YXRpb24pCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAxLjApOwog
ICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAo
c3VyZmFjZSkgeworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKSB7CisgICAgICAgIGF1dG8mIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KICAgICAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLmdldCgpLCAwLjAsIDAuMCk7CiAgICAg
ICAgIGNhaXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCA0OTFhZDkwZDA1MGQzOTNlYjZhYjU1NmM3N2ZkMTBlMzc0MzczZmEyLi4x
MTFhNGIyYzM1NWMwN2I5NDk1OTYyNDZkZjIyMTc2MzlhZjRhYjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xODQwLDcgKzE4NDAsNyBAQCB2b2lk
IFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IFBhaW50SW5mbyYgcGFpbgogICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1h
a2UocmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZz
ZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAgICAgQ0dSZWN0IGJhZGdlUmVj
dCA9IENHUmVjdE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKIAot
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdl
Lm5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFn
ZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKV07CiAKICAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBw
aW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KICAgICBS
ZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3Vu
ZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVu
c2lvbiAvIDIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCmluZGV4IDY1OWNkYjUzYWM1NmE2MjBiMDM5MTgzNjdhZmMyNWQxNjE3NWZhZWQuLmE4OTI0
OTZmOWJjMDA4Y2U5NjQ0ZGU2NmUyZmM4ZGNjOGVjZDZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIEltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0CiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRo
ZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8g
UGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0
aXZlSW1hZ2UgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCopCitSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogewogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KikKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBBU1NFUlQodGFyZ2V0Q29udGV4dCk7CiAgICAg
aWYgKCFtX3BhZ2UgfHwgIXRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCmluZGV4IGQ3YWE4ZGQxMzFhZmUzOGY1Y2ViY2JhNGY3YTg4N2JhYzU5ZThkMjgu
LjI4MjVmOWQzODk4ZDhmMjRiNzQxNzgwNDVlOGJkYTk4ZTAwNTQ0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgc2NoZWR1bGVTdGFydEFuaW1hdGlvbigpOwogCiAjaWYgVVNFKENBSVJPKQotICAgIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKSBmaW5hbDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBmaW5h
bDsKICNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cikgZmluYWw7CiAjZW5kaWYKICAgICAKICAgICBQYWdlKiBpbnRlcm5hbFBhZ2UoKSB7IHJldHVy
biBtX3BhZ2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGVhZWZjMzFlNDdkMDIxNTFkNjkwYzVjZDY1
ZjVlODMxYjMxYWYzNjUuLjAwMjhkNzZkZjU5M2UzMTk0YjRlOTM3ZTIwNGI5Y2I3Mzc4ZDI3ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUlt
YWdlPiBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIHJldHVybiBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXgg
ZTY0NGY3YWNmMzBlYzIyNGRmODUxNWQ4N2Y3MmMyYWUxYmIzNGE1Yy4uMDFiMmYxYmFmYTk1MDUz
YzU5MjI1NzM3MGYyYjhmMmY1Nzk0YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4K
ICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250
YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjg1ZWQ1YzM3ZWY3NjgxMTQ0
NTgwMzU1YzlhYTQyM2FiMTg1YzEzYS4uMWZiNzMzZDVjMTU4OTAxZjYxYTM2NjM5MWRmM2Y5MDIz
YTc2OTcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
MTgsNyArMjE4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHInLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAogICAgICAgICAn
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5kZXggZGIwOGM0MzE4YWU4NTVjOGJj
NTc4MTkyZGY4NjFhODE1YWIwYjIzOS4uMmQyNmVlMzI3YjJkZmI3NTY1ZjYyZDQ0MWNkZDczODY5
ZmUyMWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2cvV0tJbWFn
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KIAogQ0dJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlUmVmKQogewpAQCAtNDYsNyArNDcsOCBAQCBXS0lt
YWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0lt
YWdlT3B0aW9ucyBvcHRpb25zKQogICAgIGlmICghaW1hZ2VSZWYpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAotICAgIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRX
aWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VSZWYpKTsKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZVJlZik7CisgICAg
V2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogICAgIGF1
dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6
OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKIAogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
d2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtNTQsOCArNTYs
OSBAQCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdl
UmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGlt
YWdlU2l6ZSk7CisgICAgCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwg
cmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2
ZUltYWdlLCBpbWFnZVNpemUsIHJlY3QsIHJlY3QpOwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFn
ZS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBkNjNlOTFjMjgxNjA3OTE1YmIwNGY5NDI2MjIzZjE3NmU5NzA2
NWQxLi4xNTcxM2Q1Y2U5MmQyOWMxNDkzNzc1YzIzZWIxY2RlZDY2YzdkYjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTExMDAsMTEg
KzExMDAsMTIgQEAgYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIHZvaWQgZW5jb2RlTmF0aXZlSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFn
ZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2ZUltYWdlPiYgaW1h
Z2UpCiB7Ci0gICAgYXV0byBpbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOworICAg
IGF1dG8gaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisKICAgICBl
bmNvZGVyIDw8ICEhZ3JhcGhpY3NDb250ZXh0OwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICByZXR1cm47CkBAIC0xMTE3LDYzICsxMTE4LDMwIEBAIHN0YXRpYyB2b2lkIGVuY29k
ZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZU5hdGl2ZUltYWdlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHRy
JiBuYXRpdmVJbWFnZSkKK09wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8
UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE9wdGlv
bmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBkZWNvZGVyID4+IGRpZENy
ZWF0ZUdyYXBoaWNzQ29udGV4dDsKICAgICBpZiAoIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC5o
YXNWYWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQudmFsdWUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwogICAg
IGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGltYWdlID0gYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogICAg
IGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAgIGlmICghbmF0aXZl
SW1hZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1z
dGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFn
ZTsKLSAgICBlbmNvZGVyIDw8IGhhc0ltYWdlOwotCi0gICAgaWYgKGhhc0ltYWdlKQotICAgICAg
ICBlbmNvZGVOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19Ci0KLXN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKERlY29kZXImIGRlY29k
ZXIsIE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKLXsKLSAgICBpbWFnZSA9IG51bGxwdHI7Ci0KLSAg
ICBib29sIGhhc0ltYWdlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0ltYWdlKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHJldHVybiBkZWNvZGVOYXRpdmVJbWFnZShkZWNvZGVyLCBpbWFnZSk7Ci19
Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgZW5jb2RlT3B0aW9u
YWxOYXRpdmVJbWFnZShlbmNvZGVyLCBpbWFnZSk7Ci19CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0cj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOworICAgIHJldHVybiBtYWtlUmVm
KCpuYXRpdmVJbWFnZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBhYmNhMDI0
MGI2ZGE5NGY4MzU4NWJhZjE5Y2I0OTZiMDliOTJiOGUzLi40YTkzMjE1OTEzMGNiN2JjZGU1NWUy
MTFlMTdjNGJlZGVmMTcwNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhl
ZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZVB0
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGly
ZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CkBAIC00
MTksOSArNDE5LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJ
bWFnZUhhbmRsZT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPiB7Ci0gICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwotICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
Ok5hdGl2ZUltYWdlUHRyJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
UmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTU5
ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MC4uMzY1MzQ4MjBhZjVhMjI4M2M2
ZTZhMDZlNzQzMzE3N2I5MDNkZTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTg1LDExICsxODUsOSBAQCB2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0
IHZvaWQqCiAKIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCiB7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgp
OwotICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAg
ICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggYjM4Nzlh
MDA0NGU2ODE5ZThiNWY5NmZjZGJkNzM0NWE5NTBjMjYyNC4uMGYzMGQ5NGE3MTQ5OTJmODE3YWEz
Y2Y4NWJlMGMzMWJiOTUzZmQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Nh
bGVGYWN0b3IsIGNvbnN0IEkKICAgICBhdXRvJiBwbGF0Zm9ybUNvbnRleHQgPSAqY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMgeyBz
dGF0ZS5jb21wb3NpdGVPcGVyYXRvciwgc3RhdGUuYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KCksIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfTsKLSAgICBEaXJlY3QyRDo6ZHJh
d05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgbV9zaXplLCBkZXN0
UmVjdCwgc3JjUmVjdFNjYWxlZCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOworICAgIERpcmVjdDJEOjpkcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9y
bUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIG1fc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQs
IG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0K
IAogQ09NUHRyPElEMkQxQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZURpcmVjdDJEU3Vy
ZmFjZShJRDNEMTFEZXZpY2UxKiBkaXJlY3RYRGV2aWNlLCBJRDJEMVJlbmRlclRhcmdldCogcmVu
ZGVyVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKaW5kZXggYmI4OTY1NDU4ODY3ZWIyYTBmYzRlYzg1N2YzNDc1YTRlODI1YTM1
Yy4uMzFjMzhmMzYxM2IzNmI1MWRlYzBmZWRhMWI3YmMxNzc3OWRmMGQ2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC01NDMs
NyArNTQzLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBJ
Y29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFs
bG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoTmF0aXZlSW1hZ2VQdHImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25EYXRh
YmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRh
YmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0
Zm9ybUltYWdlUHRyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9h
ZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRl
CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbG9hZGVkSWNvbnNMb2Nr
KTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkSWNvbnMuY29udGFpbnMoaWNvblVSTCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWNvbkRhdGEgPSB0aGlzLT5pY29uRGF0YShpY29uSUQu
dmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkws
IHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCB7
IH0pKTsKKyAgICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3Rk
OjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBj
YW5Xcml0ZVRvRGF0YWJhc2UgPSBtX2FsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxvd0RhdGFiYXNl
V3JpdGU6OlllcyAmJiBhbGxvd0RhdGFiYXNlV3JpdGUgPT0gQWxsb3dEYXRhYmFzZVdyaXRlOjpZ
ZXM7CkBAIC01ODcsMTQgKzU4NywxNCBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUlt
YWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwor
ICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBz
dGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBN
b25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAgICAgICAgaWYgKCFpY29uRGF0YS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZmlyc3QgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIGljb24gPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OwpAQCAtNjIyLDEzICs2MjIsMTMgQEAgdm9p
ZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwogICAgICAg
ICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2sp
OwotICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJM
LCBzdGQ6Om1ha2VfcGFpcjxOYXRpdmVJbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwg
eyB9KSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNvbnMuc2V0KGlj
b25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51
bGxwdHIsIHsgfSkpOwogICAgICAgICAgICAgaWYgKGljb25EYXRhU2l6ZSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGljb25EYXRhLCBpY29u
RGF0YVNpemUpLCB0cnVlKSA8IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3QgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgc3RhcnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggOTYxMmY5OWMyY2ZiN2M1MTM2
NGU4MWVjOGNmMTA5ZTYzMThlMDM5Yi4uZTIyNTJhMDAwMGQyYmJlNWI2ZjY5Y2QyMjcxZDAwYTEy
NWM1Nzc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7Ci0gICAgdm9pZCBsb2FkSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiYpPiYmKTsKKyAgICB2b2lkIGxv
YWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYmKT4mJik7CiAgICAg
U3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0SWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwg
c2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlIG1fZGI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9wYWdl
VVJMVG9JY29uVVJMTWFwOwogICAgIExvY2sgbV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jazsKLSAg
ICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyLCBNb25v
dG9uaWNUaW1lPj4gbV9sb2FkZWRJY29uczsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWly
PFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZEljb25z
OwogICAgIExvY2sgbV9sb2FkZWRJY29uc0xvY2s7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PiBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbQppbmRleCBlNDhmY2U0NzBjMTBhZGZmYTYyZTQ3N2I3ODM5MzYzYzI1ZTk4MDI5Li44
ZWYxY2U0MTI3MzZhOGVlZDNjNmFhMTZjMDMyYjMzYWRiOWJmNGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0K
QEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJ
bWFnZShJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKLSAgICBpZiAo
IWNnSW1hZ2UpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwor
ICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQo
KV0pOworICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
Om5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGljIGJvb2wg
c2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFn
U291cmNlU3RhdGUmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGUxYjM5ZjU0MmRkMzk4MDZi
ZmViOTUzZmRkNjQyNTY1Yzk0YTkxYTguLjc4MzRlZWYyNDBhMGY1ZGEwMTA2NDdjOWI4NWQ4MzM3
OGZkYmVhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzU0Niw3ICs3NTQ2LDcgQEAgc3RhdGljIE5T
QXJyYXk8TlNJdGVtUHJvdmlkZXIgKj4gKmV4dHJhY3RJdGVtUHJvdmlkZXJzRnJvbURyb3BTZXNz
aW9uKGlkIDxVSURyb3AKICAgICBpZiAoIV9kcm9wQW5pbWF0aW9uQ291bnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnID0gYWRv
cHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNlbGVjdGVkU25hcHNob3RJ
bWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF0pOworICAgIGF1dG8gdW5zZWxlY3RlZENvbnRlbnRJbWFnZUZv
ckVkaXREcmFnID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTp1bnNl
bGVjdGVkU25hcHNob3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOl9wYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7CiAg
ICAgX3Vuc2VsZWN0ZWRDb250ZW50U25hcHNob3QgPSBhZG9wdE5TKFtbVUlJbWFnZVZpZXcgYWxs
b2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZvckVkaXREcmFnLmdldCgp
XSk7CiAgICAgW191bnNlbGVjdGVkQ29udGVudFNuYXBzaG90IHNldEZyYW1lOmRhdGEtPmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKIApAQCAt
Nzc2OSwxMSArNzc2OSwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2VGb3JJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UpCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwotICAg
IGlmICghY2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2UuZ2V0
KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3IGluIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS4KQEAgLTgwMzQsNyArODAzNCw3IEBAIHN0YXRpYyBWZWN0
b3I8V2ViQ29yZTo6SW50U2l6ZT4gc2l6ZXNPZlBsYWNlaG9sZGVyRWxlbWVudHNUb0luc2VydFdo
ZW5Ecm9wcGluZ0l0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUltYWdl
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkgc2Nh
bGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudElt
YWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
OnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6cHJv
dGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdKTsKICAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5TKFtb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFnZUZv
ckVkaXREcmFnLmdldCgpXSk7CiAgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0YS0+
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwog
ICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07CkBA
IC0xMDA4NSw3ICsxMDA4NSwxMiBAQCBzdGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2FjeVByZXZp
ZXdPckRlZmF1bHRBY3Rpb25zKFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewogICAgIGlm
ICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2Ut
Pm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKworICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yLmNvbnRlbnRJbWFnZS0+bmF0
aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZl
SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0Fy
cmF5ICopX3ByZXNlbnRhdGlvblJlY3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZp
ZXdJdGVtQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlNzZjMDYzOGM3ZGEyYTA0ZjFlMDg5YmM0
ZDQ5MGYyMjRiODdkMjE2Li5jM2JlZWY1ZDE0MGI3MjQzOGRjNzUwNTYwM2FlOWE0Y2RlMmExMWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
CkBAIC05NiwxNCArOTYsMTQgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkp
IGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1hZ2VD
b3B5KCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1ha2VDR0lt
YWdlQ29weSgpKTsKICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICByZXR1cm4gbnVsbHB0cjsKICNl
bGlmIFVTRShDQUlSTykKLSAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1
cmZhY2UoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmgKaW5kZXggMDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2Ji
OTU1Ny4uOWUyNGFiOTllYmM2NzVjZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2Vi
Q29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggY2EwMjUyYTQ2ZTJjMDcxZmZkNTM0YjgzM2RiYjQ1NTU4Njdl
ZDU4My4uNzlhMjExNGJhMjQ5NzAyY2M1NTQ3ZmZhMTNiMzNjMzk2MDg2NDliNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorUmVmUHRyPE5h
dGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCA1Zjg1ZGY4NTE5ZTFhMzFlNjI4M2RhOGZiMDA4
YTEzNWIyMTNlMzQzLi4wZDc1NTJmNDkzZjA3NDI0MTJhNmJlMjk3Mzk2MjE2ZGM5NWY1ODFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5h
bDsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dM
aW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBmaW5hbDsKLSAg
ICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDgxY2IzMWI4NWZmMjY4NTEwMGI5NDJmOGVjZDY1
MTg3Y2Q0MjgzODEuLjkyOTc2MGUyZGY2YmUzY2IyN2QwZTVlZjZmZWMyMzNmZjc5ODE5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxMb2FkKFdlYkZyYW1l
KiB3ZWJGcmFtZSwgYm9vbCB3YXNDYW5jZWxsZWQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0
aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBD
R0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5uYXRpdmVJbWFnZSgpLmdldCgpOworICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBiaXRtYXAtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KTsKICAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOwog
CiAgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ZTBmM2MyZTQxYjdhNjBjZWQ5NWVmMDI4ZThlMzQwMWY2YTExZmEwYi4uNjcxYThiNjM1MzJiY2Nl
MTZkZjU2Mjc3MThhOTcwMjU4NjdhOGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQzOTAsNyArNDM5MCw3IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3Qg
VmVjdG9yPFN0CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGFSZWYgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCBpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkp
OwogICAgICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGltYWdlUHJvdmlkZXJSZWYg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhUmVmLmdldCgpKSk7
CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZVJlZiA9IGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZVdpdGhKUEVHRGF0YVByb3ZpZGVyKGltYWdlUHJvdmlkZXJSZWYuZ2V0KCksIG51bGxw
dHIsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICAgICAgaWNvbiA9IElj
b246OmNyZWF0ZUljb25Gb3JJbWFnZShpbWFnZVJlZi5nZXQoKSk7CisgICAgICAgIGljb24gPSBJ
Y29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoV1RGTW92ZShpbWFnZVJlZikpOwogICAgIH0KIAogICAg
IG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmRpZENob29zZUZpbGVzV2l0aERpc3Bs
YXlTdHJpbmdBbmRJY29uKGZpbGVzLCBkaXNwbGF5U3RyaW5nLCBpY29uLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDViOGNiNmMzOGM3YTViMTY2NzRiZjE0YWMwMTIw
YzM1ZmRmM2FkZjYuLjg1YTJmZGI2NzFjMmQyNjZiODVjMWZhMmM5NDllYmUwNGYzYjRmMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNTM1LDggKzUzNSwxMCBAQCBpZCA8RE9N
RXZlbnRUYXJnZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogICAgIGF1dG8gdGV4dEluZGlj
YXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMobm9kZSksIG9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luLCBtYXJnaW4pKTsKIAogICAgIGlmICh0ZXh0
SW5kaWNhdG9yKSB7Ci0gICAgICAgIGlmIChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5j
b250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
KCkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0
b3ItPmNvbnRlbnRJbWFnZSgpKSB7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgICAgICAgICAqY2dJbWFn
ZSA9IGNvbnRlbnRJbWFnZS5hdXRvcmVsZWFzZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKCEqY2dJbWFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0K
aW5kZXggZDgxNzY5OTY3NWVjZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5
NTBjYmZlODE2M2IxMzY3NWFjZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3Rv
cmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyIHsKICAgICBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U+KGNhY2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFn
ZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAg
IGlmICghY2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAg
CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggNGFhN2JkNDhjYzE1YzUzNTA0NmNkOTY5ZjA0NWIyYTlmMWY3OGM5
My4uZDEwNDNmOTU2YzQxMjVkYmFjZjYyNGRkMjRiYmJkNjNkNmRiYzllMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQ2LDE0ICs4NDYsMTQgQEAg
cHJpdmF0ZToKICAgICBfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0
ZU5TQXJyYXkoaW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVz
KS5sZWFrUmVmKCk7CiAgICAgX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9
IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRh
dGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBz
Y2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwor
ICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUlu
c3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhp
Z2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxl
OnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAg
aWYgKGluZGljYXRvckRhdGEuY29udGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0g
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0g
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBp
ZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewot
ICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJ
SW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpz
Y2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29u
dGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkg
aW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6
c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2Nv
bnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlczsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>