<?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>231404</bug_id>
          
          <creation_ts>2021-10-07 17:27:20 -0700</creation_ts>
          <short_desc>Split DisplayList::Recorder into an abstract base class and a concrete implementation</short_desc>
          <delta_ts>2021-10-11 17:42:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801878</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-07 17:27:20 -0700</bug_when>
    <thetext>More work towards streaming display lists.

This refactoring will allow us to introduce a WebKit2-specific subclass of DisplayList::Recorder in a subsequent patch, which is similar to the existing DisplayList::Recorder object, but immediately sends its display list items to the GPU Process through the IPC stream connection instead of appending them to an instance of WebCore::DisplayList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802052</commentid>
    <comment_count>1</comment_count>
      <attachid>440612</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 07:51:04 -0700</bug_when>
    <thetext>Created attachment 440612
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802056</commentid>
    <comment_count>2</comment_count>
      <attachid>440614</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 08:02:05 -0700</bug_when>
    <thetext>Created attachment 440614
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802065</commentid>
    <comment_count>3</comment_count>
      <attachid>440615</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 08:11:49 -0700</bug_when>
    <thetext>Created attachment 440615
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802068</commentid>
    <comment_count>4</comment_count>
      <attachid>440616</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 08:22:41 -0700</bug_when>
    <thetext>Created attachment 440616
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802072</commentid>
    <comment_count>5</comment_count>
      <attachid>440618</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 08:30:36 -0700</bug_when>
    <thetext>Created attachment 440618
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802123</commentid>
    <comment_count>6</comment_count>
      <attachid>440631</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 09:31:57 -0700</bug_when>
    <thetext>Created attachment 440631
Fix CMake build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802199</commentid>
    <comment_count>7</comment_count>
      <attachid>440631</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-08 12:56:01 -0700</bug_when>
    <thetext>Comment on attachment 440631
Fix CMake build

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        DisplayList::RecorderImpl. See below for more details.

Other places we use Concrete. Not sure which is better.

&gt; Source/WebCore/ChangeLog:44
&gt; +        data or drawing simple paths. The base class also manages updating and maintaining the state stack (a list of
&gt; +        Recorder::ContextState) when modifying graphics context state.

Cool. Enabling this code sharing was my biggest concern.

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextCocoa.mm:29
&gt; +#import &quot;DisplayListRecorderImpl.h&quot;

Is this necessary?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:-66
&gt; -    if (!m_isNested)
&gt; -        LOG(DisplayLists, &quot;Recorded display list:\n%s&quot;, m_displayList.description().data());

Who is using m_isNested now? Can it be deleted?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:401
&gt; -    append&lt;StrokeEllipse&gt;(rect);
&gt; +    appendStateChangeItemIfNecessary();
&gt; +    recordStrokeEllipse(rect);

It seems unfortunate that the appendStateChange logic had to be moved from one centralized place into all its callers, duplicating the call. Is there a better way? Can we at least do some code sharing?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:140
&gt; +    virtual void recordResourceUse(NativeImage&amp;) = 0;
&gt; +    virtual void recordResourceUse(Font&amp;) = 0;
&gt; +    virtual void recordResourceUse(ImageBuffer&amp;) = 0;

I would have renamed these in a follow-up patch, to keep this one smaller.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:189
&gt;      // FIXME: Maybe remove this?

Looks like you&apos;re removing this. Perhaps the comment can be removed too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802212</commentid>
    <comment_count>8</comment_count>
      <attachid>440631</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 13:17:15 -0700</bug_when>
    <thetext>Comment on attachment 440631
Fix CMake build

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

Thanks for the review!

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        DisplayList::RecorderImpl. See below for more details.
&gt; 
&gt; Other places we use Concrete. Not sure which is better.

So I chatted with Tim (proposing either ConcreteRecorder and RecorderImpl), and we decided on RecorderImpl. Overall, we seem to use FooImpl a lot more than ConcreteFoo (I think ConcreteImageBuffer is actually the only instance?)

&gt;&gt; Source/WebCore/ChangeLog:44
&gt;&gt; +        Recorder::ContextState) when modifying graphics context state.
&gt; 
&gt; Cool. Enabling this code sharing was my biggest concern.

Indeed! This refactoring allows us to avoid a lot of the duplicate code that was in my hacky WIP.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:33
&gt; +#include &quot;DisplayListRecorderImpl.h&quot;

Looks like this change is also unnecessary, so I&apos;ll change this back too.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextCocoa.mm:29
&gt;&gt; +#import &quot;DisplayListRecorderImpl.h&quot;
&gt; 
&gt; Is this necessary?

It&apos;s not — good catch! Reverted this bit.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:-66
&gt;&gt; -        LOG(DisplayLists, &quot;Recorded display list:\n%s&quot;, m_displayList.description().data());
&gt; 
&gt; Who is using m_isNested now? Can it be deleted?

Good catch, it looks like this is actually *just* used inside `RecorderImpl::~RecorderImpl()` for a single logging statement. I&apos;ll just move this into the RecorderImpl, and remove the protected getter.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:401
&gt;&gt; +    recordStrokeEllipse(rect);
&gt; 
&gt; It seems unfortunate that the appendStateChange logic had to be moved from one centralized place into all its callers, duplicating the call. Is there a better way? Can we at least do some code sharing?

Yeah, this is a bit unfortunate :/

I wasn&apos;t sure how to avoid this though, since we no longer templatize item recording methods, since they&apos;re now virtual. I&apos;ll add a FIXME in `appendStateChangeItemIfNecessary()`, and continue to think of ways to improve this.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:140
&gt;&gt; +    virtual void recordResourceUse(ImageBuffer&amp;) = 0;
&gt; 
&gt; I would have renamed these in a follow-up patch, to keep this one smaller.

Hm..I&apos;m not sure how this would work though, since these are new virtual methods (not renamed versions of existing methods).

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:189
&gt;&gt;      // FIXME: Maybe remove this?
&gt; 
&gt; Looks like you&apos;re removing this. Perhaps the comment can be removed too?

Oh, I moved `canDrawImageBuffer` into the protected section of the class, but forgot to move this comment. I&apos;ll move the FIXME to match the `canDrawImageBuffer` again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802221</commentid>
    <comment_count>9</comment_count>
      <attachid>440666</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-08 13:46:10 -0700</bug_when>
    <thetext>Created attachment 440666
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802296</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 16:09:50 -0700</bug_when>
    <thetext>Committed r283848 (242727@main): &lt;https://commits.webkit.org/242727@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440666.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802297</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-08 16:11:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/84047977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802903</commentid>
    <comment_count>12</comment_count>
      <attachid>440631</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-10-11 17:42:11 -0700</bug_when>
    <thetext>Comment on attachment 440631
Fix CMake build

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        DisplayList::RecorderImpl. See below for more details.
&gt;&gt; 
&gt;&gt; Other places we use Concrete. Not sure which is better.
&gt; 
&gt; So I chatted with Tim (proposing either ConcreteRecorder and RecorderImpl), and we decided on RecorderImpl. Overall, we seem to use FooImpl a lot more than ConcreteFoo (I think ConcreteImageBuffer is actually the only instance?)

Sad to hear it. I personally like Concrete so much better than Impl!

But without our traditions … our lives would be as shaky as a programmer on the roof.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440612</attachid>
            <date>2021-10-08 07:51:04 -0700</date>
            <delta_ts>2021-10-08 08:45:36 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-231404-20211008075103.patch</filename>
            <type>text/plain</type>
            <size>101463</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NkZTNiYmRmOTlmNTRj
YzU5YjYxZDA5ZDdmOTU2ZTIwNzY5YmQ5ZS4uNDdkZDgxOWFlZmJhNDc2NGFhNGFkNDFmYTU0Yzlj
MWJmMTUwZjU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMS0xMC0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tOgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHVzZXMgb2YgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
CisgICAgICAgIFRoZSBhYnN0cmFjdCBSZWNvcmRlciBub3cgY29udGFpbnMgbG9naWMgZm9yIG1h
cHBpbmcgR3JhcGhpY3NDb250ZXh0IG1ldGhvZCBjYWxscyBpbnRvIGNhbGxzIHRvIHJlY29yZAor
ICAgICAgICBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcy4gTm90ZSB0aGF0IHdoaWxlIG1h
bnkgR3JhcGhpY3NDb250ZXh0IG1ldGhvZHMgY29ycmVzcG9uZCBkaXJlY3RseSB0byBkaXNwbGF5
IGxpc3QKKyAgICAgICAgaXRlbXMsIHNvbWUgbWV0aG9kcyBtYXAgdG8gb25lIG9yIG1vcmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzdWNoIGFzIHNldHRpbmcgc3RhdGUgY29uc2lzdGluZyBvbmx5IG9m
IGlubGluZSBQT0QKKyAgICAgICAgZGF0YSBvciBkcmF3aW5nIHNpbXBsZSBwYXRocy4gVGhlIGJh
c2UgY2xhc3MgYWxzbyBtYW5hZ2VzIHVwZGF0aW5nIGFuZCBtYWludGFpbmluZyB0aGUgc3RhdGUg
c3RhY2sgKGEgbGlzdCBvZgorICAgICAgICBSZWNvcmRlcjo6Q29udGV4dFN0YXRlKSB3aGVuIG1v
ZGlmeWluZyBncmFwaGljcyBjb250ZXh0IHN0YXRlLgorCisgICAgICAgIEltcG9ydGFudGx5LCB0
aGlzIG1lYW5zIHRoYXQgdGhlIGFic3RyYWN0IFJlY29yZGVyIGNsYXNzIGRvZXMgbm90IGNvbnRh
aW4gZWl0aGVyIGEgUmVjb3JkZXIgRGVsZWdhdGUsIG5vciBkb2VzCisgICAgICAgIGl0IGNvbnRh
aW4gYSBEaXNwbGF5TGlzdC4gSW5zdGVhZCwgdGhlIGNvbmNyZXRlIHN1YmNsYXNzIChEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsKSBub3cgaG9sZHMgb24gdG8gdGhlIGxvY2FsCisgICAgICAgIERp
c3BsYXlMaXN0LgorCisgICAgICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgc3ViY2xhc3NlcyBv
ZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0ICJyZWNvcmRp
bmciIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcyBnaXZlbiB0aGVpciBjb25zdGl0dWVudCBh
cmd1bWVudHMsIGluc3RlYWQgb2YgZGlyZWN0bHkgaW1wbGVtZW50aW5nIHRoZSBpbmRpdmlkdWFs
IEdyYXBoaWNzQ29udGV4dCBkcmF3aW5nCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4
ZWxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpwdXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNh
bkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjppc05lc3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVn
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
RGVsZWdhdGU6OmNhbkFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRGb250VXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OnJlY29yZEltYWdlQnVmZmVyVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBl
bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpp
dGVtTmVlZHNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
YW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENv
bnRleHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBuZXN0ZWQgUmVjb3JkZXIgbG9naWMgdXNl
ZCBmb3IgYFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHNgLCBzdWNoIHRoYXQgaXQncyBu
b3cgYSBzZXBhcmF0ZQorICAgICAgICBvdmVycmlkZSBwb2ludC4gVGhpcyBhbGxvd3Mgc3ViY2xh
c3NlcyB0byBpbnN0YW50aWF0ZSBuZXN0ZWQgY29udGV4dHMgb2YgdGhlIHNhbWUgdHlwZSwgd2hp
bGUga2VlcGluZyB0aGUgbWFpbgorICAgICAgICBsb2dpYyBpbiBgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzYCBpbiB0aGUgc2hhcmVkIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDb25j
YXRlbmF0ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdFbGxpcHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVj
dFdpdGhHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEZpbGxBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkR2V0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJv
a2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkU3Ryb2tlUXVhZEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
QXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6On5EZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGU6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OnJlY29yZEltYWdlQnVmZmVyVXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmFwcGVuZCk6CisKIDIwMjEtMTAtMDcgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBPcHRpbWl6ZSBJ
bmxpbmVDb250ZW50Ojpib3hlc0ZvclJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjg0MzYwMDdlOGI1ZGI3MWRl
ZGVlNTYyYTkyZTcwM2NmMzBmZTcyZC4uMTBhZGFkYTg1Njk5ZmVkOWFhZDEyOTNkNzg1NzZiNjEz
MDcyZjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0wNyAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNwbGF5TGlz
dDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNyZXRlIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAy
MS0xMC0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgdGhlIGFiaWxpdHkgdG8gZGlzcGF0Y2ggbWVzc2FnZXMgdG8gbXVsdGlwbGUgcmVjZWl2
ZXIgdHlwZXMgaW4gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDYzZTRjNzU5YTc5MmQ0ZTU0ZTYyNDdiYTM0MTZjMjNmNjU2NzE0YTQuLmQ5ZTMwYWJmOWI0OTg3
MDlmYzcxYWRlMWM4OTRjMjQ2ZTgzY2U0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDMwLDYgKzIw
MzAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlz
dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZmMjlhMTZmM2Q3MGYyNGQxN2ZjOGE5MmY2NGQ3ZTE5ZTk2MDhkNjMuLmRlZTgyMGQ4ZDUz
MzZkNGM5ZjY2NzA1NTYxYTQ3YWEyZGQ2MzU4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3NCw3ICszNzQsNyBAQAogCQkw
RkU1ODA2NDE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNTgwNjIxOTMyN0E2MjAwREUz
MkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMuaCAqLzsgfTsKIAkJMEZFNUZCRDMxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkU1RkJDQjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU1RkJENTFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0SXRlbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZC
Q0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1RkJENzFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
cGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTcxNDA2MTQyMTcw
QjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTcxNDA0MTQyMTcwQjgwMERCMzNCQSAvKiBTY3Jv
bGxiYXJUaGVtZU1vY2suaCAqLzsgfTsKIAkJMEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3OTE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTM5MSw2ICs1MzkxLDcgQEAKIAkJRjQyMEYwMEEyNUU0
Nzc5MTAwOTI1MUVGIC8qIFBvaW50ZXJFdmVudFR5cGVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyMEYwMDgyNUU0Nzc5MTAwOTI1MUVGIC8q
IFBvaW50ZXJFdmVudFR5cGVOYW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUY0MjkyNjE4MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXll
cklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MjkyNjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDI5OTRG
QTI3MENGRTQ4MDAzMjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5OTRGOTI3MENG
RTQ4MDAzMjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQyOTk1MEYyNzBFNzUw
MDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNw
bGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjQzM0U5MDMxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzNFOTAy
MURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQzNzdENTcyNTUxQzlDNjAwODBBQkZF
IC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0
ZW1UeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQ0MEU3N0EyMzNEOTRENzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBib2FyZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NkYyMzNEOTRE
MzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBib2FyZC5oICovOyB9OwpAQCAtNjQwMCw4ICs2NDAx
LDggQEAKIAkJMEZFNUZCQ0IxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRTVGQkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0
ZW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0
SXRlbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJDRDFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNwbGF5TGlzdFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTVGQkNGMUMzREQ1MUUwMDA3
QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJl
cGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCRDExQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZXBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkU2Qzc2QjFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTY3OTUsNiArMTY3OTYsOCBAQAogCQlGNDIyQjhCNjI1M0Y3MDY1MDA0RTc3
RTggLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Mjky
NjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllcklkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0Mjk5NEY5MjcwQ0ZFNDgwMDMyMjk4QiAvKiBHcmFwaGljc0NvbnRleHRGbHVzaElkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAv
KiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3Jk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQyOTk1MEUyNzBFNzUwMDAwMzIy
OThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkNFQjU0
MjE0MDMxRUUwMDJEQ0E3MiAvKiBGb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3Rl
Ym9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUGFzdGVib2Fy
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzRTkwNDFEQkJEQkMyMDBFRjBE
MTQgLyogU3RhdGljUGFzdGVib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNQYXN0
ZWJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTk4LDggKzE4MjAx
LDEwIEBACiAJCQkJRjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5
cGUuaCAqLywKIAkJCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVy
YXRvci5jcHAgKi8sCiAJCQkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0
SXRlcmF0b3IuaCAqLywKLQkJCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgKi8sCi0JCQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0UmVjb3JkZXIuaCAqLywKKwkJCQlGNDI5OTUwRTI3MEU3NTAwMDAzMjI5OEIgLyogRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgKi8sCisJCQkJRjQyOTk1MEQyNzBFNzUwMDAwMzIyOThCIC8q
IERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLywKKwkJCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICovLAorCQkJCTBGRTVGQkNGMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oICovLAogCQkJCTBGRTVGQkQwMUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAqLywKIAkJCQkwRkU1RkJE
MTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovLAogCQkJCTFDRTg4
NjNFMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcCAqLywKQEAgLTMy
MzUwLDcgKzMyMzU1LDggQEAKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBBQkZF
IC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRThEMTJFMjYx
ODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjQyOTk1MEYyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEMjlFQ0M2MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRl
eCBjYTRlNzc3NWU3NDZjY2M5OWIwNzdmMjBjNjk3MTZjZTgyNTg5OWRmLi5hZTBkMWE3NmY2MWMy
MzZkOWIxNjgxNjA0NjVlZTIyY2ZkZjA4Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAt
NDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIkRPTU1hdHJpeC5oIgogI2luY2x1ZGUgIkRPTU1hdHJp
eDJESW5pdC5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKLSNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1MzU2MTk3YTM0NGE2OTllYzg5
MDhiMTgwNmMxNzU2OTkzODBiYTZkLi42YzY4ZTQ0NTk4YmY5ODY2ZTgxNjRkMjM1MWIyY2JkNjNl
NzVhMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0
aWVzLmgiCiAjaW5jbHVkZSAiQ29tcGxleFRleHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZv
clRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1
ZTxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4oKTsKLSAgICBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwg
RmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KTsKKyAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIHJlY29yZGluZ0NvbnRleHQoKmRpc3BsYXlMaXN0LCBjb250
ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVj
dCk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KFdlYkNv
cmU6OnNpemUoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSkpOwogICAgIGRyYXdHbHlwaEJ1
ZmZlcihyZWNvcmRpbmdDb250ZXh0LCBnbHlwaEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDYxYmI1ZmNkYTg5NDAyZmFhMmNj
NTdjYzU5YWY5OGQyNzUwN2ZjM2UuLjJkMmYxMWE0N2Q2NDZkZWQ5MDExYjViMmU4ZTNlMjNmNmY3
NjYxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIFVTRShDQSkKIAog
I2luY2x1ZGUgIkFuaW1hdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkRpc3BsYXlM
aXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKQEAgLTE4MDQsNyArMTgwNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSwgY29uc3QgVHJh
CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2luKCks
IHNpemUoKSk7CiAKLSAgICAgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGNvbnRleHQoKm1fZGlz
cGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFu
c2Zvcm0oKSk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgY29udGV4dCgqbV9k
aXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCmluZGV4IGI2NTZmMTM2ODE2MjQ3YTQ2YWNkY2RhNTk5YmI2ZDQxZGQ4MDkzYTkuLjQ0MTAz
OGVkOGZiMDIyMjMyN2Y0OGU2NTZlZWQ3ODVjMjQyZjMwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZUNHLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCmluZGV4IDM4OGFmY2Q2ZjQ2YWZjNDUy
MjFmODA3MWQzNTA5NjdmMGU1MzU1MGQuLjc1ZTFmOTRiMmI0ZjY5YjMxODljNGM0MjYxN2FiMTkw
ODNhZGNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogCi0jaW1w
b3J0ICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW1wb3J0ICJEaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCmluZGV4IDIyNjg0ZGMzOThlMWVmNTJjMWJkOTY2ZmY0NTAzNzIzN2RjZjJh
ZWYuLjg5ODZlOGMzMjlmMGExMWU4NDgzMDExOTk1YjM2ZDNiYTE2MTc2OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCkBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgQXNUZXh0Rmxh
Z3M7CiAKIGNsYXNzIERpc3BsYXlMaXN0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNw
bGF5TGlzdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIGZyaWVuZCBjbGFzcyBSZWNv
cmRlcjsKKyAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXJJbXBsOwogICAgIGZyaWVuZCBjbGFzcyBS
ZXBsYXllcjsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEaXNwbGF5TGlzdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDM5
NTdjNDU3NmZlOTEyZDY4MTAyMDc2MTAwMWNjMjRmNjg2ODg2MmEuLjM2MmQ0MzY3NTJhYzczYTli
YzNiM2NjOGMwNTZhYTRkN2YwN2IyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkRp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotRHJhd2luZ0NvbnRl
eHQ6OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkK
K0RyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVySW1wbDo6RGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KG1fZGlzcGxheUxpc3QsIEdyYXBoaWNz
Q29udGV4dFN0YXRlKCksIEZsb2F0UmVjdCh7IH0sIGxvZ2ljYWxTaXplKSwgaW5pdGlhbENUTSwg
ZGVsZWdhdGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQuaAppbmRleCA5NjU2MzYzNGQ1N2Y0MDk0YjNjMmNiYTZmMDY3NDBmNTA2M2RkNGJmLi4x
N2YyMmU5MDNlYTYwZDA5ZTkwZTIwYzNlOTdiYzEzYmNhYzcyM2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKLSNpbmNsdWRlICJEaXNwbGF5
TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcs
MTAgKzM3LDEwIEBAIGNsYXNzIEluTWVtb3J5RGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3aW5nQ29u
dGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0geyB9LCBSZWNvcmRlcjo6RGVsZWdhdGUq
ID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd2luZ0NvbnRleHQoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNID0g
eyB9LCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiA9IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4
dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KLSAgICBSZWNvcmRlciYgcmVjb3JkZXIoKSB7IHJldHVy
biBtX2NvbnRleHQ7IH07CisgICAgUmVjb3JkZXJJbXBsJiByZWNvcmRlcigpIHsgcmV0dXJuIG1f
Y29udGV4dDsgfTsKICAgICBEaXNwbGF5TGlzdCB0YWtlRGlzcGxheUxpc3QoKSB7IHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUxpc3QsIHsgfSk7IH0KICAgICBEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QoKSB7IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQpAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYXlEaXNwbGF5
TGlzdChHcmFwaGljc0NvbnRleHQmKTsKIAogcHJvdGVjdGVkOgotICAgIFJlY29yZGVyIG1fY29u
dGV4dDsKKyAgICBSZWNvcmRlckltcGwgbV9jb250ZXh0OwogICAgIERpc3BsYXlMaXN0IG1fZGlz
cGxheUxpc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluTWVtb3J5RGlzcGxheUxpc3Q+IG1fcmVw
bGF5ZWREaXNwbGF5TGlzdDsKICAgICBib29sIG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXgg
MGIzNWFmNTQwYzE0ZGNiZGJmN2JlYzY5Y2FmZDYwNmIzMmU1NWYwZi4uNDZlOWZhODZhYWI2YmE0
NDk1Y2M0NmFkYjc2YWY0NjdmZTViYTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kcmF3
aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KG1fcmVh
ZGluZ0NsaWVudC5nZXQoKSk7CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNvcmRlcjo6RGVsZWdhdGUq
IGRlbGVnYXRlID0gbnVsbHB0cikKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlY29yZGVySW1wbDo6RGVsZWdhdGUqIGRl
bGVnYXRlID0gbnVsbHB0cikKICAgICAgICAgOiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihwYXJh
bWV0ZXJzKQogICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRy
YW5zZm9ybSgpLCBkZWxlZ2F0ZSkKICAgICAgICAgLCBtX3dyaXRpbmdDbGllbnQoV1RGOjptYWtl
VW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ+KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTNiYTY1MDJhYjZiYTRmMzMxY2Zl
ZTk2M2MxOWUzMzAyZTk1ZmI2YS4uNzMyMDk1MzczYWQ3ZmFiNzdkODg2YTFhMGMwOTdmNDZlMWQz
OTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNDAs
MjEgKzQwLDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlLCBE
cmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24pCi0gICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9k
ZWxlZ2F0ZShkZWxlZ2F0ZSkKK1JlY29yZGVyOjpSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgIDogbV9kcmF3R2x5cGhz
UmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKICAgICAsIG1faXNOZXN0
ZWQoZmFsc2UpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgZHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uKQogewotICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVh
bSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3Rh
dGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CiB9CiAK
IFJlY29yZGVyOjpSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkKLSAgICA6IG1fZGlzcGxheUxpc3QocGFyZW50Lm1fZGlz
cGxheUxpc3QpCi0gICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQorICAgIDogbV9k
cmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24oKSkKICAgICAsIG1faXNOZXN0ZWQodHJ1ZSkKLSAgICAsIG1f
ZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJh
d0dseXBoc0RlY29uc3RydWN0aW9uKCkpCiB7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0
YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0KQEAgLTYyLDE4ICs1Nyw2IEBAIFJl
Y29yZGVyOjpSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsCiBSZWNvcmRlcjo6flJlY29yZGVyKCkKIHsKICAgICBBU1NF
UlQobV9zdGF0ZVN0YWNrLnNpemUoKSA9PSAxKTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNh
dGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3JlLgotICAgIGlmICghbV9pc05lc3RlZCkKLSAgICAg
ICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29yZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNw
bGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgUmVjb3JkZXI6OmdldFBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QpCi17Ci0gICAgYXBwZW5kPEdldFBpeGVsQnVmZmVyPihvdXRwdXRG
b3JtYXQsIHNvdXJjZVJlY3QpOwotfQotCi12b2lkIFJlY29yZGVyOjpwdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1h
dCkKLXsKLSAgICBhcHBlbmQ8UHV0UGl4ZWxCdWZmZXI+KHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBk
ZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc09ubHlJbmxp
bmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQpAQCAt
OTYsMzcgKzc5LDI1IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdl
cyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgUmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKLXsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3Jk
TmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFn
ZShpbWFnZSk7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCiB7CiAgICAgaWYgKCFjb250YWluc09u
bHlJbmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7CiAgICAgICAgIGlm
IChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAg
ICAgIHJlY29yZE5hdGl2ZUltYWdlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICAgICAg
ICAgIHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKICAgICAgICAgaWYg
KGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAgICAg
IHJlY29yZE5hdGl2ZUltYWdlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKLSAgICAgICAgYXBw
ZW5kPFNldFN0YXRlPihjaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZUZsYWdzKTsKKyAgICAgICAgICAg
IHJlY29yZFJlc291cmNlVXNlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICAgICAgcmVjb3Jk
U2V0U3RhdGUoY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKLSAgICAgICAgYXBwZW5kPFNldElubGluZVN0cm9rZUNv
bG9yPigqY2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsK
KyAgICAgICAgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoKmNoYW5nZXMubV9zdGF0ZS5zdHJv
a2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCi0gICAg
ICAgIGFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlj
a25lc3MpOworICAgICAgICByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoY2hhbmdlcy5tX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyk7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSkpCi0gICAgICAgIGFwcGVuZDxTZXRJbmxp
bmVGaWxsQ29sb3I+KCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRl
cygpKTsKLX0KLQotYm9vbCBSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSB0
eXBlKSBjb25zdAotewotICAgIHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5jYW5B
cHBlbmRJdGVtT2ZUeXBlKHR5cGUpOworICAgICAgICByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3Io
KmNoYW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwogfQogCiB2
b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpCkBAIC0xNTIs
MzQgKzEyMywyNCBAQCB2b2lkIFJlY29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YQogICAgIGN1cnJlbnRTdGF0ZSgp
LnN0YXRlQ2hhbmdlLmFjY3VtdWxhdGUoc3RhdGUsIGZsYWdzKTsKIH0KIAotYm9vbCBSZWNvcmRl
cjo6Y2FuRHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgY29u
c3QKLXsKLSAgICByZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+aXNDYWNoZWRJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Ci19Ci0KLVJlbmRlcmluZ01vZGUgUmVjb3JkZXI6OnJlbmRl
cmluZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+
cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKLX0KLQogdm9p
ZCBSZWNvcmRlcjo6c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCiB7Ci0gICAgYXBwZW5kPFNl
dExpbmVDYXA+KGxpbmVDYXApOworICAgIHJlY29yZFNldExpbmVDYXAobGluZUNhcCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OnNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaEFycmF5LCBm
bG9hdCBkYXNoT2Zmc2V0KQogewotICAgIGFwcGVuZDxTZXRMaW5lRGFzaD4oZGFzaEFycmF5LCBk
YXNoT2Zmc2V0KTsKKyAgICByZWNvcmRTZXRMaW5lRGFzaChkYXNoQXJyYXksIGRhc2hPZmZzZXQp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKIHsK
LSAgICBhcHBlbmQ8U2V0TGluZUpvaW4+KGxpbmVKb2luKTsKKyAgICByZWNvcmRTZXRMaW5lSm9p
bihsaW5lSm9pbik7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0
ZXJMaW1pdCkKIHsKLSAgICBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4obWl0ZXJMaW1pdCk7CisgICAg
cmVjb3JkU2V0TWl0ZXJMaW1pdChtaXRlckxpbWl0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKQEAgLTE4OSwzOSArMTUwLDQwIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zCiAKIHZv
aWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFk
dmFuY2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0g
ICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoY29uc3RfY2FzdDxGb250Jj4oZm9udCkp
OwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsK
LSAgICBhcHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQsIGxv
Y2FsQW5jaG9yLCBzbW9vdGhpbmdNb2RlKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5l
Y2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291cmNlVXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQp
KTsKKyAgICByZWNvcmREcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBs
b2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAg
ICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV9kZWxlZ2F0ZSkK
LSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwot
ICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Ci0gICAgYXBw
ZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKworICAgIHJlY29yZFJlc291cmNl
VXNlKGltYWdlQnVmZmVyKTsKKyAgICByZWNvcmREcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwotICAgIGFwcGVuZDxE
cmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291cmNlVXNlKGltYWdlKTsKKyAgICBy
ZWNvcmREcmF3TmF0aXZlSW1hZ2UoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29y
ZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsK
LSAgICBhcHBlbmQ8RHJhd1BhdHRlcm4+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHNwYWNpbmcsIG9wdGlvbnMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2UpOworICAgIHJlY29yZERyYXdQYXR0
ZXJuKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpzYXZlKCkKIHsKLSAgICBhcHBlbmQ8U2F2ZT4oKTsKKyAg
ICByZWNvcmRTYXZlKCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFz
dCgpLmNsb25lRm9yU2F2ZSgpKTsKIH0KIApAQCAtMjMxLDI1ICsxOTMsMjUgQEAgdm9pZCBSZWNv
cmRlcjo6cmVzdG9yZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3RhdGVTdGFjay5yZW1v
dmVMYXN0KCk7Ci0gICAgYXBwZW5kPFJlc3RvcmU+KCk7CisgICAgcmVjb3JkUmVzdG9yZSgpOwog
fQogCiB2b2lkIFJlY29yZGVyOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBj
dXJyZW50U3RhdGUoKS50cmFuc2xhdGUoeCwgeSk7Ci0gICAgYXBwZW5kPFRyYW5zbGF0ZT4oeCwg
eSk7CisgICAgcmVjb3JkVHJhbnNsYXRlKHgsIHkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpyb3Rh
dGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCiB7CiAgICAgY3VycmVudFN0YXRlKCkucm90YXRlKGFu
Z2xlSW5SYWRpYW5zKTsKLSAgICBhcHBlbmQ8Um90YXRlPihhbmdsZUluUmFkaWFucyk7CisgICAg
cmVjb3JkUm90YXRlKGFuZ2xlSW5SYWRpYW5zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c2NhbGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnNjYWxlKHNpemUp
OwotICAgIGFwcGVuZDxTY2FsZT4oc2l6ZSk7CisgICAgcmVjb3JkU2NhbGUoc2l6ZSk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSkKQEAgLTI1OCwxMyArMjIwLDEzIEBAIHZvaWQgUmVjb3JkZXI6OmNvbmNhdENUTShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY3VycmVu
dFN0YXRlKCkuY29uY2F0Q1RNKHRyYW5zZm9ybSk7Ci0gICAgYXBwZW5kPENvbmNhdGVuYXRlQ1RN
Pih0cmFuc2Zvcm0pOworICAgIHJlY29yZENvbmNhdGVuYXRlQ1RNKHRyYW5zZm9ybSk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OnNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkK
IHsKICAgICBjdXJyZW50U3RhdGUoKS5zZXRDVE0odHJhbnNmb3JtKTsKLSAgICBhcHBlbmQ8U2V0
Q1RNPih0cmFuc2Zvcm0pOworICAgIHJlY29yZFNldENUTSh0cmFuc2Zvcm0pOwogfQogCiBBZmZp
bmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1ZGVEZXZp
Y2VTY2FsZSkgY29uc3QKQEAgLTI3NSw1NCArMjM3LDY0IEBAIEFmZmluZVRyYW5zZm9ybSBSZWNv
cmRlcjo6Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdAog
CiB2b2lkIFJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiB7
Ci0gICAgYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KG9wYWNpdHkpOworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkQmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihvcGFjaXR5KTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5s
YXN0KCkuY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogewotICAgIGFwcGVuZDxFbmRUcmFuc3BhcmVuY3lMYXll
cj4oKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29y
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsK
IH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBib3JkZXJUaGlja25lc3MpCiB7Ci0gICAgYXBwZW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJU
aGlja25lc3MpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAg
cmVjb3JkRHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKIH0KIAogdm9pZCBSZWNvcmRl
cjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludDIpCiB7Ci0gICAgYXBwZW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Mik7CisgICAgYXBw
ZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3TGluZShwb2lu
dDEsIHBvaW50Mik7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0
aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlKQogewotICAg
IGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihGbG9hdFBvaW50KCksIHRvRmxvYXRTaXplKHBvaW50
KSwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7CisgICAgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3TGluZXNGb3JUZXh0
KEZsb2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocG9pbnQpLCB0aGlja25lc3MsIHdpZHRocywgcHJp
bnRpbmcsIGRvdWJsZUxpbmVzKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFya2VyTGluZVN0eWxl
IHN0eWxlKQogewotICAgIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihyZWN0LCBz
dHlsZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNv
cmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKHJlY3QsIHN0eWxlKTsKIH0KIAogdm9pZCBSZWNv
cmRlcjo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFwcGVuZDxE
cmF3RWxsaXBzZT4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nhcnko
KTsKKyAgICByZWNvcmREcmF3RWxsaXBzZShyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJh
d1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKLSAgICBhcHBlbmQ8RHJhd1BhdGg+KHBhdGgpOwor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd1Bh
dGgocGF0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewot
ICAgIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUGF0aD4ocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3Ip
OworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJh
d0ZvY3VzUmluZ1BhdGgocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3IpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZmxv
YXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVu
ZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KHJlY3RzLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3Rm9jdXNS
aW5nUmVjdHMocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTMzOSwxMjIgKzMxMSwxMzYgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSwgYm9vbCYsIGNvbnN0IENvbG8KIAog
dm9pZCBSZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFw
cGVuZDxGaWxsUmVjdD4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKKyAgICByZWNvcmRGaWxsUmVjdChyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAg
YXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihyZWN0LCBjb2xvcik7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihyZWN0
LCBjb2xvcik7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhHcmFk
aWVudD4ocmVjdCwgZ3JhZGllbnQpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQocmVjdCwgZ3JhZGllbnQpOwog
fQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7Ci0gICAgYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4ocmVjdCwgY29sb3IsIG9wLCBibGVu
ZE1vZGUpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVj
b3JkRmlsbENvbXBvc2l0ZWRSZWN0KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBhcHBl
bmQ8RmlsbFJvdW5kZWRSZWN0PihyZWN0LCBjb2xvciwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxSb3VuZGVkUmVjdChy
ZWN0LCBjb2xvciwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgY29sb3IpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUocmVjdCwgcm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiB7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAg
ICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhKCkpIHsKICAgICAgICAgaWYgKHBhdGguaGFzSW5saW5l
RGF0YTxMaW5lRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxGaWxsTGluZT4ocGF0aC5pbmxp
bmVEYXRhPExpbmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxMaW5lKHBhdGguaW5s
aW5lRGF0YTxMaW5lRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0
YTxBcmNEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPEZpbGxBcmM+KHBhdGguaW5saW5lRGF0
YTxBcmNEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxBcmMocGF0aC5pbmxpbmVEYXRh
PEFyY0RhdGE+KCkpOwogICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8UXVhZEN1
cnZlRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxGaWxsUXVhZEN1cnZlPihwYXRoLmlubGlu
ZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRGaWxsUXVhZEN1cnZl
KHBhdGguaW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0
aC5oYXNJbmxpbmVEYXRhPEJlemllckN1cnZlRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxG
aWxsQmV6aWVyQ3VydmU+KHBhdGguaW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpOworICAg
ICAgICAgICAgcmVjb3JkRmlsbEJlemllckN1cnZlKHBhdGguaW5saW5lRGF0YTxCZXppZXJDdXJ2
ZURhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgYXBwZW5kPEZp
bGxQYXRoPihwYXRoKTsKKyAgICByZWNvcmRGaWxsUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZWNv
cmRlcjo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFwcGVuZDxG
aWxsRWxsaXBzZT4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nhcnko
KTsKKyAgICByZWNvcmRGaWxsRWxsaXBzZShyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c3Ry
b2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKIHsKLSAgICBh
cHBlbmQ8U3Ryb2tlUmVjdD4ocmVjdCwgbGluZVdpZHRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFN0cm9rZVJlY3QocmVjdCwgbGluZVdpZHRo
KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogewor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAjaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCiAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0YSgpKSB7CiAgICAgICAgIGlm
IChwYXRoLmhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ry
b2tlTGluZT4ocGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29y
ZFN0cm9rZUxpbmUocGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpKTsKICAgICAgICAgZWxzZSBp
ZiAocGF0aC5oYXNJbmxpbmVEYXRhPEFyY0RhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ry
b2tlQXJjPihwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRT
dHJva2VBcmMocGF0aC5pbmxpbmVEYXRhPEFyY0RhdGE+KCkpOwogICAgICAgICBlbHNlIGlmIChw
YXRoLmhhc0lubGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxT
dHJva2VRdWFkQ3VydmU+KHBhdGguaW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigpKTsKKyAgICAg
ICAgICAgIHJlY29yZFN0cm9rZVF1YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1cnZlRGF0
YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJDdXJ2ZURh
dGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlQmV6aWVyQ3VydmU+KHBhdGguaW5saW5l
RGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQmV6aWVy
Q3VydmUocGF0aC5pbmxpbmVEYXRhPEJlemllckN1cnZlRGF0YT4oKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKLSAgICBhcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7CisgICAgcmVj
b3JkU3Ryb2tlUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXBwZW5kPFN0cm9rZUVsbGlwc2U+KHJlY3Qp
OworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkU3Ry
b2tlRWxsaXBzZShyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8Q2xlYXJSZWN0PihyZWN0KTsKKyAgICBhcHBl
bmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZENsZWFyUmVjdChyZWN0
KTsKIH0KIAogI2lmIFVTRShDRykKIHZvaWQgUmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybigp
CiB7Ci0gICAgYXBwZW5kPEFwcGx5U3Ryb2tlUGF0dGVybj4oKTsKKyAgICBhcHBlbmRTdGF0ZUNo
YW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigpOwog
fQogCiB2b2lkIFJlY29yZGVyOjphcHBseUZpbGxQYXR0ZXJuKCkKIHsKLSAgICBhcHBlbmQ8QXBw
bHlGaWxsUGF0dGVybj4oKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgp
OworICAgIHJlY29yZEFwcGx5RmlsbFBhdHRlcm4oKTsKIH0KICNlbmRpZgogCiB2b2lkIFJlY29y
ZGVyOjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBjdXJyZW50U3RhdGUoKS5j
bGlwQm91bmRzLmludGVyc2VjdChyZWN0KTsKLSAgICBhcHBlbmQ8Q2xpcD4ocmVjdCk7CisgICAg
cmVjb3JkQ2xpcChyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Y2xpcE91dChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgYXBwZW5kPENsaXBPdXQ+KHJlY3QpOworICAgIHJlY29yZENs
aXBPdXQocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0
aCkKIHsKLSAgICBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4ocGF0aCk7CisgICAgcmVjb3JkQ2xpcE91
dFRvUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Y2xpcFBhdGgoY29uc3QgUGF0aCYg
cGF0aCwgV2luZFJ1bGUgd2luZFJ1bGUpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5k
cy5pbnRlcnNlY3QocGF0aC5mYXN0Qm91bmRpbmdSZWN0KCkpOwotICAgIGFwcGVuZDxDbGlwUGF0
aD4ocGF0aCwgd2luZFJ1bGUpOworICAgIHJlY29yZENsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsK
IH0KIAogSW50UmVjdCBSZWNvcmRlcjo6Y2xpcEJvdW5kcygpIGNvbnN0CkBAIC00NjQsMTAgKzQ1
MCw4IEBAIEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKSBjb25zdAogCiB2b2lkIFJlY29y
ZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVs
ZWdhdGUtPnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlM
aXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RS
ZWN0KTsKKyAgICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAgcmVjb3JkQ2xp
cFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IGRlc3RSZWN0KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQpAQCAtNDgzLDEw
ICs0NjcsMTAgQEAgR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb24KICAgICBpbml0aWFsQ1RNLnRyYW5z
bGF0ZSgwLCAtc2NhbGVkU2l6ZS5oZWlnaHQoKSk7CiAgICAgaW5pdGlhbENUTS5zY2FsZShzY2Fs
ZWRTaXplIC8gZGVzdGluYXRpb24uc2l6ZSgpKTsKIAotICAgIFJlY29yZGVyIG5lc3RlZENvbnRl
eHQoKnRoaXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RN
KTsKLSAgICBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9uLCBj
b2xvclNwYWNlKTsKLSAgICBkcmF3aW5nRnVuY3Rpb24obmVzdGVkQ29udGV4dCk7Ci0gICAgYXBw
ZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOworICAgIGF1dG8gbmVz
dGVkQ29udGV4dCA9IGNyZWF0ZU5lc3RlZENvbnRleHQoaW5pdGlhbENsaXAsIGluaXRpYWxDVE0p
OworICAgIHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRlc3RpbmF0aW9uLCBjb2xv
clNwYWNlKTsKKyAgICBkcmF3aW5nRnVuY3Rpb24oKm5lc3RlZENvbnRleHQpOworICAgIHJlY29y
ZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbik7CiAKICAgICByZXR1cm4gQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwogfQpAQCAtNDk5LDcgKzQ4Myw3IEBA
IHZvaWQgUmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNT
RVJUKHBsYXllci5pZGVudGlmaWVyKCkpOwotICAgIGFwcGVuZDxQYWludEZyYW1lRm9yTWVkaWE+
KHBsYXllciwgZGVzdGluYXRpb24pOworICAgIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShwbGF5
ZXIsIGRlc3RpbmF0aW9uKTsKIH0KICNlbmRpZgogCkBAIC01MDcsNyArNDkxLDcgQEAgdm9pZCBS
ZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
IHsKICAgICAvLyBGSVhNRTogdGhpcyBjaGFuZ2VzIHRoZSBiYXNlQ1RNLCB3aGljaCB3aWxsIGlu
dmFsaWRhdGUgYWxsIG9mIG91ciBjYWNoZWQgZXh0ZW50cy4KICAgICAvLyBBc3NlcnQgdGhhdCBp
dCdzIG9ubHkgY2FsbGVkIGVhcmx5IG9uPwotICAgIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFj
dG9yPihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihkZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIEZsb2F0UmVjdCBSZWNvcmRlcjo6cm91bmRUb0Rl
dmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYXBoaWNzQ29udGV4dDo6Um91bmRp
bmdNb2RlKQpAQCAtNTI2LDI1ICs1MTAsNiBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1Bh
aW50aW5nRXh0ZW50KGZsb2F0IGJsdXJSYWRpdXMpCiAgICAgcmV0dXJuIGNlaWxmKGJsdXJSYWRp
dXMgKiByYWRpdXNFeHRlbnRNdWx0aXBsaWVyKTsKIH0KIAotRmxvYXRSZWN0IFJlY29yZGVyOjpl
eHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAotewotICAg
IEZsb2F0UmVjdCBib3VuZHMgPSByZWN0OwotICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgc3RhdGUg
PSBjdXJyZW50U3RhdGUoKTsKLQotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxv
YXQgc2hhZG93UmFkaXVzOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChnZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgewotICAgICAgICBG
bG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0gYm91bmRzOwotICAgICAgICBzaGFkb3dFeHRlbnQubW92
ZShzaGFkb3dPZmZzZXQpOwotICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWlu
dGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsKLSAgICAgICAgYm91bmRzLnVuaXRlKHNoYWRvd0V4
dGVudCk7Ci0gICAgfQotICAgIAotICAgIEZsb2F0UmVjdCBjbGlwcGVkRXh0ZW50ID0gaW50ZXJz
ZWN0aW9uKHN0YXRlLmNsaXBCb3VuZHMsIGJvdW5kcyk7Ci0gICAgcmV0dXJuIHN0YXRlLmN0bS5t
YXBSZWN0KGNsaXBwZWRFeHRlbnQpOwotfQotCiBjb25zdCBSZWNvcmRlcjo6Q29udGV4dFN0YXRl
JiBSZWNvcmRlcjo6Y3VycmVudFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zdGF0ZVN0
YWNrLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBh
ZTk2ZjZlNzdkNjZlZDcwZDE1MjRmM2UxYzA1YTMxMWYyY2YxOTkwLi5lMWM1YjcxYmVmMjc4MjMy
ZWNmYzc0Mzg2Yjc4YWM2NWZhMDc5NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKQEAgLTU0LDM2ICs1NCwxMzMgQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3Jh
cGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAgY2xhc3MgRGVsZWdhdGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25z
dHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29u
c3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246
OkRlY29uc3RydWN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyKSA9IDA7
CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihSZWNvcmRlciYgcGFy
ZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkU2F2ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzdG9yZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUm90YXRlKGZsb2F0IGFuZ2xlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZFNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8
dWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29s
b3IoU1JHQkE8dWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0U3Ryb2tl
VGhpY2tuZXNzKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldFN0YXRlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2Fw
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJh
eSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TGlu
ZUpvaW4oTGluZUpvaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0TWl0ZXJMaW1p
dChmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGVhclNoYWRvdygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZENsaXBPdXQoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBh
dGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBX
aW5kUnVsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBs
b2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdM
aW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRT
aXplJiBsb2NhbEFuY2hvciwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRo
cywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IERvY3VtZW50TWFya2VyTGluZVN0eWxlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRE
cmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZERyYXdQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdG
b2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25z
dCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3Rz
KGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29u
c3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3Io
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRG
aWxsTGluZShjb25zdCBMaW5lRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmls
bEFyYyhjb25zdCBBcmNEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUXVh
ZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZEZpbGxCZXppZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBj
b25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0
cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0
cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJv
a2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVz
b3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhd0lt
YWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkg
PSAwOwogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5p
c0VtcHR5KCk7IH0KKyAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGN0bTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOworCisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0p
CisgICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKKyAgICAgICAgICAgICwgbGFzdERyYXdp
bmdTdGF0ZShzdGF0ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ29udGV4dFN0
YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbnRleHRT
dGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOworICAgICAgICAg
ICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclRyYW5zcGFy
ZW5jeUxheWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzdGF0ZSA9IGNs
b25lRm9yU2F2ZSgpOworICAgICAgICAgICAgc3RhdGUubGFzdERyYXdpbmdTdGF0ZS5hbHBoYSA9
IDE7CisgICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgIH0KIAotICAgIGNsYXNzIERl
bGVnYXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IHJldHVy
biBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0
aXZlSW1hZ2UmKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIo
Y29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250JikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZlciYpIHsgfQotICAgICAgICB2aXJ0dWFsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7IH0KKyAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQg
eSk7CisgICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKKyAgICAgICAg
dm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICAgICAgdm9pZCBjb25jYXRDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOwogICAgIH07CiAKLSAgICB2b2lkIGZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRl
eHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVu
dGlmaWVyKTsgfQorICAgIGNvbnN0IFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+JiBzdGF0ZVN0YWNr
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrOyB9CisgICAgYm9vbCBpc05lc3RlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNOZXN0ZWQ7IH0KIAotcHJpdmF0ZToKLSAgICBSZWNvcmRlcihSZWNv
cmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CisgICAg
Y29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKKyAgICBDb250ZXh0U3Rh
dGUmIGN1cnJlbnRTdGF0ZSgpOwogCitwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBGSVhNRTogTWF5YmUg
cmVtb3ZlIHRoaXM/Ci0gICAgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZm
ZXImKSBjb25zdDsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOwogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQp
CiAgICAgdm9pZCBzZXRJc0NBTGF5ZXJDb250ZXh0KGJvb2wpIGZpbmFsIHsgfQpAQCAtOTQsMTg0
ICsxOTEsOTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2ws
IGJvb2wsIFN0cm9rZVN0eWxlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAg
ICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAotICAgIHZv
aWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKLSAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0
IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgc2V0TGluZUpv
aW4oTGluZUpvaW4pIGZpbmFsOwotICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQg
ZGFzaE9mZnNldCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lSm9pbihM
aW5lSm9pbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNaXRlckxpbWl0KGZs
b2F0KSBmaW5hbDsKIAotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFs
OwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBmaWxsUm91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlUGF0aChj
b25zdCBQYXRoJikgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29u
c3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxQYXRoKGNvbnN0
IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3Ryb2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAjaWYg
VVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKSBm
aW5hbDsKLSAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3R2x5cGhzQW5k
Q2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNo
b3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCi0gICAg
dm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
ZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAK
LSAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykgZmluYWw7Ci0gICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRQb2ludCYpIGZpbmFsOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVMaW5lcywgU3Ryb2tlU3R5bGUpIGZpbmFsOwotICAgIHZvaWQgZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxp
bmVTdHlsZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0IGJvcmRlclRoaWNrbmVzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50Jiwg
ZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywg
Ym9vbCBkb3VibGVMaW5lcywgU3Ryb2tlU3R5bGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3RWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd1BhdGgoY29uc3Qg
UGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0
aCYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3
aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOwotICAgIHZvaWQgZHJhd0Zv
Y3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZz
ZXQsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9j
dXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xv
ciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
JikgZmluYWw7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNv
bnN0IFBhdGgmLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENv
bG9yJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJl
Y3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBDb2xvciYp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRo
JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBDb2xvciYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywgY29uc3Qg
Q29sb3ImKSBmaW5hbDsKICNlbmRpZgogCi0gICAgdm9pZCBzYXZlKCkgZmluYWw7Ci0gICAgdm9p
ZCByZXN0b3JlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlKCkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKCkgZmluYWw7CiAKLSAgICB2b2lkIHRy
YW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHJvdGF0ZShmbG9hdCBh
bmdsZUluUmFkaWFucykgZmluYWw7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSBm
aW5hbDsKLSAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsK
LSAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBj
b25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBm
bG9hdCB5KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvdGF0ZShmbG9hdCBhbmds
ZUluUmFkaWFucykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2FsZShjb25zdCBG
bG9hdFNpemUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZp
bmVUcmFuc2Zvcm0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBj
b25zdCBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFj
aXR5KSBmaW5hbDsKLSAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBm
aW5hbDsKIAotICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lk
IGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkg
ZmluYWw7Ci0gICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
IGZpbmFsOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXAoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0KGNvbnN0
IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcE91dChjb25z
dCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgY2xpcEJv
dW5kcygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikg
ZmluYWw7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHJvdW5kVG9E
ZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01v
ZGUpIGZpbmFsOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLSAg
ICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VM
WSghY2FuQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSkpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGlmIGNvbnN0ZXhwciAoaXRlbU5lZWRzU3RhdGU8VD4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0KLSAgICAgICAgbV9kaXNw
bGF5TGlzdC5hcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLQotICAgICAg
ICBpZiBjb25zdGV4cHIgKFQ6OmlzRHJhd2luZ0l0ZW0pIHsKLSAgICAgICAgICAgIGlmIChMSUtF
TFkoIW1fZGlzcGxheUxpc3QudHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgYXV0byBpdGVtID0gVChzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOwotICAgICAgICAgICAgaWYgKGF1dG8gcmVjdCA9IGl0ZW0ubG9jYWxC
b3VuZHMoKnRoaXMpKQotICAgICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYWRkRHJhd2luZ0l0
ZW1FeHRlbnQoZXh0ZW50RnJvbUxvY2FsQm91bmRzKCpyZWN0KSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChhdXRvIHJlY3QgPSBpdGVtLmdsb2JhbEJvdW5kcygpKQotICAgICAgICAgICAgICAgIG1f
ZGlzcGxheUxpc3QuYWRkRHJhd2luZ0l0ZW1FeHRlbnQoKnJlY3QpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYWRkRHJhd2luZ0l0ZW1FeHRlbnQoc3Rk
OjpudWxsb3B0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpdGVtTmVlZHNTdGF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7
CiAKLSAgICB2b2lkIHJlY29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0
JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBl
bmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFu
Z2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCi0gICAgRmxvYXRSZWN0IGV4dGVudEZyb21Mb2Nh
bEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICAKICAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGN0bSgpIGNvbnN0OwogCi0gICAgc3RydWN0IENvbnRleHRTdGF0ZSB7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG07Ci0gICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOwot
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKLSAgICAgICAgCi0gICAgICAg
IENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCi0gICAgICAg
ICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0gICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKLSAg
ICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0ZShzdGF0ZSkKLSAgICAgICAgewotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZlKCkgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3REcmF3aW5nU3RhdGUs
IGN0bSwgY2xpcEJvdW5kcyk7Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNoYW5nZSA9IHN0YXRl
Q2hhbmdlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9Ci0KLSAgICAgICAg
Q29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0gICAgICAgICAgICBz
dGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkp
OwotICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAgICAgIHZv
aWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwotICAgICAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKLSAgICB9OwotICAgIAotICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3VycmVudFN0
YXRlKCkgY29uc3Q7Ci0gICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKLQotICAgIERp
c3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwotICAg
IGJvb2wgbV9pc05lc3RlZDsKLQogICAgIFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+IG1fc3RhdGVT
dGFjazsKLQogICAgIERyYXdHbHlwaHNSZWNvcmRlciBtX2RyYXdHbHlwaHNSZWNvcmRlcjsKKyAg
ICBib29sIG1faXNOZXN0ZWQgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNvbnN0ZXhwciBib29sIFJlY29yZGVyOjppdGVtTmVlZHNTdGF0ZSgpCi17Ci0gICAgaWYgKFQ6
OmlzRHJhd2luZ0l0ZW0pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgVVNFKENHKQotICAg
IGlmIChUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybiB8fCBUOjppdGVt
VHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci19Cit9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTExOTIxYWRiMmRm
MzYxYWEyN2NlZGQxMWQ0ZmE1NzNiNjU3YjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcApAQCAtMCwwICsxLDQ1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVyLmgiCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
RGlzcGxheUxpc3QgeworCitSZWNvcmRlckltcGw6OlJlY29yZGVySW1wbChEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBE
ZWxlZ2F0ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3Ry
dWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKKyAgICA6IFJlY29yZGVyKHN0YXRlLCBp
bml0aWFsQ2xpcCwgaW5pdGlhbENUTSwgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgICwg
bV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCit7
CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGlu
ZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7Cit9CisKK1JlY29yZGVySW1wbDo6UmVjb3Jk
ZXJJbXBsKFJlY29yZGVySW1wbCYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSkKKyAgICA6IFJlY29yZGVyKHBhcmVudCwgc3RhdGUsIGluaXRpYWxDbGlw
LCBpbml0aWFsQ1RNKQorICAgICwgbV9kaXNwbGF5TGlzdChwYXJlbnQubV9kaXNwbGF5TGlzdCkK
KyAgICAsIG1fZGVsZWdhdGUocGFyZW50Lm1fZGVsZWdhdGUpCit7Cit9CisKK1JlY29yZGVySW1w
bDo6flJlY29yZGVySW1wbCgpCit7CisgICAgQVNTRVJUKHN0YXRlU3RhY2soKS5zaXplKCkgPT0g
MSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVzdG9y
ZS4KKyAgICBpZiAoIWlzTmVzdGVkKCkpCisgICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJSZWNv
cmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5kYXRh
KCkpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sK
KyAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgc291cmNlUmVjdCk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYg
cGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKK3sKKyAgICBhcHBlbmQ8
UHV0UGl4ZWxCdWZmZXI+KHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3Jt
YXQpOworfQorCitib29sIFJlY29yZGVySW1wbDo6Y2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlw
ZSB0eXBlKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5j
YW5BcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOworfQorCitib29sIFJlY29yZGVySW1wbDo6Y2FuRHJh
d0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+aXNDYWNoZWRJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcik7Cit9CisKK1JlbmRlcmluZ01vZGUgUmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRl
cmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlY29yZGVySW1wbDo6Y3JlYXRlTmVzdGVkQ29udGV4
dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXJJbXBsPigqdGhpcywg
R3JhcGhpY3NDb250ZXh0U3RhdGUgeyB9LCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Cit9CisK
K3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTYXZlKCkKK3sKKyAgICBhcHBlbmQ8U2F2ZT4oKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc3RvcmUoKQoreworICAgIGFwcGVuZDxS
ZXN0b3JlPigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkVHJhbnNsYXRlKGZsb2F0
IHgsIGZsb2F0IHkpCit7CisgICAgYXBwZW5kPFRyYW5zbGF0ZT4oeCwgeSk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRSb3RhdGUoZmxvYXQgYW5nbGUpCit7CisgICAgYXBwZW5kPFJv
dGF0ZT4oYW5nbGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2NhbGUoY29uc3Qg
RmxvYXRTaXplJiBzY2FsZSkKK3sKKyAgICBhcHBlbmQ8U2NhbGU+KHNjYWxlKTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKK3sKKyAgICBhcHBlbmQ8U2V0Q1RNPih0cmFuc2Zvcm0pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0pCit7CisgICAgYXBwZW5kPENvbmNhdGVuYXRlQ1RNPih0cmFuc2Zvcm0pOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+
IGlubGluZUNvbG9yKQoreworICAgIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGlubGluZUNv
bG9yKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldElubGluZVN0cm9rZUNvbG9y
KFNSR0JBPHVpbnQ4X3Q+IGlubGluZUNvbG9yKQoreworICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJv
a2VDb2xvcj4oaW5saW5lQ29sb3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0
U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKK3sKKyAgICBhcHBlbmQ8U2V0U3Ryb2tl
VGhpY2tuZXNzPih0aGlja25lc3MpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0
U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3sKKyAgICBhcHBlbmQ8U2V0U3Rh
dGU+KHN0YXRlLCBjaGFuZ2VGbGFncyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKK3sKKyAgICBhcHBlbmQ8U2V0TGluZUNhcD4obGlu
ZUNhcCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5lRGFzaChjb25zdCBE
YXNoQXJyYXkmIGFycmF5LCBmbG9hdCBkYXNoT2Zmc2V0KQoreworICAgIGFwcGVuZDxTZXRMaW5l
RGFzaD4oYXJyYXksIGRhc2hPZmZzZXQpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
U2V0TGluZUpvaW4oTGluZUpvaW4gam9pbikKK3sKKyAgICBhcHBlbmQ8U2V0TGluZUpvaW4+KGpv
aW4pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdChmbG9hdCBs
aW1pdCkKK3sKKyAgICBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4obGltaXQpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xlYXJTaGFkb3coKQoreworICAgIGFwcGVuZDxDbGVhclNoYWRv
dz4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXAoY29uc3QgRmxvYXRSZWN0
JiBjbGlwUmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xpcD4oY2xpcFJlY3QpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dChjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0KQorewor
ICAgIGFwcGVuZDxDbGlwT3V0PihjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKK3sKKyAg
ICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwgZGVzdGlu
YXRpb25SZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBPdXRUb1BhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4ocGF0aCk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBX
aW5kUnVsZSBydWxlKQoreworICAgIGFwcGVuZDxDbGlwUGF0aD4ocGF0aCwgcnVsZSk7Cit9CisK
K3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9u
LCBjb2xvclNwYWNlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVu
ZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9uKTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlIG1vZGUpCit7CisgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgbW9kZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdl
QnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdO
YXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZUlkZW50aWZpZXIsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRl
bnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhcHBlbmQ8
RHJhd1BhdHRlcm4+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQorewor
ICAgIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihvcGFjaXR5KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkKK3sKKyAgICBhcHBlbmQ8
RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKK3sKKyAgICBh
cHBlbmQ8RHJhd1JlY3Q+KHJlY3QsIGxpbmVXaWR0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50MikKK3sKKyAgICBhcHBlbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxvYXQg
dGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBk
b3VibGVMaW5lcykKK3sKKyAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4dD4oYmxvY2tMb2NhdGlv
biwgbG9jYWxBbmNob3IsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMp
OworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlJiBz
dHlsZSkKK3sKKyAgICBhcHBlbmQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVjdCwgc3R5
bGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQoreworICAgIGFwcGVuZDxEcmF3RWxsaXBzZT4ocmVjdCk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQoreworICAg
IGFwcGVuZDxEcmF3UGF0aD4ocGF0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zm
c2V0LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRo
PihwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBm
bG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXBw
ZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4ocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihyZWN0LCBjb2xv
cik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKK3sKKyAgICBhcHBlbmQ8
RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlKQor
eworICAgIGFwcGVuZDxGaWxsQ29tcG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwgbW9kZSk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgbW9kZSkK
K3sKKyAgICBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0PihyZWN0LCBjb2xvciwgbW9kZSk7Cit9CisK
K3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihy
ZWN0LCByb3VuZGVkUmVjdCwgY29sb3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
RmlsbExpbmUoY29uc3QgTGluZURhdGEmIGxpbmUpCit7CisgICAgYXBwZW5kPEZpbGxMaW5lPihs
aW5lKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxBcmMoY29uc3QgQXJjRGF0
YSYgYXJjKQoreworICAgIGFwcGVuZDxGaWxsQXJjPihhcmMpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVEYXRhJiBjdXJ2ZSkKK3sK
KyAgICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4oY3VydmUpOworfQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkRmlsbEJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYgY3VydmUpCit7
CisgICAgYXBwZW5kPEZpbGxCZXppZXJDdXJ2ZT4oY3VydmUpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8Rmls
bFBhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGFwcGVuZDxGaWxsRWxsaXBzZT4ocmVjdCk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5k
PEdldFBpeGVsQnVmZmVyPihvdXRwdXRGb3JtYXQsIHJlY3QpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIGJ1ZmZlciwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKK3sKKyAgICBhcHBlbmQ8UHV0UGl4ZWxC
dWZmZXI+KGJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBwcmVtdWx0aXBsaWNhdGlvbik7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBhcHBlbmQ8
UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3
aWR0aCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUmVjdD4ocmVjdCwgd2lkdGgpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZShjb25zdCBMaW5lRGF0YSYgbGluZSkKK3sK
KyAgICBhcHBlbmQ8U3Ryb2tlTGluZT4obGluZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRTdHJva2VBcmMoY29uc3QgQXJjRGF0YSYgYXJjKQoreworICAgIGFwcGVuZDxTdHJva2VB
cmM+KGFyYyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VRdWFkQ3VydmUo
Y29uc3QgUXVhZEN1cnZlRGF0YSYgY3VydmUpCit7CisgICAgYXBwZW5kPFN0cm9rZVF1YWRDdXJ2
ZT4oY3VydmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQmV6aWVyQ3Vy
dmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJiBjdXJ2ZSkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlQmV6
aWVyQ3VydmU+KGN1cnZlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4ocmVjdCk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQorewor
ICAgIGFwcGVuZDxDbGVhclJlY3Q+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkKK3sKKyAgICBhcHBlbmQ8QXBwbHlTdHJva2VQYXR0ZXJu
PigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlGaWxsUGF0dGVybigpCit7
CisgICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQoreworICAg
IGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit7Cisg
ICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdl
VXNlKGltYWdlKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwor
fQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK3sK
KyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShm
b250KTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChmb250KTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sK
KyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZm
ZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcik7Cit9CisKK0Zsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2Nh
bEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgRmxvYXRSZWN0IGJv
dW5kcyA9IHJlY3Q7CisgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKKworICAgIEZs
b2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgZmxvYXQgc2hhZG93UmFkaXVzOworICAgIENvbG9y
IHNoYWRvd0NvbG9yOworICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRp
dXMsIHNoYWRvd0NvbG9yKSkgeworICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0gYm91
bmRzOworICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOworICAgICAgICBz
aGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsK
KyAgICAgICAgYm91bmRzLnVuaXRlKHNoYWRvd0V4dGVudCk7CisgICAgfQorCisgICAgRmxvYXRS
ZWN0IGNsaXBwZWRFeHRlbnQgPSBpbnRlcnNlY3Rpb24oc3RhdGUuY2xpcEJvdW5kcywgYm91bmRz
KTsKKyAgICByZXR1cm4gc3RhdGUuY3RtLm1hcFJlY3QoY2xpcHBlZEV4dGVudCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlZTliMDJi
MTkzY2JhNmFkYTQ1NTNjODQ0NmMwMzA1YzlhYzMxN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CisKK2NsYXNzIFJlY29yZGVySW1wbCA6IHB1YmxpYyBSZWNvcmRlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXJJbXBs
KTsKK3B1YmxpYzoKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNv
cmRlckltcGwoRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRl
KiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9u
ID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3Ry
dWN0KTsKKyAgICBSZWNvcmRlckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flJlY29yZGVySW1wbCgpOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdC5pc0VtcHR5KCk7IH0KKworICAgIGNsYXNzIERlbGVnYXRlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKSB7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXIm
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9u
dFVzZShGb250JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVz
ZShJbWFnZUJ1ZmZlciYpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0K
KyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBmaW5hbDsKKyAgICB2b2lk
IGZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikg
ZmluYWwgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlmaWVyKTsgfQorCitwcml2YXRlOgor
ICAgIC8vIEZJWE1FOiBNYXliZSByZW1vdmUgdGhpcz8KKyAgICBib29sIGNhbkRyYXdJbWFnZUJ1
ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCByZWNvcmRTYXZlKCkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRSZXN0b3JlKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRUcmFu
c2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRSb3RhdGUoZmxv
YXQgYW5nbGUpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2NhbGUoY29uc3QgRmxvYXRTaXplJikg
ZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90
PikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50
OF90PikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0TGlu
ZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRN
aXRlckxpbWl0KGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsZWFyU2hhZG93KCkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRDbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkQ2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZENsaXBPdXRUb1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgdm9p
ZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdl
QnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRF
bmRUcmFuc3BhcmVuY3lMYXllcigpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0xpbmUoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xv
Y2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3MsIGNv
bnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKSBm
aW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZERyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkRHJhd1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0ZvY3Vz
UmluZ1BhdGgoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENv
bG9yJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVj
dG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQoY29u
c3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxDb21w
b3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZEZpbGxMaW5lKGNvbnN0IExpbmVEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxs
QXJjKGNvbnN0IEFyY0RhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxRdWFkQ3VydmUo
Y29uc3QgUXVhZEN1cnZlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbEJlemllckN1
cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFBh
dGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1
ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bikgZmluYWw7CisgICAgdm9pZCByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
U3Ryb2tlTGluZShjb25zdCBMaW5lRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU3Ryb2tl
QXJjKGNvbnN0IEFyY0RhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0cm9rZVF1YWRDdXJ2
ZShjb25zdCBRdWFkQ3VydmVEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTdHJva2VCZXpp
ZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0
cm9rZVBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU3Ryb2tlRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsZWFyUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkQXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CisKKyAgICB2b2lk
IHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRS
ZXNvdXJjZVVzZShGb250JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFn
ZUJ1ZmZlciYpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
Y3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgY2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghY2FuQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlw
ZSkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGlzcGxheUxpc3QuYXBwZW5k
PFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisKKyAgICAgICAgaWYgY29uc3RleHBy
IChUOjppc0RyYXdpbmdJdGVtKSB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFtX2Rpc3BsYXlM
aXN0LnRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGF1dG8gaXRlbSA9IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlY3QgPSBpdGVtLmxvY2FsQm91bmRzKCp0aGlzKSkK
KyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KGV4dGVu
dEZyb21Mb2NhbEJvdW5kcygqcmVjdCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZWN0
ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFk
ZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQXBwZW5k
SXRlbU9mVHlwZShJdGVtVHlwZSkgY29uc3Q7CisKKyAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5
TGlzdDsKKyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZSB7IG51bGxwdHIgfTsKK307CisKK30KK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA0MmZjNDE4Yzc5ODIzMzE0OTRlZTI3
NmI2ZGE0OTk0YTFlNGM5OTZhLi44Y2VjOTI0MjY4NzUxNGM2YzJjNzdiNzg5OGMwYTM0YzkwN2Q1
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+
IGNsYXNzIFRocmVhZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEJhY2tlbmRUeXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSwgcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitjbGFzcyBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxC
YWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpE
ZWxlZ2F0ZSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudCB7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNw
bGF5TGlzdEltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI6Om1fZHJhd2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWU1MGJjZTk1Y2NlZmVlMzk2ZDJlM2NiYjllZmQ0
OWJlYmIwYWVhOS4uYmZiNWM5MGY4ZmE4MTQ4MWVkY2YwOThhMTVhMDI5ODc3ODIxYWY0OCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFNwbGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0
IGJhc2UgY2xhc3MgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhY2sgUmV0YWluUHRyQVJDIGFuZCBUeXBlQ2FzdHND
b2NvYUFSQyB0ZXN0cyB0byBUZXN0V1RGCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHRUZXN0c0NHLmNwcAppbmRleCBlMWI1MGJkZTc1ODkzZjQxZTY2MDAzNTVmY2JlZTg0NGJm
MTViMWRiLi4yNTViMWI0MGMzZTJjZTg1MmMwZTJiNzgxODZjNjY5OWNiNDRiYWMzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZXJh
dG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Rm9udENhc2NhZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Jbk1lbW9yeURpc3BsYXlMaXN0Lmg+CkBAIC01NCw3ICs1NCw3IEBA
IFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBCYXNpY0JpZnVyY2F0ZWRDb250
ZXh0KQogICAgIEdyYXBoaWNzQ29udGV4dENHIHByaW1hcnlDb250ZXh0KHByaW1hcnlDR0NvbnRl
eHQuZ2V0KCkpOwogCiAgICAgSW5NZW1vcnlEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdDsKLSAgICBS
ZWNvcmRlciBzZWNvbmRhcnlDb250ZXh0KGRpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAw
LCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0pOworICAgIFJlY29yZGVySW1wbCBz
ZWNvbmRhcnlDb250ZXh0KGRpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0
V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0pOwogCiAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29u
dGV4dCBjdHgocHJpbWFyeUNvbnRleHQsIHNlY29uZGFyeUNvbnRleHQpOwogCkBAIC05MCwxMCAr
OTAsMTAgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJj
YXRlZENvbnRleHQpCiBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dElu
QmlmdXJjYXRlZENvbnRleHQpCiB7CiAgICAgSW5NZW1vcnlEaXNwbGF5TGlzdCBwcmltYXJ5RGlz
cGxheUxpc3Q7Ci0gICAgUmVjb3JkZXIgcHJpbWFyeUNvbnRleHQocHJpbWFyeURpc3BsYXlMaXN0
LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0p
OworICAgIFJlY29yZGVySW1wbCBwcmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsg
fSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CiAK
ICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IHNlY29uZGFyeURpc3BsYXlMaXN0OwotICAgIFJlY29y
ZGVyIHNlY29uZGFyeUNvbnRleHQoc2Vjb25kYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0
KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJ
bXBsIHNlY29uZGFyeUNvbnRleHQoc2Vjb25kYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0
KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CiAKICAgICBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7
CiAK
</data>
<flag name="commit-queue"
          id="464618"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440614</attachid>
            <date>2021-10-08 08:02:05 -0700</date>
            <delta_ts>2021-10-08 08:53:18 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-231404-20211008080205.patch</filename>
            <type>text/plain</type>
            <size>101699</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4NTRmMDA3MTA3ZDBh
OTYxNzBhODhmODk1Y2UzZDg3Nzg4YjJkMC4uY2Q3OWRiNDMwOTVjY2U0MDM5YjljOWU2ZmU2MGE1
Y2NjNTA1MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMS0xMC0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tOgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHVzZXMgb2YgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
CisgICAgICAgIFRoZSBhYnN0cmFjdCBSZWNvcmRlciBub3cgY29udGFpbnMgbG9naWMgZm9yIG1h
cHBpbmcgR3JhcGhpY3NDb250ZXh0IG1ldGhvZCBjYWxscyBpbnRvIGNhbGxzIHRvIHJlY29yZAor
ICAgICAgICBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcy4gTm90ZSB0aGF0IHdoaWxlIG1h
bnkgR3JhcGhpY3NDb250ZXh0IG1ldGhvZHMgY29ycmVzcG9uZCBkaXJlY3RseSB0byBkaXNwbGF5
IGxpc3QKKyAgICAgICAgaXRlbXMsIHNvbWUgbWV0aG9kcyBtYXAgdG8gb25lIG9yIG1vcmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzdWNoIGFzIHNldHRpbmcgc3RhdGUgY29uc2lzdGluZyBvbmx5IG9m
IGlubGluZSBQT0QKKyAgICAgICAgZGF0YSBvciBkcmF3aW5nIHNpbXBsZSBwYXRocy4gVGhlIGJh
c2UgY2xhc3MgYWxzbyBtYW5hZ2VzIHVwZGF0aW5nIGFuZCBtYWludGFpbmluZyB0aGUgc3RhdGUg
c3RhY2sgKGEgbGlzdCBvZgorICAgICAgICBSZWNvcmRlcjo6Q29udGV4dFN0YXRlKSB3aGVuIG1v
ZGlmeWluZyBncmFwaGljcyBjb250ZXh0IHN0YXRlLgorCisgICAgICAgIEltcG9ydGFudGx5LCB0
aGlzIG1lYW5zIHRoYXQgdGhlIGFic3RyYWN0IFJlY29yZGVyIGNsYXNzIGRvZXMgbm90IGNvbnRh
aW4gZWl0aGVyIGEgUmVjb3JkZXIgRGVsZWdhdGUsIG5vciBkb2VzCisgICAgICAgIGl0IGNvbnRh
aW4gYSBEaXNwbGF5TGlzdC4gSW5zdGVhZCwgdGhlIGNvbmNyZXRlIHN1YmNsYXNzIChEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsKSBub3cgaG9sZHMgb24gdG8gdGhlIGxvY2FsCisgICAgICAgIERp
c3BsYXlMaXN0LgorCisgICAgICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgc3ViY2xhc3NlcyBv
ZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0ICJyZWNvcmRp
bmciIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcyBnaXZlbiB0aGVpciBjb25zdGl0dWVudCBh
cmd1bWVudHMsIGluc3RlYWQgb2YgZGlyZWN0bHkgaW1wbGVtZW50aW5nIHRoZSBpbmRpdmlkdWFs
IEdyYXBoaWNzQ29udGV4dCBkcmF3aW5nCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4
ZWxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpwdXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNh
bkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjppc05lc3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVn
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
RGVsZWdhdGU6OmNhbkFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRGb250VXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OnJlY29yZEltYWdlQnVmZmVyVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBl
bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpp
dGVtTmVlZHNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
YW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENv
bnRleHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBuZXN0ZWQgUmVjb3JkZXIgbG9naWMgdXNl
ZCBmb3IgYFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHNgLCBzdWNoIHRoYXQgaXQncyBu
b3cgYSBzZXBhcmF0ZQorICAgICAgICBvdmVycmlkZSBwb2ludC4gVGhpcyBhbGxvd3Mgc3ViY2xh
c3NlcyB0byBpbnN0YW50aWF0ZSBuZXN0ZWQgY29udGV4dHMgb2YgdGhlIHNhbWUgdHlwZSwgd2hp
bGUga2VlcGluZyB0aGUgbWFpbgorICAgICAgICBsb2dpYyBpbiBgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzYCBpbiB0aGUgc2hhcmVkIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDb25j
YXRlbmF0ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdFbGxpcHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVj
dFdpdGhHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEZpbGxBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkR2V0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJv
a2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkU3Ryb2tlUXVhZEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
QXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6On5EZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGU6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OnJlY29yZEltYWdlQnVmZmVyVXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmFwcGVuZCk6CisKIDIwMjEtMTAtMDcgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIGBoaWdoV2F0ZXJNYXJrYCBzaG91bGQg
YmUgYSByZWFkb25seSBXZWJJREwgYXR0cmlidXRlIG9mIHF1ZXVpbmcgc3RyYXRlZ2llcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlMWZhOWY2NmNhMGUxMWUxNWYzY2RiZjQ5MmVmNGMwN2RiZjZmN2E0Li5mMjY3YzY0
ZDA4NzFkZDljMDJlNDYwNDhlODM4NDg1OGEzMmYxMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0IGJh
c2UgY2xhc3MgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDI6IFVucm9sbCBQZW5kaW5nV2FrZXVwSW5mb3Jt
YXRpb246OmFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzNGQ5MWNhZmU2ZmY1ZDM1ZTI2NmE0
NTJjZDNmZjUzMzY3MzBkNDczLi41YTc4ZjE5ZDJhZGI0ZDBkZmUxMTQ1YmVkZmU3MDRjZWU4NzI3
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODIzOGU3MzdiOWVhNDg5ZTg1
NDhjY2VmYTljMWZlYmRmNjg0NGM3Li43YTA0NTkyOWI3NmZjYmVlMzkxZWQyZTM0M2Y3MzQ5ZDI5
MGVjZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNzQsNyArMzc0LDcgQEAKIAkJMEZFNTgwNjQxOTMyN0E2MjAwREUzMkVC
IC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFj
LmggKi87IH07CiAJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFNUZCRDcxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU1RkJE
OTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFy
VGhlbWVNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07
CiAJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTUzOTMsNiArNTM5Myw3IEBACiAJCUY0MjBGMDBBMjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVy
RXZlbnRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MjBGMDA4MjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVyRXZlbnRUeXBlTmFtZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDI5
MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAw
MDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTk0RkEyNzBDRkU0ODAwMzIyOThCIC8qIEdy
YXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk0RjkyNzBDRkU0ODAwMzIyOThCIC8qIEdyYXBoaWNz
Q29udGV4dEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0Mjk5NTBGMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzNFOTAzMURC
QkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3Rh
dGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1
NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYz
RjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLzsgfTsKQEAgLTY0MDIsOCArNjQwMyw4IEBACiAJCTBGRTVGQkNCMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJD
QzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU1RkJDRTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCRDAxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZXBsYXllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0
UmVwbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNkM3NkIxRkJGQjdB
NjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9y
VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODAwLDYgKzE2
ODAxLDggQEAKIAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyog
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5OTRGOTI3MENGRTQ4MDAz
MjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0Mjk5NTBFMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNF
OTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODIwMyw4ICsxODIwNiwxMCBAQAogCQkJCUY0Mzc3RDU1MjU1
MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCiAJCQkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAogCQkJCTFDRThE
MTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCi0JCQkJMEZF
NUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAotCQkJ
CTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCisJ
CQkJRjQyOTk1MEUyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICov
LAorCQkJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmgg
Ki8sCisJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcCAqLywKKwkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCkBAIC0zMjM1OCw3ICszMjM2Myw4IEBACiAJCQkJ
MEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0Mjk5NTBG
MjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUND
NjE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggY2E0ZTc3NzVlNzQ2Y2NjOTliMDc3
ZjIwYzY5NzE2Y2U4MjU4OTlkZi4uYWUwZDFhNzZmNjFjMjM2ZDliMTY4MTYwNDY1ZWUyMmNmZGYw
OGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdy
YWRpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4MDZjMTc1Njk5MzgwYmE2ZC4u
NmM2OGU0NDU5OGJmOTg2NmU4MTY0ZDIzNTFiMmNiZDYzZTc1YTBkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkNvbXBs
ZXhUZXh0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5
RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHJlY29yZGluZ0NvbnRl
eHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFu
c2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb246OkRvbnREZWNvbnN0cnVjdCk7CisgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBy
ZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3Qo
KSwgQWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOwogICAgIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwg
Z2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA2MWJiNWZjZGE4OTQwMmZhYTJjYzU3Y2M1OWFmOThkMjc1MDdmYzNlLi4y
ZDJmMTFhNDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0EpCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0xODA0LDcg
KzE4MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhD
b21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgICAgICAKICAgICAgICAgRmxv
YXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCi0gICAgICAgIERp
c3BsYXlMaXN0OjpSZWNvcmRlciBjb250ZXh0KCptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIGNvbnRleHQoKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIHBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiNjU2ZjEzNjgxNjI0
N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li40NDEwMzhlZDhmYjAyMjIzMjdmNDhlNjU2ZWVk
Nzg1YzI0MmYzMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaWYg
VVNFKENHKQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbQppbmRleCAzODhhZmNkNmY0NmFmYzQ1MjIxZjgwNzFkMzUwOTY3ZjBlNTM1NTBk
Li43NWUxZjk0YjJiNGY2OWIzMTg5YzRjNDI2MTdhYjE5MDgzYWRjYTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKIAotI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyMjY4
NGRjMzk4ZTFlZjUyYzFiZDk2NmZmNDUwMzcyMzdkY2YyYWVmLi44OTg2ZThjMzI5ZjBhMTFlODQ4
MzAxMTk5NWIzNmQzYmExNjE3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTQsNyAr
NTQsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEFzVGV4dEZsYWdzOwogCiBjbGFzcyBEaXNwbGF5TGlz
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3QpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXI7CisgICAgZnJpZW5kIGNsYXNz
IFJlY29yZGVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRGlzcGxheUxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAzOTU3YzQ1NzZmZTkxMmQ2ODEwMjA3NjEw
MDFjYzI0ZjY4Njg4NjJhLi4zNjJkNDM2NzUyYWM3M2E5YmMzYjNjYzhjMDU2YWE0ZDdmMDdiMjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxD
VE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitEcmF3aW5nQ29udGV4dDo6RHJhd2lu
Z0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IG1fY29udGV4dChtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggOTY1NjM2MzRk
NTdmNDA5NGIzYzJjYmE2ZjA2NzQwZjUwNjNkZDRiZi4uMTdmMjJlOTAzZWE2MGQwOWU5MGUyMGMz
ZTk3YmMxM2JjYWM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBJbk1l
bW9yeURpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXJJbXBsOjpEZWxl
Z2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9
Ci0gICAgUmVjb3JkZXImIHJlY29yZGVyKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9OworICAgIFJl
Y29yZGVySW1wbCYgcmVjb3JkZXIoKSB7IHJldHVybiBtX2NvbnRleHQ7IH07CiAgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlM
aXN0LCB7IH0pOyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7
CiAKIHByb3RlY3RlZDoKLSAgICBSZWNvcmRlciBtX2NvbnRleHQ7CisgICAgUmVjb3JkZXJJbXBs
IG1fY29udGV4dDsKICAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlMaXN0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbk1lbW9yeURpc3BsYXlMaXN0PiBtX3JlcGxheWVkRGlzcGxheUxpc3Q7CiAgICAg
Ym9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDBiMzVhZjU0MGMxNGRjYmRiZjdiZWM2
OWNhZmQ2MDZiMzJlNTVmMGYuLjQ2ZTlmYTg2YWFiNmJhNDQ5NWNjNDZhZGI3NmFmNDY3ZmU1YmEz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwogICAg
IH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCiAgICAg
ICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKICAgICAgICAgLCBtX2Ry
YXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAg
ICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3BsYXlM
aXN0OjpXcml0aW5nQ2xpZW50PigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDkzYmE2NTAyYWI2YmE0ZjMzMWNmZWU5NjNjMTllMzMwMmU5NWZiNmEuLjcz
MjA5NTM3M2FkN2ZhYjc3ZDg4NmExYTBjMDk3ZjQ2ZTFkMzk4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDIxICs0MCwxNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVy
KERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCitSZWNv
cmRlcjo6UmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbikKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3
R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGgg
Y2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUs
IGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNvcmRlcjo6UmVjb3JkZXIoUmVj
b3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
Ci0gICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9kZWxl
Z2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlz
LCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkp
CiAgICAgLCBtX2lzTmVzdGVkKHRydWUpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhp
cywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigp
KQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlh
bENsaXAgfSk7CiB9CkBAIC02MiwxOCArNTcsNiBAQCBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3Jk
ZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbAog
UmVjb3JkZXI6On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkg
PT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVz
dG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJS
ZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5k
YXRhKCkpOwotfQotCi12b2lkIFJlY29yZGVyOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQotewot
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKLX0K
LQotdm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi17Ci0gICAgYXBwZW5kPFB1dFBp
eGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsK
IH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKQEAgLTk2LDM3ICs3OSwyNSBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpy
ZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKG1fZGVs
ZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsK
LSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotfQotCiB2b2lkIFJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNo
YW5nZXMsIGNoYW5nZUZsYWdzKSkgewogICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdl
cy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVz
ZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2Vz
Lm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0
ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkp
Ci0gICAgICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKmNoYW5nZXMubV9zdGF0ZS5z
dHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgICAgIHJlY29yZFNldElubGlu
ZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5
dGVzKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhp
Y2tuZXNzPihjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgcmVjb3Jk
U2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPigqY2hhbmdlcy5t
X3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7Ci19Ci0KLWJvb2wgUmVjb3Jk
ZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1
cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsK
KyAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENv
bG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQpAQCAtMTUyLDM0ICsxMjMsMjQgQEAgdm9pZCBSZWNv
cmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRl
KHN0YXRlLCBmbGFncyk7CiB9CiAKLWJvb2wgUmVjb3JkZXI6OmNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2Rl
bGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwot
fQotCi1SZW5kZXJpbmdNb2RlIFJlY29yZGVyOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAo
TGluZUNhcCBsaW5lQ2FwKQogewotICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5lQ2FwKTsKKyAg
ICByZWNvcmRTZXRMaW5lQ2FwKGxpbmVDYXApOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hBcnJheSwgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAg
ICBhcHBlbmQ8U2V0TGluZURhc2g+KGRhc2hBcnJheSwgZGFzaE9mZnNldCk7CisgICAgcmVjb3Jk
U2V0TGluZURhc2goZGFzaEFycmF5LCBkYXNoT2Zmc2V0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZUpvaW4oTGluZUpvaW4gbGluZUpvaW4pCiB7Ci0gICAgYXBwZW5kPFNldExpbmVKb2lu
PihsaW5lSm9pbik7CisgICAgcmVjb3JkU2V0TGluZUpvaW4obGluZUpvaW4pOwogfQogCiB2b2lk
IFJlY29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiB7Ci0gICAgYXBwZW5k
PFNldE1pdGVyTGltaXQ+KG1pdGVyTGltaXQpOworICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0
ZXJMaW1pdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0xODksMzkgKzE1MCw0
MCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29ucwogCiB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7Ci0gICAgYXBwZW5kPERyYXdHbHlwaHM+
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9k
ZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRS
ZXNvdXJjZVVzZShjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgcmVjb3JkRHJhd0dseXBo
cyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01v
ZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogeworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJl
Y29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGlt
YWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisKKyAgICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAg
cmVjb3JkRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJlY29yZE5h
dGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZSk7CisgICAgcmVjb3JkRHJhd05hdGl2ZUltYWdlKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICByZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgYXBwZW5kPERyYXdQYXR0ZXJu
PihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291
cmNlVXNlKGltYWdlKTsKKyAgICByZWNvcmREcmF3UGF0dGVybihpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2F2ZSgpCiB7Ci0gICAgYXBwZW5kPFNhdmU+KCk7CisgICAgcmVjb3JkU2F2ZSgpOwogICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CiB9
CiAKQEAgLTIzMSwyNSArMTkzLDI1IEBAIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIGFwcGVuZDxS
ZXN0b3JlPigpOworICAgIHJlY29yZFJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgY3VycmVudFN0YXRlKCkudHJhbnNsYXRl
KHgsIHkpOwotICAgIGFwcGVuZDxUcmFuc2xhdGU+KHgsIHkpOworICAgIHJlY29yZFRyYW5zbGF0
ZSh4LCB5KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnJvdGF0ZShhbmdsZUluUmFkaWFucyk7Ci0gICAgYXBw
ZW5kPFJvdGF0ZT4oYW5nbGVJblJhZGlhbnMpOworICAgIHJlY29yZFJvdGF0ZShhbmdsZUluUmFk
aWFucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBjdXJyZW50U3RhdGUoKS5zY2FsZShzaXplKTsKLSAgICBhcHBlbmQ8U2NhbGU+KHNp
emUpOworICAgIHJlY29yZFNjYWxlKHNpemUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC0yNTgsMTMgKzIyMCwxMyBA
QCB2b2lkIFJlY29yZGVyOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGN1cnJlbnRTdGF0ZSgpLmNvbmNhdENUTSh0cmFu
c2Zvcm0pOwotICAgIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4odHJhbnNmb3JtKTsKKyAgICByZWNv
cmRDb25jYXRlbmF0ZUNUTSh0cmFuc2Zvcm0pOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgY3VycmVudFN0YXRlKCku
c2V0Q1RNKHRyYW5zZm9ybSk7Ci0gICAgYXBwZW5kPFNldENUTT4odHJhbnNmb3JtKTsKKyAgICBy
ZWNvcmRTZXRDVE0odHJhbnNmb3JtKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpn
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CkBAIC0yNzUs
NTQgKzIzNyw2NCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0Nv
bnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewotICAgIGFwcGVuZDxCZWdpblRyYW5z
cGFyZW5jeUxheWVyPihvcGFjaXR5KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkK
IHsKLSAgICBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewot
ICAgIGFwcGVuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdSZWN0KHJlY3QsIGJv
cmRlclRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQogewotICAgIGFwcGVuZDxE
cmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9h
dCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29s
IGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkKIHsKLSAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4
dD4oRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2ludCksIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChGbG9hdFBvaW50KCksIHRvRmxvYXRT
aXplKHBvaW50KSwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBhcHBlbmQ8
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVjdCwgc3R5bGUpOworICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcihyZWN0LCBzdHlsZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RHJhd0VsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0VsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7Ci0gICAgYXBwZW5kPERyYXdQYXRoPihwYXRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdQYXRoKHBhdGgpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmlu
Z1BhdGg+KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKHBhdGgsIHdp
ZHRoLCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihy
ZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlm
TmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKHJlY3RzLCB3aWR0aCwg
b2Zmc2V0LCBjb2xvcik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMzksMTIyICszMTEs
MTM2IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUsIGJvb2wmLCBjb25zdCBDb2xvCiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOwor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJl
Y3QocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xv
cj4ocmVjdCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVu
dCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxS
ZWN0V2l0aEdyYWRpZW50KHJlY3QsIGdyYWRpZW50KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGFwcGVuZDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChy
ZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4ocmVj
dCwgY29sb3IsIGJsZW5kTW9kZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKKyAgICByZWNvcmRGaWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1J
Zk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJv
dW5kZWRIb2xlUmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogeworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0
YSgpKSB7CiAgICAgICAgIGlmIChwYXRoLmhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAg
ICAgICAgICBhcHBlbmQ8RmlsbExpbmU+KHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKSk7Cisg
ICAgICAgICAgICByZWNvcmRGaWxsTGluZShwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCkpOwog
ICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8QXJjRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxGaWxsQXJjPihwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CisgICAgICAg
ICAgICByZWNvcmRGaWxsQXJjKHBhdGguaW5saW5lRGF0YTxBcmNEYXRhPigpKTsKICAgICAgICAg
ZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpCi0gICAgICAgICAg
ICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4ocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkp
OworICAgICAgICAgICAgcmVjb3JkRmlsbFF1YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1
cnZlRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihwYXRoLmlu
bGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxCZXpp
ZXJDdXJ2ZShwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgotICAgIGFwcGVuZDxGaWxsUGF0aD4ocGF0aCk7CisgICAgcmVj
b3JkRmlsbFBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbEVsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbEVsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7Ci0gICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3Qs
IGxpbmVXaWR0aCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRTdHJva2VSZWN0KHJlY3QsIGxpbmVXaWR0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChw
YXRoLmhhc0lubGluZURhdGEoKSkgewogICAgICAgICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPExp
bmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUxpbmU+KHBhdGguaW5saW5lRGF0
YTxMaW5lRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VMaW5lKHBhdGguaW5saW5l
RGF0YTxMaW5lRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxB
cmNEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUFyYz4ocGF0aC5pbmxpbmVEYXRh
PEFyY0RhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQXJjKHBhdGguaW5saW5lRGF0
YTxBcmNEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZlPihwYXRoLmlu
bGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VRdWFk
Q3VydmUocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlm
IChwYXRoLmhhc0lubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBw
ZW5kPFN0cm9rZUJlemllckN1cnZlPihwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigp
KTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUJlemllckN1cnZlKHBhdGguaW5saW5lRGF0YTxC
ZXppZXJDdXJ2ZURhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
YXBwZW5kPFN0cm9rZVBhdGg+KHBhdGgpOworICAgIHJlY29yZFN0cm9rZVBhdGgocGF0aCk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIGFwcGVuZDxTdHJva2VFbGxpcHNlPihyZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFN0cm9rZUVsbGlwc2UocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
YXBwZW5kPENsZWFyUmVjdD4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNl
c3NhcnkoKTsKKyAgICByZWNvcmRDbGVhclJlY3QocmVjdCk7CiB9CiAKICNpZiBVU0UoQ0cpCiB2
b2lkIFJlY29yZGVyOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGFwcGVuZDxBcHBseVN0
cm9rZVBhdHRlcm4+KCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsK
KyAgICByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBw
bHlGaWxsUGF0dGVybigpCiB7Ci0gICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRBcHBseUZpbGxQ
YXR0ZXJuKCk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5kcy5pbnRlcnNlY3QocmVj
dCk7Ci0gICAgYXBwZW5kPENsaXA+KHJlY3QpOworICAgIHJlY29yZENsaXAocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFw
cGVuZDxDbGlwT3V0PihyZWN0KTsKKyAgICByZWNvcmRDbGlwT3V0KHJlY3QpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiB7Ci0gICAgYXBwZW5kPENsaXBP
dXRUb1BhdGg+KHBhdGgpOworICAgIHJlY29yZENsaXBPdXRUb1BhdGgocGF0aCk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBhdGguZmFzdEJv
dW5kaW5nUmVjdCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHdpbmRSdWxlKTsKKyAg
ICByZWNvcmRDbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CiB9CiAKIEludFJlY3QgUmVjb3JkZXI6
OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNDY0LDEwICs0NTAsOCBAQCBJbnRSZWN0IFJlY29yZGVy
OjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKLSAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CisgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoaW1hZ2VCdWZmZXIpOworICAgIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKQEAgLTQ4MywxMCArNDY3LDEwIEBAIEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uCiAgICAgaW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVp
Z2h0KCkpOwogICAgIGluaXRpYWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNp
emUoKSk7CiAKLSAgICBSZWNvcmRlciBuZXN0ZWRDb250ZXh0KCp0aGlzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci0gICAgYXBwZW5kPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Ci0gICAgZHJhd2lu
Z0Z1bmN0aW9uKG5lc3RlZENvbnRleHQpOwotICAgIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIG5lc3RlZENvbnRleHQgPSBjcmVhdGVOZXN0
ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKKyAgICByZWNvcmRCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7CisgICAgZHJhd2luZ0Z1
bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKKyAgICByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZGVzdGluYXRpb24pOwogCiAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6U3VjY2VzczsKIH0KQEAgLTQ5OSw3ICs0ODMsNyBAQCB2b2lkIFJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwbGF5ZXIuaWRlbnRpZmllcigp
KTsKLSAgICBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsK
KyAgICByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbik7CiB9CiAj
ZW5kaWYKIApAQCAtNTA3LDcgKzQ5MSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
Y2hhbmdlcyB0aGUgYmFzZUNUTSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2Fj
aGVkIGV4dGVudHMuCiAgICAgLy8gQXNzZXJ0IHRoYXQgaXQncyBvbmx5IGNhbGxlZCBlYXJseSBv
bj8KLSAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiBGbG9hdFJlY3QgUmVjb3JkZXI6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkKQEAgLTUyNiwyNSArNTEw
LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVy
UmFkaXVzKQogICAgIHJldHVybiBjZWlsZihibHVyUmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlw
bGllcik7CiB9CiAKLUZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVj
dDsKLSAgICBjb25zdCBDb250ZXh0U3RhdGUmIHN0YXRlID0gY3VycmVudFN0YXRlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKLSAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9
IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKLSAgICAg
ICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVz
KSk7Ci0gICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOwotICAgIH0KLSAgICAKLSAg
ICBGbG9hdFJlY3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91bmRz
LCBib3VuZHMpOwotICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50KTsK
LX0KLQogY29uc3QgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OmN1cnJlbnRTdGF0
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYWU5NmY2ZTc3ZDY2ZWQ3MGQxNTI0ZjNl
MWMwNWEzMTFmMmNmMTk5MC4uYzk0YWI4MjRjZDczY2QxNmUzOTVmMzljODk5ZmNkOWEyMjZhMmU5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNp
bmNsdWRlICJJbmxpbmVQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC01NCwzNiArNTUsMTMzIEBAIGNsYXNzIFJlY29y
ZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNs
YXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CisgICAgdmlydHVhbCB2
b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNo
SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3Jk
ZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
OworCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNhdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc3RvcmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJvdGF0ZShmbG9h
dCBhbmdsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTY2FsZShjb25zdCBGbG9hdFNp
emUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5l
RmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldE1pdGVyTGltaXQoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xl
YXJTaGFkb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRS
ZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVj
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91
dFRvUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBv
aW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZs
b2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBm
bG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRG
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZp
bGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBHcmFkaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbENvbXBvc2l0ZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRmlsbExpbmUoY29uc3QgTGluZURhdGEmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3QgQXJjRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVEYXRhJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRGaWxsQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUGF0aChjb25zdCBQYXRoJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9ybWF0
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkUHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRTdHJva2VMaW5lKGNvbnN0IExpbmVEYXRhJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRTdHJva2VBcmMoY29uc3QgQXJjRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZl
RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlUGF0aChjb25zdCBQYXRo
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xlYXJSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikgPSAwOworCisgICAgdmlydHVh
bCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVk
Q29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0pID0gMDsKIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpOyB9CisgICAgc3RydWN0IENvbnRleHRTdGF0ZSB7Cisg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CisgICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRz
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKKworICAgICAgICBDb250
ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQorICAgICAgICAgICAg
OiBjdG0odHJhbnNmb3JtKQorICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXApCisgICAgICAg
ICAgICAsIGxhc3REcmF3aW5nU3RhdGUoc3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwgY3RtLCBjbGlwQm91
bmRzKTsKKyAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVDaGFuZ2U7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgIH0KKworICAgICAgICBDb250ZXh0U3RhdGUg
Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKKyAgICAgICAgICAgIHN0YXRlLmxhc3REcmF3
aW5nU3RhdGUuYWxwaGEgPSAxOworICAgICAgICAgICAgcmV0dXJuIHN0YXRlOworICAgICAgICB9
CiAKLSAgICBjbGFzcyBEZWxlZ2F0ZSB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5E
ZWxlZ2F0ZSgpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZE5h
dGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nh
Y2hlZEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZEZvbnRVc2UoRm9udCYpIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkSW1hZ2VCdWZmZXJVc2UoSW1hZ2VCdWZmZXImKSB7IH0KLSAg
ICAgICAgdmlydHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVy
biBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOyB9CisgICAgICAgIHZvaWQgdHJhbnNsYXRl
KGZsb2F0IHgsIGZsb2F0IHkpOworICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFk
aWFucyk7CisgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CisgICAgICAgIHZv
aWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgICAgICB2b2lkIHNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICB9OwogCi0gICAgdm9pZCBmbHVzaENvbnRl
eHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgYXBwZW5kPEZs
dXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KKyAgICBjb25zdCBWZWN0b3I8Q29udGV4dFN0YXRl
LCA0PiYgc3RhdGVTdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjazsgfQorICAgIGJv
b2wgaXNOZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTmVzdGVkOyB9CiAKLXByaXZhdGU6Ci0g
ICAgUmVjb3JkZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
LCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pOworICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCkgY29uc3Q7
CisgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAorcHJpdmF0ZToKICAgICBib29s
IGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ly8gRklYTUU6IE1heWJlIHJlbW92ZSB0aGlzPwotICAgIGJvb2wgY2FuRHJhd0ltYWdlQnVmZmVy
KGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3Q7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQq
IHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCBmaW5hbDsKIAogI2lmIFVTRShDRykg
fHwgVVNFKERJUkVDVDJEKQogICAgIHZvaWQgc2V0SXNDQUxheWVyQ29udGV4dChib29sKSBmaW5h
bCB7IH0KQEAgLTk0LDE4NCArMTkyLDk1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaWxsUm91bmRl
ZFJlY3RJbXBsKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRyYXdMaW5lRm9yVGV4dChjb25zdCBG
bG9hdFJlY3QmLCBib29sLCBib29sLCBTdHJva2VTdHlsZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29u
c3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
ZmluYWw7CiAKLSAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7Ci0gICAgdm9pZCBz
ZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKLSAg
ICB2b2lkIHNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKLSAgICB2b2lkIHNldE1pdGVyTGlt
aXQoZmxvYXQpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZUNhcChMaW5l
Q2FwKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERh
c2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TWl0ZXJMaW1pdChmbG9hdCkgZmluYWw7CiAKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQ29sb3ImKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdy
YWRpZW50JikgZmluYWw7Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwotICAgIHZvaWQg
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJs
ZW5kTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IENvbG9yJikgZmluYWw7Ci0gICAgdm9pZCBmaWxsUGF0aChjb25zdCBQYXRoJikgZmluYWw7Ci0g
ICAgdm9pZCBmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIHN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKSBmaW5hbDsKLSAgICB2
b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9h
dFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYs
IEJsZW5kTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3Vu
ZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmaWxsUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
aWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3Qm
KSBmaW5hbDsKIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZvaWQgYXBwbHlT
dHJva2VQYXR0ZXJuKCkgZmluYWw7Ci0gICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKICNlbmRpZgog
Ci0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwotICAgIHZv
aWQgZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2Rl
KSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2Um
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBib3JkZXJUaGlja25lc3MpIGZpbmFsOwotICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdMaW5lc0ZvclRl
eHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3
aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlKSBmaW5h
bDsKLSAgICB2b2lkIGRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0Jiwg
RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpIGZpbmFsOwotICAgIHZvaWQgZHJhd0VsbGlwc2UoY29u
c3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMs
IGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxv
YXRSZWN0JiwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKLSAgICB2b2lk
IGRyYXdQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25z
dCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSBmaW5hbDsK
LSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3
aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9m
ZnNldCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zm
c2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQg
ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRz
UmVkcmF3LCBjb25zdCBDb2xvciYpIGZpbmFsOwotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJh
dywgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywg
Y29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGb2N1c1Jp
bmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVl
ZHNSZWRyYXcsIGNvbnN0IENvbG9yJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgc2F2ZSgp
IGZpbmFsOwotICAgIHZvaWQgcmVzdG9yZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2F2ZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZSgpIGZpbmFs
OwogCi0gICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7Ci0gICAgdm9p
ZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpIGZpbmFsOwotICAgIHZvaWQgc2NhbGUoY29u
c3QgRmxvYXRTaXplJikgZmluYWw7Ci0gICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJikgZmluYWw7Ci0gICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikg
ZmluYWw7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1
ZGVEZXZpY2VTY2FsZSkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cmFu
c2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
b3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtIGdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1
ZGVEZXZpY2VTY2FsZSkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoZmxvYXQgb3BhY2l0eSkgZmluYWw7Ci0gICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXll
cigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5z
cGFyZW5jeUxheWVyKCkgZmluYWw7CiAKLSAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZv
aWQgY2xpcE91dChjb25zdCBQYXRoJikgZmluYWw7Ci0gICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUpIGZpbmFsOwotICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkNs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZvaWQgcGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVk
aWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKICNlbmRpZgog
Ci0gICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsKLQotICAgIEZs
b2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29u
dGV4dDo6Um91bmRpbmdNb2RlKSBmaW5hbDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNs
YXNzLi4uIEFyZ3M+Ci0gICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCi0gICAgewotICAg
ICAgICBpZiAoVU5MSUtFTFkoIWNhbkFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiBjb25zdGV4cHIgKGl0ZW1OZWVkc1N0YXRl
PFQ+KCkpCi0gICAgICAgICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwot
Ci0gICAgICAgIG1fZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Ci0KLSAgICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7Ci0gICAg
ICAgICAgICBpZiAoTElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50
cygpKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlbSA9
IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHJl
Y3QgPSBpdGVtLmxvY2FsQm91bmRzKCp0aGlzKSkKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlM
aXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcygqcmVjdCkpOwot
ICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKLSAg
ICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdp
bmdJdGVtRXh0ZW50KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXRlbU5l
ZWRzU3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpIGZpbmFsOwogCi0gICAgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJ
bWFnZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxz
KGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dDo6Um91bmRpbmdNb2RlKSBmaW5hbDsK
IAogICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICB2b2lk
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKIAotICAgIEZsb2F0UmVj
dCBleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgCiAg
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0oKSBjb25zdDsKIAotICAgIHN0cnVjdCBDb250
ZXh0U3RhdGUgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwotICAgICAgICBGbG9hdFJl
Y3QgY2xpcEJvdW5kczsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVD
aGFuZ2U7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIGxhc3REcmF3aW5nU3RhdGU7Ci0g
ICAgICAgIAotICAgICAgICBDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0
JiBjbGlwKQotICAgICAgICAgICAgOiBjdG0odHJhbnNmb3JtKQotICAgICAgICAgICAgLCBjbGlw
Qm91bmRzKGNsaXApCi0gICAgICAgICAgICAsIGxhc3REcmF3aW5nU3RhdGUoc3RhdGUpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9y
U2F2ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbnRleHRTdGF0ZSBzdGF0ZShs
YXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOwotICAgICAgICAgICAgc3RhdGUuc3Rh
dGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVyKCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IGNsb25lRm9yU2F2ZSgp
OwotICAgICAgICAgICAgc3RhdGUubGFzdERyYXdpbmdTdGF0ZS5hbHBoYSA9IDE7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KTsKLSAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlh
bnMpOwotICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwotICAgICAgICB2b2lk
IGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICAgICAgdm9pZCBzZXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgfTsKLSAgICAKLSAgICBjb25zdCBDb250ZXh0
U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwotICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0
YXRlKCk7Ci0KLSAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKLSAgICBEZWxlZ2F0ZSog
bV9kZWxlZ2F0ZTsKLSAgICBib29sIG1faXNOZXN0ZWQ7Ci0KICAgICBWZWN0b3I8Q29udGV4dFN0
YXRlLCA0PiBtX3N0YXRlU3RhY2s7Ci0KICAgICBEcmF3R2x5cGhzUmVjb3JkZXIgbV9kcmF3R2x5
cGhzUmVjb3JkZXI7CisgICAgYm9vbCBtX2lzTmVzdGVkIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBSZWNvcmRlcjo6aXRlbU5lZWRzU3RhdGUo
KQotewotICAgIGlmIChUOjppc0RyYXdpbmdJdGVtKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
I2lmIFVTRShDRykKLSAgICBpZiAoVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5RmlsbFBh
dHRlcm4gfHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybikKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQot
fQorfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2UxMTkyMWFkYjJkZjM2MWFhMjdjZWRkMTFkNGZhNTczYjY1N2IxMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTAsMCArMSw0NTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorCisjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworUmVjb3JkZXJJbXBsOjpSZWNvcmRlcklt
cGwoRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRy
YXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgOiBS
ZWNvcmRlcihzdGF0ZSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0sIGRyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbikKKyAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCisgICAgLCBtX2RlbGVn
YXRlKGRlbGVnYXRlKQoreworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVh
bSA8PCAiXG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOworfQorCitSZWNv
cmRlckltcGw6OlJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVudCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCisgICAgOiBSZWNvcmRlcihwYXJlbnQsIHN0
YXRlLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSkKKyAgICAsIG1fZGlzcGxheUxpc3QocGFyZW50
Lm1fZGlzcGxheUxpc3QpCisgICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQorewor
fQorCitSZWNvcmRlckltcGw6On5SZWNvcmRlckltcGwoKQoreworICAgIEFTU0VSVChzdGF0ZVN0
YWNrKCkuc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBpdCBpbmRpY2F0ZXMgbWlzbWF0
Y2hlZCBzYXZlL3Jlc3RvcmUuCisgICAgaWYgKCFpc05lc3RlZCgpKQorICAgICAgICBMT0coRGlz
cGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRl
c2NyaXB0aW9uKCkuZGF0YSgpKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OmdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QpCit7CisgICAgYXBwZW5kPEdldFBpeGVsQnVmZmVyPihvdXRwdXRGb3JtYXQs
IHNvdXJjZVJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cHV0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
Cit7CisgICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVz
dFBvaW50LCBkZXN0Rm9ybWF0KTsKK30KKworYm9vbCBSZWNvcmRlckltcGw6OmNhbkFwcGVuZEl0
ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGVsZWdhdGUg
fHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsKK30KKworYm9vbCBSZWNv
cmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2Fj
aGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworfQorCitSZW5kZXJpbmdNb2RlIFJlY29yZGVy
SW1wbDo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUgPyBt
X2RlbGVnYXRlLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBSZWNvcmRlckltcGw6OmNy
ZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY29y
ZGVySW1wbD4oKnRoaXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsgfSwgaW5pdGlhbENsaXAsIGlu
aXRpYWxDVE0pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2F2ZSgpCit7CisgICAg
YXBwZW5kPFNhdmU+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXN0b3JlKCkK
K3sKKyAgICBhcHBlbmQ8UmVzdG9yZT4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZFRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIGFwcGVuZDxUcmFuc2xhdGU+KHgs
IHkpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKGZsb2F0IGFuZ2xlKQor
eworICAgIGFwcGVuZDxSb3RhdGU+KGFuZ2xlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7CisgICAgYXBwZW5kPFNjYWxlPihz
Y2FsZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgYXBwZW5kPFNldENUTT4odHJhbnNmb3JtKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4odHJh
bnNmb3JtKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldElubGluZUZpbGxDb2xv
cihTUkdCQTx1aW50OF90PiBpbmxpbmVDb2xvcikKK3sKKyAgICBhcHBlbmQ8U2V0SW5saW5lRmls
bENvbG9yPihpbmxpbmVDb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRJ
bmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PiBpbmxpbmVDb2xvcikKK3sKKyAgICBhcHBl
bmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGlubGluZUNvbG9yKTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCit7CisgICAg
YXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCit7Cisg
ICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSwgY2hhbmdlRmxhZ3MpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCit7CisgICAgYXBwZW5k
PFNldExpbmVDYXA+KGxpbmVDYXApOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0
TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBhcnJheSwgZmxvYXQgZGFzaE9mZnNldCkKK3sKKyAg
ICBhcHBlbmQ8U2V0TGluZURhc2g+KGFycmF5LCBkYXNoT2Zmc2V0KTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFNldExpbmVKb2luKExpbmVKb2luIGpvaW4pCit7CisgICAgYXBwZW5k
PFNldExpbmVKb2luPihqb2luKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldE1p
dGVyTGltaXQoZmxvYXQgbGltaXQpCit7CisgICAgYXBwZW5kPFNldE1pdGVyTGltaXQ+KGxpbWl0
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsZWFyU2hhZG93KCkKK3sKKyAgICBh
cHBlbmQ8Q2xlYXJTaGFkb3c+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCit7CisgICAgYXBwZW5kPENsaXA+KGNsaXBSZWN0
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBPdXQoY29uc3QgRmxvYXRSZWN0
JiBjbGlwUmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xpcE91dD4oY2xpcFJlY3QpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvblJlY3QpCit7CisgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIsIGRlc3RpbmF0aW9uUmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgYXBwZW5kPENsaXBPdXRU
b1BhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcFBhdGgoY29u
c3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKK3sKKyAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBh
dGgsIHJ1bGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikKK3sKKyAgICBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbik7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5j
aG9yLCBGb250U21vb3RoaW5nTW9kZSBtb2RlKQoreworICAgIGFwcGVuZDxEcmF3R2x5cGhzPihm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIG1vZGUpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2VJ
ZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgYXBwZW5kPERyYXdQYXR0ZXJuPihpbWFnZUlkZW50aWZpZXIsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxv
YXQgb3BhY2l0eSkKK3sKKyAgICBhcHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4ob3BhY2l0
eSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigp
Cit7CisgICAgYXBwZW5kPEVuZFRyYW5zcGFyZW5jeUxheWVyPigpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5l
V2lkdGgpCit7CisgICAgYXBwZW5kPERyYXdSZWN0PihyZWN0LCBsaW5lV2lkdGgpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCit7CisgICAgYXBwZW5kPERyYXdMaW5lPihwb2lu
dDEsIHBvaW50Mik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TGluZXNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9j
YWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wg
cHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpCit7CisgICAgYXBwZW5kPERyYXdMaW5lc0ZvclRl
eHQ+KGJsb2NrTG9jYXRpb24sIGxvY2FsQW5jaG9yLCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRp
bmcsIGRvdWJsZUxpbmVzKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdEb3Rz
Rm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZSYgc3R5bGUpCit7CisgICAgYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXI+KHJlY3QsIHN0eWxlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8RHJhd0VsbGlwc2U+
KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1BhdGgoY29uc3QgUGF0
aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8RHJhd1BhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
d2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGFwcGVuZDxE
cmF3Rm9jdXNSaW5nUGF0aD4ocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3IpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKGNvbnN0IFZlY3RvcjxGbG9h
dFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KHJlY3RzLCB3aWR0aCwgb2Zm
c2V0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0PihyZWN0KTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhD
b2xvcj4ocmVjdCwgY29sb3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJl
Y3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQp
Cit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50PihyZWN0LCBncmFkaWVudCk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgbW9kZSkKK3sKKyAgICBhcHBlbmQ8RmlsbENvbXBvc2l0ZWRSZWN0PihyZWN0LCBj
b2xvciwgb3AsIG1vZGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
QmxlbmRNb2RlIG1vZGUpCit7CisgICAgYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4ocmVjdCwgY29s
b3IsIG1vZGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBy
b3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGFwcGVuZDxGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZT4ocmVjdCwgcm91bmRlZFJlY3QsIGNvbG9yKTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZEZpbGxMaW5lKGNvbnN0IExpbmVEYXRhJiBsaW5lKQoreworICAgIGFw
cGVuZDxGaWxsTGluZT4obGluZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxs
QXJjKGNvbnN0IEFyY0RhdGEmIGFyYykKK3sKKyAgICBhcHBlbmQ8RmlsbEFyYz4oYXJjKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZl
RGF0YSYgY3VydmUpCit7CisgICAgYXBwZW5kPEZpbGxRdWFkQ3VydmU+KGN1cnZlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxCZXppZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2
ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVuZDxGaWxsQmV6aWVyQ3VydmU+KGN1cnZlKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7
CisgICAgYXBwZW5kPEZpbGxQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8Rmls
bEVsbGlwc2U+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkR2V0UGl4ZWxC
dWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiByZWN0
KQoreworICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCByZWN0KTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gcHJlbXVsdGlwbGljYXRpb24pCit7CisgICAg
YXBwZW5kPFB1dFBpeGVsQnVmZmVyPihidWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgcHJlbXVs
dGlwbGljYXRpb24pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZv
ck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24p
Cit7CisgICAgYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4ocGxheWVyLCBkZXN0aW5hdGlvbik7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgZmxvYXQgd2lkdGgpCit7CisgICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3QsIHdp
ZHRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGlu
ZURhdGEmIGxpbmUpCit7CisgICAgYXBwZW5kPFN0cm9rZUxpbmU+KGxpbmUpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQXJjKGNvbnN0IEFyY0RhdGEmIGFyYykKK3sKKyAg
ICBhcHBlbmQ8U3Ryb2tlQXJjPihhcmMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
U3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVu
ZDxTdHJva2VRdWFkQ3VydmU+KGN1cnZlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZFN0cm9rZUJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYgY3VydmUpCit7CisgICAg
YXBwZW5kPFN0cm9rZUJlemllckN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgYXBwZW5kPFN0cm9r
ZVBhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPFN0cm9rZUVsbGlwc2U+KHJl
Y3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xlYXJSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xlYXJSZWN0PihyZWN0KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigpCit7CisgICAgYXBwZW5kPEFw
cGx5U3Ryb2tlUGF0dGVybj4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5
RmlsbFBhdHRlcm4oKQoreworICAgIGFwcGVuZDxBcHBseUZpbGxQYXR0ZXJuPigpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2Fs
ZUZhY3RvcikKK3sKKyAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oc2NhbGVGYWN0
b3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1h
Z2UmIGltYWdlKQoreworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5y
ZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2
ZUltYWdlKGltYWdlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNl
KEZvbnQmIGZvbnQpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUt
PnJlY29yZEZvbnRVc2UoZm9udCk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUZvbnQoZm9udCk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUt
PnJlY29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworfQorCitGbG9hdFJlY3QgUmVjb3JkZXJJbXBs
OjpleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAorewor
ICAgIEZsb2F0UmVjdCBib3VuZHMgPSByZWN0OworICAgIGF1dG8mIHN0YXRlID0gY3VycmVudFN0
YXRlKCk7CisKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIGZsb2F0IHNoYWRvd1Jh
ZGl1czsKKyAgICBDb2xvciBzaGFkb3dDb2xvcjsKKyAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKKyAgICAgICAgRmxvYXRSZWN0IHNo
YWRvd0V4dGVudCA9IGJvdW5kczsKKyAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zm
c2V0KTsKKyAgICAgICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQo
c2hhZG93UmFkaXVzKSk7CisgICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOworICAg
IH0KKworICAgIEZsb2F0UmVjdCBjbGlwcGVkRXh0ZW50ID0gaW50ZXJzZWN0aW9uKHN0YXRlLmNs
aXBCb3VuZHMsIGJvdW5kcyk7CisgICAgcmV0dXJuIHN0YXRlLmN0bS5tYXBSZWN0KGNsaXBwZWRF
eHRlbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iODc1ZWYzZWY0YjUxYTRhMjAwMWY4YzI2ZjM2NzAyNDI5MDg1MTEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgRGlzcGxheUxpc3QgeworCitjbGFzcyBSZWNvcmRlckltcGwgOiBwdWJsaWMgUmVjb3Jk
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlY29yZGVySW1wbCk7CitwdWJsaWM6CisgICAgY2xhc3MgRGVsZWdhdGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3Ry
dWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgUmVjb3JkZXJJbXBsKFJlY29yZGVySW1wbCYgcGFy
ZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlckltcGwoKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpOyB9CisKKyAgICBjbGFzcyBEZWxl
Z2F0ZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2
ZUltYWdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNv
bnN0IEltYWdlQnVmZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlY29yZEZvbnRVc2UoRm9udCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkSW1hZ2VCdWZmZXJVc2UoSW1hZ2VCdWZmZXImKSB7IH0KKyAgICAgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkOyB9CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkg
ZmluYWw7CisgICAgdm9pZCBmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlm
aWVyIGlkZW50aWZpZXIpIGZpbmFsIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7
IH0KKworcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogTWF5YmUgcmVtb3ZlIHRoaXM/CisgICAgYm9v
bCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQg
cmVjb3JkU2F2ZSgpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzdG9yZSgpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkVHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkUm90YXRlKGZsb2F0IGFuZ2xlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNjYWxlKGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29s
b3IoU1JHQkE8dWludDhfdD4pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tl
Q29sb3IoU1JHQkE8dWludDhfdD4pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZFNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkU2V0TWl0ZXJMaW1pdChmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRD
bGVhclNoYWRvdygpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3Qm
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXBPdXQoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
UmVjdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmKSBm
aW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1BhdHRl
cm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZERyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQyKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxv
YXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxv
YXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9v
bCBkb3VibGVMaW5lcykgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlJikg
ZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQg
b2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0ZvY3VzUmlu
Z1JlY3RzKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0
V2l0aEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVu
ZE1vZGUpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRGaWxsTGluZShjb25zdCBMaW5lRGF0YSYpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkRmlsbEFyYyhjb25zdCBBcmNEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNv
cmRGaWxsUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZEZpbGxCZXppZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZp
bGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkR2V0UGl4
ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0Jikg
ZmluYWw7CisgICAgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUGFpbnRGcmFtZUZvck1l
ZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBmaW5hbDsK
KyAgICB2b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNv
cmRTdHJva2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNv
cmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRBcHBs
eVN0cm9rZVBhdHRlcm4oKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEFwcGx5RmlsbFBhdHRlcm4o
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZp
bmFsOworCisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
UmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJn
cyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWNhbkFwcGVuZEl0ZW1P
ZlR5cGUoVDo6aXRlbVR5cGUpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2Rp
c3BsYXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworCisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNEcmF3aW5nSXRlbSkgeworICAgICAgICAgICAgaWYgKExJ
S0VMWSghbV9kaXNwbGF5TGlzdC50cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIGl0ZW0gPSBUKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBpZiAoYXV0byByZWN0ID0gaXRlbS5sb2Nh
bEJvdW5kcygqdGhpcykpCisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5n
SXRlbUV4dGVudChleHRlbnRGcm9tTG9jYWxCb3VuZHMoKnJlY3QpKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCisgICAgICAgICAgICAgICAg
bV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudChz
dGQ6Om51bGxvcHQpOworICAgICAgICB9CisgICAgfQorCisgICAgRmxvYXRSZWN0IGV4dGVudEZy
b21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OworCisgICAgRGlzcGxh
eUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGUgeyBudWxscHRy
IH07Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDQyZmM0MThj
Nzk4MjMzMTQ5NGVlMjc2YjZkYTQ5OTRhMWU0Yzk5NmEuLjhjZWM5MjQyNjg3NTE0YzZjMmM3N2I3
ODk4YzBhMzRjOTA3ZDViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYWNrZW5kVHlwZT4gY2xhc3MgVGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5k
VHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLCBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKK2Ns
YXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OkRlbGVnYXRlLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50IHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAg
dXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBC
YXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjY2YmM0MDM1MTYyZjc0
N2YzNzg4YWVkMDlhNmM0Y2Y0MThjZTIyLi5hNDlkOWFlMTEzNDQ0ZTQ2NzdlY2IxMmExNDExMmUy
YmUwNjI0NzJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGlu
dG8gYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBhbmQgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNv
cmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMDcgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gTGlicmFy
eSBzaG91bGQgb3duIGNvbnRyaWJ1dG9ycy5qc29uIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IDhhOWJkNWQyZjIxNGU3ZmIzMDg1
MDVlMjdiN2U3NzdlOWFmYzk5ZDYuLjM0OWI2NTY1ODc4ZmE2MGExOGNjN2E1M2YxNjJmMzE4MjBl
NTc2MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rp
c3BsYXlMaXN0SXRlcmF0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnRJ
bWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KQEAgLTU1LDcg
KzU1LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJj
YXRlZENvbnRleHQpCiAgICAgR3JhcGhpY3NDb250ZXh0Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFy
eUNHQ29udGV4dC5nZXQoKSk7CiAKICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IGRpc3BsYXlMaXN0
OwotICAgIFJlY29yZGVyIHNlY29uZGFyeUNvbnRleHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRS
ZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3Jk
ZXJJbXBsIHNlY29uZGFyeUNvbnRleHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAs
IGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CiAKICAgICBCaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKQEAg
LTkxLDEwICs5MSwxMCBAQCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFz
aWNCaWZ1cmNhdGVkQ29udGV4dCkKIFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3Rz
LCBUZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkKIHsKICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IHBy
aW1hcnlEaXNwbGF5TGlzdDsKLSAgICBSZWNvcmRlciBwcmltYXJ5Q29udGV4dChwcmltYXJ5RGlz
cGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdo
dCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHByaW1hcnlDb250ZXh0KHByaW1hcnlEaXNwbGF5
TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwg
eyB9KTsKIAogICAgIEluTWVtb3J5RGlzcGxheUxpc3Qgc2Vjb25kYXJ5RGlzcGxheUxpc3Q7Ci0g
ICAgUmVjb3JkZXIgc2Vjb25kYXJ5Q29udGV4dChzZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBG
bG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKKyAgICBS
ZWNvcmRlckltcGwgc2Vjb25kYXJ5Q29udGV4dChzZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBG
bG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAg
IEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlD
b250ZXh0KTsKIAo=
</data>
<flag name="commit-queue"
          id="464620"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440615</attachid>
            <date>2021-10-08 08:11:49 -0700</date>
            <delta_ts>2021-10-08 09:04:39 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-231404-20211008081149.patch</filename>
            <type>text/plain</type>
            <size>101893</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4NTRmMDA3MTA3ZDBh
OTYxNzBhODhmODk1Y2UzZDg3Nzg4YjJkMC4uY2Q3OWRiNDMwOTVjY2U0MDM5YjljOWU2ZmU2MGE1
Y2NjNTA1MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMS0xMC0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tOgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHVzZXMgb2YgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
CisgICAgICAgIFRoZSBhYnN0cmFjdCBSZWNvcmRlciBub3cgY29udGFpbnMgbG9naWMgZm9yIG1h
cHBpbmcgR3JhcGhpY3NDb250ZXh0IG1ldGhvZCBjYWxscyBpbnRvIGNhbGxzIHRvIHJlY29yZAor
ICAgICAgICBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcy4gTm90ZSB0aGF0IHdoaWxlIG1h
bnkgR3JhcGhpY3NDb250ZXh0IG1ldGhvZHMgY29ycmVzcG9uZCBkaXJlY3RseSB0byBkaXNwbGF5
IGxpc3QKKyAgICAgICAgaXRlbXMsIHNvbWUgbWV0aG9kcyBtYXAgdG8gb25lIG9yIG1vcmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzdWNoIGFzIHNldHRpbmcgc3RhdGUgY29uc2lzdGluZyBvbmx5IG9m
IGlubGluZSBQT0QKKyAgICAgICAgZGF0YSBvciBkcmF3aW5nIHNpbXBsZSBwYXRocy4gVGhlIGJh
c2UgY2xhc3MgYWxzbyBtYW5hZ2VzIHVwZGF0aW5nIGFuZCBtYWludGFpbmluZyB0aGUgc3RhdGUg
c3RhY2sgKGEgbGlzdCBvZgorICAgICAgICBSZWNvcmRlcjo6Q29udGV4dFN0YXRlKSB3aGVuIG1v
ZGlmeWluZyBncmFwaGljcyBjb250ZXh0IHN0YXRlLgorCisgICAgICAgIEltcG9ydGFudGx5LCB0
aGlzIG1lYW5zIHRoYXQgdGhlIGFic3RyYWN0IFJlY29yZGVyIGNsYXNzIGRvZXMgbm90IGNvbnRh
aW4gZWl0aGVyIGEgUmVjb3JkZXIgRGVsZWdhdGUsIG5vciBkb2VzCisgICAgICAgIGl0IGNvbnRh
aW4gYSBEaXNwbGF5TGlzdC4gSW5zdGVhZCwgdGhlIGNvbmNyZXRlIHN1YmNsYXNzIChEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsKSBub3cgaG9sZHMgb24gdG8gdGhlIGxvY2FsCisgICAgICAgIERp
c3BsYXlMaXN0LgorCisgICAgICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgc3ViY2xhc3NlcyBv
ZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0ICJyZWNvcmRp
bmciIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcyBnaXZlbiB0aGVpciBjb25zdGl0dWVudCBh
cmd1bWVudHMsIGluc3RlYWQgb2YgZGlyZWN0bHkgaW1wbGVtZW50aW5nIHRoZSBpbmRpdmlkdWFs
IEdyYXBoaWNzQ29udGV4dCBkcmF3aW5nCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4
ZWxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpwdXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNh
bkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjppc05lc3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVn
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
RGVsZWdhdGU6OmNhbkFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRGb250VXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OnJlY29yZEltYWdlQnVmZmVyVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBl
bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpp
dGVtTmVlZHNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
YW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENv
bnRleHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBuZXN0ZWQgUmVjb3JkZXIgbG9naWMgdXNl
ZCBmb3IgYFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHNgLCBzdWNoIHRoYXQgaXQncyBu
b3cgYSBzZXBhcmF0ZQorICAgICAgICBvdmVycmlkZSBwb2ludC4gVGhpcyBhbGxvd3Mgc3ViY2xh
c3NlcyB0byBpbnN0YW50aWF0ZSBuZXN0ZWQgY29udGV4dHMgb2YgdGhlIHNhbWUgdHlwZSwgd2hp
bGUga2VlcGluZyB0aGUgbWFpbgorICAgICAgICBsb2dpYyBpbiBgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzYCBpbiB0aGUgc2hhcmVkIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDb25j
YXRlbmF0ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdFbGxpcHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVj
dFdpdGhHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEZpbGxBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkR2V0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJv
a2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkU3Ryb2tlUXVhZEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
QXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6On5EZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGU6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OnJlY29yZEltYWdlQnVmZmVyVXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmFwcGVuZCk6CisKIDIwMjEtMTAtMDcgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIGBoaWdoV2F0ZXJNYXJrYCBzaG91bGQg
YmUgYSByZWFkb25seSBXZWJJREwgYXR0cmlidXRlIG9mIHF1ZXVpbmcgc3RyYXRlZ2llcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlMWZhOWY2NmNhMGUxMWUxNWYzY2RiZjQ5MmVmNGMwN2RiZjZmN2E0Li5mMjY3YzY0
ZDA4NzFkZDljMDJlNDYwNDhlODM4NDg1OGEzMmYxMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0IGJh
c2UgY2xhc3MgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDI6IFVucm9sbCBQZW5kaW5nV2FrZXVwSW5mb3Jt
YXRpb246OmFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzNGQ5MWNhZmU2ZmY1ZDM1ZTI2NmE0
NTJjZDNmZjUzMzY3MzBkNDczLi41YTc4ZjE5ZDJhZGI0ZDBkZmUxMTQ1YmVkZmU3MDRjZWU4NzI3
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODIzOGU3MzdiOWVhNDg5ZTg1
NDhjY2VmYTljMWZlYmRmNjg0NGM3Li43YTA0NTkyOWI3NmZjYmVlMzkxZWQyZTM0M2Y3MzQ5ZDI5
MGVjZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNzQsNyArMzc0LDcgQEAKIAkJMEZFNTgwNjQxOTMyN0E2MjAwREUzMkVC
IC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFj
LmggKi87IH07CiAJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFNUZCRDcxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU1RkJE
OTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFy
VGhlbWVNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07
CiAJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTUzOTMsNiArNTM5Myw3IEBACiAJCUY0MjBGMDBBMjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVy
RXZlbnRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MjBGMDA4MjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVyRXZlbnRUeXBlTmFtZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDI5
MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAw
MDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTk0RkEyNzBDRkU0ODAwMzIyOThCIC8qIEdy
YXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk0RjkyNzBDRkU0ODAwMzIyOThCIC8qIEdyYXBoaWNz
Q29udGV4dEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0Mjk5NTBGMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzNFOTAzMURC
QkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3Rh
dGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1
NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYz
RjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLzsgfTsKQEAgLTY0MDIsOCArNjQwMyw4IEBACiAJCTBGRTVGQkNCMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJD
QzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU1RkJDRTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCRDAxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZXBsYXllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0
UmVwbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNkM3NkIxRkJGQjdB
NjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9y
VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODAwLDYgKzE2
ODAxLDggQEAKIAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyog
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5OTRGOTI3MENGRTQ4MDAz
MjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0Mjk5NTBFMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNF
OTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODIwMyw4ICsxODIwNiwxMCBAQAogCQkJCUY0Mzc3RDU1MjU1
MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCiAJCQkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAogCQkJCTFDRThE
MTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCi0JCQkJMEZF
NUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAotCQkJ
CTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCisJ
CQkJRjQyOTk1MEUyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICov
LAorCQkJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmgg
Ki8sCisJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcCAqLywKKwkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCkBAIC0zMjM1OCw3ICszMjM2Myw4IEBACiAJCQkJ
MEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0Mjk5NTBG
MjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUND
NjE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggY2E0ZTc3NzVlNzQ2Y2NjOTliMDc3
ZjIwYzY5NzE2Y2U4MjU4OTlkZi4uYWUwZDFhNzZmNjFjMjM2ZDliMTY4MTYwNDY1ZWUyMmNmZGYw
OGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdy
YWRpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4MDZjMTc1Njk5MzgwYmE2ZC4u
NmM2OGU0NDU5OGJmOTg2NmU4MTY0ZDIzNTFiMmNiZDYzZTc1YTBkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkNvbXBs
ZXhUZXh0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5
RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHJlY29yZGluZ0NvbnRl
eHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFu
c2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb246OkRvbnREZWNvbnN0cnVjdCk7CisgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBy
ZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3Qo
KSwgQWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOwogICAgIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwg
Z2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA2MWJiNWZjZGE4OTQwMmZhYTJjYzU3Y2M1OWFmOThkMjc1MDdmYzNlLi4y
ZDJmMTFhNDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0EpCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0xODA0LDcg
KzE4MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhD
b21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgICAgICAKICAgICAgICAgRmxv
YXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCi0gICAgICAgIERp
c3BsYXlMaXN0OjpSZWNvcmRlciBjb250ZXh0KCptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIGNvbnRleHQoKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIHBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiNjU2ZjEzNjgxNjI0
N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li40NDEwMzhlZDhmYjAyMjIzMjdmNDhlNjU2ZWVk
Nzg1YzI0MmYzMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaWYg
VVNFKENHKQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbQppbmRleCAzODhhZmNkNmY0NmFmYzQ1MjIxZjgwNzFkMzUwOTY3ZjBlNTM1NTBk
Li43NWUxZjk0YjJiNGY2OWIzMTg5YzRjNDI2MTdhYjE5MDgzYWRjYTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKIAotI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyMjY4
NGRjMzk4ZTFlZjUyYzFiZDk2NmZmNDUwMzcyMzdkY2YyYWVmLi44OTg2ZThjMzI5ZjBhMTFlODQ4
MzAxMTk5NWIzNmQzYmExNjE3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTQsNyAr
NTQsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEFzVGV4dEZsYWdzOwogCiBjbGFzcyBEaXNwbGF5TGlz
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3QpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXI7CisgICAgZnJpZW5kIGNsYXNz
IFJlY29yZGVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRGlzcGxheUxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAzOTU3YzQ1NzZmZTkxMmQ2ODEwMjA3NjEw
MDFjYzI0ZjY4Njg4NjJhLi4zNjJkNDM2NzUyYWM3M2E5YmMzYjNjYzhjMDU2YWE0ZDdmMDdiMjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxD
VE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitEcmF3aW5nQ29udGV4dDo6RHJhd2lu
Z0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IG1fY29udGV4dChtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggOTY1NjM2MzRk
NTdmNDA5NGIzYzJjYmE2ZjA2NzQwZjUwNjNkZDRiZi4uMTdmMjJlOTAzZWE2MGQwOWU5MGUyMGMz
ZTk3YmMxM2JjYWM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBJbk1l
bW9yeURpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXJJbXBsOjpEZWxl
Z2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9
Ci0gICAgUmVjb3JkZXImIHJlY29yZGVyKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9OworICAgIFJl
Y29yZGVySW1wbCYgcmVjb3JkZXIoKSB7IHJldHVybiBtX2NvbnRleHQ7IH07CiAgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlM
aXN0LCB7IH0pOyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7
CiAKIHByb3RlY3RlZDoKLSAgICBSZWNvcmRlciBtX2NvbnRleHQ7CisgICAgUmVjb3JkZXJJbXBs
IG1fY29udGV4dDsKICAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlMaXN0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbk1lbW9yeURpc3BsYXlMaXN0PiBtX3JlcGxheWVkRGlzcGxheUxpc3Q7CiAgICAg
Ym9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDBiMzVhZjU0MGMxNGRjYmRiZjdiZWM2
OWNhZmQ2MDZiMzJlNTVmMGYuLjQ2ZTlmYTg2YWFiNmJhNDQ5NWNjNDZhZGI3NmFmNDY3ZmU1YmEz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwogICAg
IH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCiAgICAg
ICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKICAgICAgICAgLCBtX2Ry
YXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAg
ICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3BsYXlM
aXN0OjpXcml0aW5nQ2xpZW50PigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDkzYmE2NTAyYWI2YmE0ZjMzMWNmZWU5NjNjMTllMzMwMmU5NWZiNmEuLjcz
MjA5NTM3M2FkN2ZhYjc3ZDg4NmExYTBjMDk3ZjQ2ZTFkMzk4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDIxICs0MCwxNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVy
KERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCitSZWNv
cmRlcjo6UmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbikKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3
R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGgg
Y2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUs
IGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNvcmRlcjo6UmVjb3JkZXIoUmVj
b3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
Ci0gICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9kZWxl
Z2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlz
LCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkp
CiAgICAgLCBtX2lzTmVzdGVkKHRydWUpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhp
cywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigp
KQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlh
bENsaXAgfSk7CiB9CkBAIC02MiwxOCArNTcsNiBAQCBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3Jk
ZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbAog
UmVjb3JkZXI6On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkg
PT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVz
dG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJS
ZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5k
YXRhKCkpOwotfQotCi12b2lkIFJlY29yZGVyOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQotewot
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKLX0K
LQotdm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi17Ci0gICAgYXBwZW5kPFB1dFBp
eGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsK
IH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKQEAgLTk2LDM3ICs3OSwyNSBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpy
ZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKG1fZGVs
ZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsK
LSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotfQotCiB2b2lkIFJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNo
YW5nZXMsIGNoYW5nZUZsYWdzKSkgewogICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdl
cy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVz
ZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2Vz
Lm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0
ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkp
Ci0gICAgICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKmNoYW5nZXMubV9zdGF0ZS5z
dHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgICAgIHJlY29yZFNldElubGlu
ZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5
dGVzKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhp
Y2tuZXNzPihjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgcmVjb3Jk
U2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPigqY2hhbmdlcy5t
X3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7Ci19Ci0KLWJvb2wgUmVjb3Jk
ZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1
cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsK
KyAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENv
bG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQpAQCAtMTUyLDM0ICsxMjMsMjQgQEAgdm9pZCBSZWNv
cmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRl
KHN0YXRlLCBmbGFncyk7CiB9CiAKLWJvb2wgUmVjb3JkZXI6OmNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2Rl
bGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwot
fQotCi1SZW5kZXJpbmdNb2RlIFJlY29yZGVyOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAo
TGluZUNhcCBsaW5lQ2FwKQogewotICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5lQ2FwKTsKKyAg
ICByZWNvcmRTZXRMaW5lQ2FwKGxpbmVDYXApOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hBcnJheSwgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAg
ICBhcHBlbmQ8U2V0TGluZURhc2g+KGRhc2hBcnJheSwgZGFzaE9mZnNldCk7CisgICAgcmVjb3Jk
U2V0TGluZURhc2goZGFzaEFycmF5LCBkYXNoT2Zmc2V0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZUpvaW4oTGluZUpvaW4gbGluZUpvaW4pCiB7Ci0gICAgYXBwZW5kPFNldExpbmVKb2lu
PihsaW5lSm9pbik7CisgICAgcmVjb3JkU2V0TGluZUpvaW4obGluZUpvaW4pOwogfQogCiB2b2lk
IFJlY29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiB7Ci0gICAgYXBwZW5k
PFNldE1pdGVyTGltaXQ+KG1pdGVyTGltaXQpOworICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0
ZXJMaW1pdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0xODksMzkgKzE1MCw0
MCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29ucwogCiB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7Ci0gICAgYXBwZW5kPERyYXdHbHlwaHM+
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9k
ZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRS
ZXNvdXJjZVVzZShjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgcmVjb3JkRHJhd0dseXBo
cyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01v
ZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogeworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJl
Y29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGlt
YWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisKKyAgICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAg
cmVjb3JkRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJlY29yZE5h
dGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZSk7CisgICAgcmVjb3JkRHJhd05hdGl2ZUltYWdlKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICByZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgYXBwZW5kPERyYXdQYXR0ZXJu
PihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291
cmNlVXNlKGltYWdlKTsKKyAgICByZWNvcmREcmF3UGF0dGVybihpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2F2ZSgpCiB7Ci0gICAgYXBwZW5kPFNhdmU+KCk7CisgICAgcmVjb3JkU2F2ZSgpOwogICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CiB9
CiAKQEAgLTIzMSwyNSArMTkzLDI1IEBAIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIGFwcGVuZDxS
ZXN0b3JlPigpOworICAgIHJlY29yZFJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgY3VycmVudFN0YXRlKCkudHJhbnNsYXRl
KHgsIHkpOwotICAgIGFwcGVuZDxUcmFuc2xhdGU+KHgsIHkpOworICAgIHJlY29yZFRyYW5zbGF0
ZSh4LCB5KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnJvdGF0ZShhbmdsZUluUmFkaWFucyk7Ci0gICAgYXBw
ZW5kPFJvdGF0ZT4oYW5nbGVJblJhZGlhbnMpOworICAgIHJlY29yZFJvdGF0ZShhbmdsZUluUmFk
aWFucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBjdXJyZW50U3RhdGUoKS5zY2FsZShzaXplKTsKLSAgICBhcHBlbmQ8U2NhbGU+KHNp
emUpOworICAgIHJlY29yZFNjYWxlKHNpemUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC0yNTgsMTMgKzIyMCwxMyBA
QCB2b2lkIFJlY29yZGVyOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGN1cnJlbnRTdGF0ZSgpLmNvbmNhdENUTSh0cmFu
c2Zvcm0pOwotICAgIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4odHJhbnNmb3JtKTsKKyAgICByZWNv
cmRDb25jYXRlbmF0ZUNUTSh0cmFuc2Zvcm0pOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgY3VycmVudFN0YXRlKCku
c2V0Q1RNKHRyYW5zZm9ybSk7Ci0gICAgYXBwZW5kPFNldENUTT4odHJhbnNmb3JtKTsKKyAgICBy
ZWNvcmRTZXRDVE0odHJhbnNmb3JtKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpn
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CkBAIC0yNzUs
NTQgKzIzNyw2NCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0Nv
bnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewotICAgIGFwcGVuZDxCZWdpblRyYW5z
cGFyZW5jeUxheWVyPihvcGFjaXR5KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkK
IHsKLSAgICBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewot
ICAgIGFwcGVuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdSZWN0KHJlY3QsIGJv
cmRlclRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQogewotICAgIGFwcGVuZDxE
cmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9h
dCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29s
IGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkKIHsKLSAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4
dD4oRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2ludCksIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChGbG9hdFBvaW50KCksIHRvRmxvYXRT
aXplKHBvaW50KSwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBhcHBlbmQ8
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVjdCwgc3R5bGUpOworICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcihyZWN0LCBzdHlsZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RHJhd0VsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0VsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7Ci0gICAgYXBwZW5kPERyYXdQYXRoPihwYXRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdQYXRoKHBhdGgpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmlu
Z1BhdGg+KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKHBhdGgsIHdp
ZHRoLCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihy
ZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlm
TmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKHJlY3RzLCB3aWR0aCwg
b2Zmc2V0LCBjb2xvcik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMzksMTIyICszMTEs
MTM2IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUsIGJvb2wmLCBjb25zdCBDb2xvCiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOwor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJl
Y3QocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xv
cj4ocmVjdCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVu
dCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxS
ZWN0V2l0aEdyYWRpZW50KHJlY3QsIGdyYWRpZW50KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGFwcGVuZDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChy
ZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4ocmVj
dCwgY29sb3IsIGJsZW5kTW9kZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKKyAgICByZWNvcmRGaWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1J
Zk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJv
dW5kZWRIb2xlUmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogeworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0
YSgpKSB7CiAgICAgICAgIGlmIChwYXRoLmhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAg
ICAgICAgICBhcHBlbmQ8RmlsbExpbmU+KHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKSk7Cisg
ICAgICAgICAgICByZWNvcmRGaWxsTGluZShwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCkpOwog
ICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8QXJjRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxGaWxsQXJjPihwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CisgICAgICAg
ICAgICByZWNvcmRGaWxsQXJjKHBhdGguaW5saW5lRGF0YTxBcmNEYXRhPigpKTsKICAgICAgICAg
ZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpCi0gICAgICAgICAg
ICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4ocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkp
OworICAgICAgICAgICAgcmVjb3JkRmlsbFF1YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1
cnZlRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihwYXRoLmlu
bGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxCZXpp
ZXJDdXJ2ZShwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgotICAgIGFwcGVuZDxGaWxsUGF0aD4ocGF0aCk7CisgICAgcmVj
b3JkRmlsbFBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbEVsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbEVsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7Ci0gICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3Qs
IGxpbmVXaWR0aCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRTdHJva2VSZWN0KHJlY3QsIGxpbmVXaWR0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChw
YXRoLmhhc0lubGluZURhdGEoKSkgewogICAgICAgICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPExp
bmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUxpbmU+KHBhdGguaW5saW5lRGF0
YTxMaW5lRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VMaW5lKHBhdGguaW5saW5l
RGF0YTxMaW5lRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxB
cmNEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUFyYz4ocGF0aC5pbmxpbmVEYXRh
PEFyY0RhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQXJjKHBhdGguaW5saW5lRGF0
YTxBcmNEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZlPihwYXRoLmlu
bGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VRdWFk
Q3VydmUocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlm
IChwYXRoLmhhc0lubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBw
ZW5kPFN0cm9rZUJlemllckN1cnZlPihwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigp
KTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUJlemllckN1cnZlKHBhdGguaW5saW5lRGF0YTxC
ZXppZXJDdXJ2ZURhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
YXBwZW5kPFN0cm9rZVBhdGg+KHBhdGgpOworICAgIHJlY29yZFN0cm9rZVBhdGgocGF0aCk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIGFwcGVuZDxTdHJva2VFbGxpcHNlPihyZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFN0cm9rZUVsbGlwc2UocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
YXBwZW5kPENsZWFyUmVjdD4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNl
c3NhcnkoKTsKKyAgICByZWNvcmRDbGVhclJlY3QocmVjdCk7CiB9CiAKICNpZiBVU0UoQ0cpCiB2
b2lkIFJlY29yZGVyOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGFwcGVuZDxBcHBseVN0
cm9rZVBhdHRlcm4+KCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsK
KyAgICByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBw
bHlGaWxsUGF0dGVybigpCiB7Ci0gICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRBcHBseUZpbGxQ
YXR0ZXJuKCk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5kcy5pbnRlcnNlY3QocmVj
dCk7Ci0gICAgYXBwZW5kPENsaXA+KHJlY3QpOworICAgIHJlY29yZENsaXAocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFw
cGVuZDxDbGlwT3V0PihyZWN0KTsKKyAgICByZWNvcmRDbGlwT3V0KHJlY3QpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiB7Ci0gICAgYXBwZW5kPENsaXBP
dXRUb1BhdGg+KHBhdGgpOworICAgIHJlY29yZENsaXBPdXRUb1BhdGgocGF0aCk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBhdGguZmFzdEJv
dW5kaW5nUmVjdCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHdpbmRSdWxlKTsKKyAg
ICByZWNvcmRDbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CiB9CiAKIEludFJlY3QgUmVjb3JkZXI6
OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNDY0LDEwICs0NTAsOCBAQCBJbnRSZWN0IFJlY29yZGVy
OjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKLSAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CisgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoaW1hZ2VCdWZmZXIpOworICAgIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKQEAgLTQ4MywxMCArNDY3LDEwIEBAIEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uCiAgICAgaW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVp
Z2h0KCkpOwogICAgIGluaXRpYWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNp
emUoKSk7CiAKLSAgICBSZWNvcmRlciBuZXN0ZWRDb250ZXh0KCp0aGlzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci0gICAgYXBwZW5kPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Ci0gICAgZHJhd2lu
Z0Z1bmN0aW9uKG5lc3RlZENvbnRleHQpOwotICAgIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIG5lc3RlZENvbnRleHQgPSBjcmVhdGVOZXN0
ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKKyAgICByZWNvcmRCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7CisgICAgZHJhd2luZ0Z1
bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKKyAgICByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZGVzdGluYXRpb24pOwogCiAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6U3VjY2VzczsKIH0KQEAgLTQ5OSw3ICs0ODMsNyBAQCB2b2lkIFJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwbGF5ZXIuaWRlbnRpZmllcigp
KTsKLSAgICBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsK
KyAgICByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbik7CiB9CiAj
ZW5kaWYKIApAQCAtNTA3LDcgKzQ5MSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
Y2hhbmdlcyB0aGUgYmFzZUNUTSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2Fj
aGVkIGV4dGVudHMuCiAgICAgLy8gQXNzZXJ0IHRoYXQgaXQncyBvbmx5IGNhbGxlZCBlYXJseSBv
bj8KLSAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiBGbG9hdFJlY3QgUmVjb3JkZXI6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkKQEAgLTUyNiwyNSArNTEw
LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVy
UmFkaXVzKQogICAgIHJldHVybiBjZWlsZihibHVyUmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlw
bGllcik7CiB9CiAKLUZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVj
dDsKLSAgICBjb25zdCBDb250ZXh0U3RhdGUmIHN0YXRlID0gY3VycmVudFN0YXRlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKLSAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9
IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKLSAgICAg
ICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVz
KSk7Ci0gICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOwotICAgIH0KLSAgICAKLSAg
ICBGbG9hdFJlY3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91bmRz
LCBib3VuZHMpOwotICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50KTsK
LX0KLQogY29uc3QgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OmN1cnJlbnRTdGF0
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYWU5NmY2ZTc3ZDY2ZWQ3MGQxNTI0ZjNl
MWMwNWEzMTFmMmNmMTk5MC4uOWJmMzViNWRkODBhNWQ0ODI4Y2EwYTE0NjVhMjJkMmYxYTdlMzVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNp
bmNsdWRlICJJbmxpbmVQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC01NCwzNiArNTUsMTM5IEBAIGNsYXNzIFJlY29y
ZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNs
YXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CisgICAgdmlydHVhbCB2
b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNo
SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3Jk
ZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
OworCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNhdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc3RvcmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJvdGF0ZShmbG9h
dCBhbmdsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTY2FsZShjb25zdCBGbG9hdFNp
emUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5l
RmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldE1pdGVyTGltaXQoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xl
YXJTaGFkb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRS
ZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVj
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91
dFRvUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBv
aW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZs
b2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBm
bG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRG
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZp
bGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBHcmFkaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbENvbXBvc2l0ZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpID0gMDsKKyNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbExpbmUoY29u
c3QgTGluZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3Qg
QXJjRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25z
dCBRdWFkQ3VydmVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQmV6aWVy
Q3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0KSA9IDA7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0
YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3Qg
QmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0
cm9rZVBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENs
ZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNv
dXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1h
Z2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSA9
IDA7CisKKyAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGN0bTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZSBsYXN0RHJhd2luZ1N0YXRlOworCisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCisgICAg
ICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKKyAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0
ZShzdGF0ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ29udGV4dFN0YXRlIGNs
b25lRm9yU2F2ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbnRleHRTdGF0ZSBz
dGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOworICAgICAgICAgICAgc3Rh
dGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsK
KyAgICAgICAgfQogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TGlzdC5pc0VtcHR5KCk7IH0KKyAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xv
bmVGb3JTYXZlKCk7CisgICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0g
MTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgfQogCi0gICAgY2xhc3MgRGVs
ZWdhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRp
dmVJbWFnZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRGb250VXNlKEZvbnQmKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEltYWdlQnVmZmVyVXNlKEltYWdlQnVmZmVyJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsgfQorICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5
KTsKKyAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOworICAgICAgICB2
b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAgICAgfTsKIAotICAgIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50
aWZpZXIpOyB9CisgICAgY29uc3QgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4mIHN0YXRlU3RhY2so
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2s7IH0KKyAgICBib29sIGlzTmVzdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc05lc3RlZDsgfQogCi1wcml2YXRlOgotICAgIFJlY29yZGVyKFJlY29y
ZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKKyAgICBj
b25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OworICAgIENvbnRleHRTdGF0
ZSYgY3VycmVudFN0YXRlKCk7CiAKK3ByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIEZJWE1FOiBNYXliZSBy
ZW1vdmUgdGhpcz8KLSAgICBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZl
ciYpIGNvbnN0OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkK
ICAgICB2b2lkIHNldElzQ0FMYXllckNvbnRleHQoYm9vbCkgZmluYWwgeyB9CkBAIC05NCwxODQg
KzE5OCw5NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCwg
Ym9vbCwgU3Ryb2tlU3R5bGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAg
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwotICAgIHZvaWQgc2V0TGluZURhc2goY29uc3Qg
RGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBzZXRMaW5lSm9p
bihMaW5lSm9pbikgZmluYWw7Ci0gICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBk
YXNoT2Zmc2V0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVKb2luKExp
bmVKb2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pdGVyTGltaXQoZmxv
YXQpIGZpbmFsOwogCi0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWw7
Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwotICAgIHZvaWQgZmlsbEVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JikgZmluYWw7Ci0gICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29uc3Qg
UGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKICNpZiBV
U0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIGZp
bmFsOwotICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKIAot
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFBvaW50JikgZmluYWw7Ci0gICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9p
bnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50
aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBm
bG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBi
b29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50
TWFya2VyTGluZVN0eWxlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0aChjb25zdCBQ
YXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UGF0aChjb25zdCBQYXRo
JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3Rm9j
dXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3Im
KSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgUGF0aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywgY29uc3QgQ29s
b3ImKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgm
LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBD
b2xvciYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmUoKSBmaW5hbDsKLSAgICB2b2lk
IHJlc3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmUoKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKSBmaW5hbDsKIAotICAgIHZvaWQgdHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgcm90YXRlKGZsb2F0IGFu
Z2xlSW5SYWRpYW5zKSBmaW5hbDsKLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpIGZp
bmFsOwotICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwotICAgIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xl
SW5SYWRpYW5zKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjYWxlKGNvbnN0IEZs
b2F0U2l6ZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uY2F0Q1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOwogCi0gICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpIGZpbmFsOwotICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIGZp
bmFsOwogCi0gICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQg
Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBPdXQoY29uc3Qg
UGF0aCYpIGZpbmFsOwotICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBm
aW5hbDsKLSAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBPdXQoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjbGlwQm91
bmRzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7Ci0KLSAgICBGbG9hdFJlY3Qgcm91bmRUb0Rl
dmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9k
ZSkgZmluYWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFjYW5BcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgY29uc3RleHByIChpdGVtTmVlZHNTdGF0ZTxUPigpKQotICAgICAgICAg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBtX2Rpc3Bs
YXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKLSAg
ICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7Ci0gICAgICAgICAgICBpZiAo
TElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlbSA9IFQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHJlY3QgPSBpdGVtLmxv
Y2FsQm91bmRzKCp0aGlzKSkKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdp
bmdJdGVtRXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcygqcmVjdCkpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKLSAgICAgICAgICAgICAg
ICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50
KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXRlbU5lZWRzU3RhdGUoKTsK
LQotICAgIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKLSAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2Fs
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIAogICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLSAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwotICAgICAgICAKLSAgICAgICAg
Q29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAg
ICAgIDogY3RtKHRyYW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAg
ICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwg
Y3RtLCBjbGlwQm91bmRzKTsKLSAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVD
aGFuZ2U7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBD
b250ZXh0U3RhdGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAgIHN0
YXRlLmxhc3REcmF3aW5nU3RhdGUuYWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRl
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7
Ci0gICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICAgICAgdm9p
ZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKLSAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotICAgIH07Ci0gICAgCi0gICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3Rh
dGUoKSBjb25zdDsKLSAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwotCi0gICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7Ci0gICAg
Ym9vbCBtX2lzTmVzdGVkOwotCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4gbV9zdGF0ZVN0
YWNrOwotCiAgICAgRHJhd0dseXBoc1JlY29yZGVyIG1fZHJhd0dseXBoc1JlY29yZGVyOworICAg
IGJvb2wgbV9pc05lc3RlZCB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y29uc3RleHByIGJvb2wgUmVjb3JkZXI6Oml0ZW1OZWVkc1N0YXRlKCkKLXsKLSAgICBpZiAoVDo6
aXNEcmF3aW5nSXRlbSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSNpZiBVU0UoQ0cpCi0gICAg
aWYgKFQ6Oml0ZW1UeXBlID09IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuIHx8IFQ6Oml0ZW1U
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4pCi0gICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNl
IERpc3BsYXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMTE5MjFhZGIyZGYz
NjFhYTI3Y2VkZDExZDRmYTU3M2I2NTdiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwCkBAIC0wLDAgKzEsNDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVjb3JkZXIuaCIKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CisKK1JlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERl
bGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgIDogUmVjb3JkZXIoc3RhdGUsIGlu
aXRpYWxDbGlwLCBpbml0aWFsQ1RNLCBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgLCBt
X2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5n
IHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKK30KKworUmVjb3JkZXJJbXBsOjpSZWNvcmRl
ckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNKQorICAgIDogUmVjb3JkZXIocGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAs
IGluaXRpYWxDVE0pCisgICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQor
ICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKK3sKK30KKworUmVjb3JkZXJJbXBs
Ojp+UmVjb3JkZXJJbXBsKCkKK3sKKyAgICBBU1NFUlQoc3RhdGVTdGFjaygpLnNpemUoKSA9PSAx
KTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3Jl
LgorICAgIGlmICghaXNOZXN0ZWQoKSkKKyAgICAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29y
ZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEo
KSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBw
aXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQoreworICAgIGFwcGVuZDxQ
dXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1h
dCk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBl
IHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmNh
bkFwcGVuZEl0ZW1PZlR5cGUodHlwZSk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5EcmF3
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdAoreworICAg
IHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5pc0NhY2hlZEltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKK30KKworUmVuZGVyaW5nTW9kZSBSZWNvcmRlckltcGw6OnJlbmRlcmluZ01v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVy
aW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKK30KKworc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlckltcGw+KCp0aGlzLCBH
cmFwaGljc0NvbnRleHRTdGF0ZSB7IH0sIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNhdmUoKQoreworICAgIGFwcGVuZDxTYXZlPigpOwor
fQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSgpCit7CisgICAgYXBwZW5kPFJl
c3RvcmU+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUoZmxvYXQg
eCwgZmxvYXQgeSkKK3sKKyAgICBhcHBlbmQ8VHJhbnNsYXRlPih4LCB5KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFJvdGF0ZShmbG9hdCBhbmdsZSkKK3sKKyAgICBhcHBlbmQ8Um90
YXRlPihhbmdsZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTY2FsZShjb25zdCBG
bG9hdFNpemUmIHNjYWxlKQoreworICAgIGFwcGVuZDxTY2FsZT4oc2NhbGUpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKQoreworICAgIGFwcGVuZDxTZXRDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKK3sKKyAgICBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4g
aW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oaW5saW5lQ29s
b3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3Io
U1JHQkE8dWludDhfdD4gaW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZVN0cm9r
ZUNvbG9yPihpbmxpbmVDb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQoreworICAgIGFwcGVuZDxTZXRTdHJva2VU
aGlja25lc3M+KHRoaWNrbmVzcyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQoreworICAgIGFwcGVuZDxTZXRTdGF0
ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQoreworICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5l
Q2FwKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldExpbmVEYXNoKGNvbnN0IERh
c2hBcnJheSYgYXJyYXksIGZsb2F0IGRhc2hPZmZzZXQpCit7CisgICAgYXBwZW5kPFNldExpbmVE
YXNoPihhcnJheSwgZGFzaE9mZnNldCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRMaW5lSm9pbihMaW5lSm9pbiBqb2luKQoreworICAgIGFwcGVuZDxTZXRMaW5lSm9pbj4oam9p
bik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0IGxp
bWl0KQoreworICAgIGFwcGVuZDxTZXRNaXRlckxpbWl0PihsaW1pdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdygpCit7CisgICAgYXBwZW5kPENsZWFyU2hhZG93
PigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGFwcGVuZDxDbGlwPihjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCit7Cisg
ICAgYXBwZW5kPENsaXBPdXQ+KGNsaXBSZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAg
IGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBkZXN0aW5h
dGlvblJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aChj
b25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihwYXRoKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIHJ1bGUpCit7CisgICAgYXBwZW5kPENsaXBQYXRoPihwYXRoLCBydWxlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQoreworICAgIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24s
IGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgYXBwZW5k
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGlu
Z01vZGUgbW9kZSkKK3sKKyAgICBhcHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBtb2RlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05h
dGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZDxE
cmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCit7Cisg
ICAgYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KG9wYWNpdHkpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQoreworICAgIGFwcGVuZDxF
bmRUcmFuc3BhcmVuY3lMYXllcj4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQoreworICAgIGFw
cGVuZDxEcmF3UmVjdD4ocmVjdCwgbGluZVdpZHRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQyKQoreworICAgIGFwcGVuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0
aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzKQoreworICAgIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihibG9ja0xvY2F0aW9u
LCBsb2NhbEFuY2hvciwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmIHN0
eWxlKQoreworICAgIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihyZWN0LCBzdHls
ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPERyYXdFbGxpcHNlPihyZWN0KTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAg
YXBwZW5kPERyYXdQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZz
ZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+
KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZERyYXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZs
b2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBl
bmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihyZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQoreworICAgIGFwcGVuZDxGaWxsUmVjdD4ocmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KHJlY3QsIGNvbG9y
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQoreworICAgIGFwcGVuZDxG
aWxsUmVjdFdpdGhHcmFkaWVudD4ocmVjdCwgZ3JhZGllbnQpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUpCit7
CisgICAgYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4ocmVjdCwgY29sb3IsIG9wLCBtb2RlKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIEJsZW5kTW9kZSBtb2RlKQor
eworICAgIGFwcGVuZDxGaWxsUm91bmRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBtb2RlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KHJl
Y3QsIHJvdW5kZWRSZWN0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRG
aWxsTGluZShjb25zdCBMaW5lRGF0YSYgbGluZSkKK3sKKyAgICBhcHBlbmQ8RmlsbExpbmU+KGxp
bmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEFyYyhjb25zdCBBcmNEYXRh
JiBhcmMpCit7CisgICAgYXBwZW5kPEZpbGxBcmM+KGFyYyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKQorewor
ICAgIGFwcGVuZDxGaWxsUXVhZEN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJiBjdXJ2ZSkKK3sK
KyAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxGaWxs
UGF0aD4ocGF0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPEZpbGxFbGxpcHNlPihyZWN0KTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVy
Rm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8
R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgcmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRQdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIHByZW11bHRpcGxpY2F0aW9uKQoreworICAgIGFwcGVuZDxQdXRQaXhlbEJ1
ZmZlcj4oYnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIHByZW11bHRpcGxpY2F0aW9uKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVuZDxQ
YWludEZyYW1lRm9yTWVkaWE+KHBsYXllciwgZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdp
ZHRoKQoreworICAgIGFwcGVuZDxTdHJva2VSZWN0PihyZWN0LCB3aWR0aCk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VMaW5lKGNvbnN0IExpbmVEYXRhJiBsaW5lKQorewor
ICAgIGFwcGVuZDxTdHJva2VMaW5lPihsaW5lKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJiBhcmMpCit7CisgICAgYXBwZW5kPFN0cm9rZUFy
Yz4oYXJjKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVF1YWRDdXJ2ZShj
b25zdCBRdWFkQ3VydmVEYXRhJiBjdXJ2ZSkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZl
PihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VCZXppZXJDdXJ2
ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVuZDxTdHJva2VCZXpp
ZXJDdXJ2ZT4oY3VydmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlUGF0
aChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxTdHJva2VQYXRoPihwYXRoKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQoreworICAgIGFwcGVuZDxTdHJva2VFbGxpcHNlPihyZWN0KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZENsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7Cisg
ICAgYXBwZW5kPENsZWFyUmVjdD4ocmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRBcHBseVN0cm9rZVBhdHRlcm4oKQoreworICAgIGFwcGVuZDxBcHBseVN0cm9rZVBhdHRlcm4+
KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkKK3sK
KyAgICBhcHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCit7CisgICAg
YXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KHNjYWxlRmFjdG9yKTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAg
ICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1hZ2VV
c2UoaW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQorewor
ICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRGb250VXNlKGZv
bnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQorewor
ICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKK30KKworRmxvYXRSZWN0IFJlY29yZGVySW1wbDo6ZXh0ZW50RnJvbUxvY2Fs
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3QgYm91
bmRzID0gcmVjdDsKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgpOworCisgICAgRmxv
YXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dSYWRpdXM7CisgICAgQ29sb3Ig
c2hhZG93Q29sb3I7CisgICAgaWYgKGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1
cywgc2hhZG93Q29sb3IpKSB7CisgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dFeHRlbnQgPSBib3Vu
ZHM7CisgICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNldCk7CisgICAgICAgIHNo
YWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNoYWRvd1JhZGl1cykpOwor
ICAgICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsKKyAgICB9CisKKyAgICBGbG9hdFJl
Y3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91bmRzLCBib3VuZHMp
OworICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJmNTljN2U5
N2ZjZmQ0MzY0MmMwYWNmZTRiZjJhMzczMmM4MGJlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJl
Y29yZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKKworY2xhc3MgUmVjb3JkZXJJbXBsIDogcHVibGljIFJlY29yZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlckltcGwp
OworcHVibGljOgorICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29y
ZGVySW1wbChEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUq
ID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24g
PSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1
Y3QpOworICAgIFJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVudCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pOworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
UmVjb3JkZXJJbXBsKCk7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlMaXN0LmlzRW1wdHkoKTsgfQorCisgICAgY2xhc3MgRGVsZWdhdGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYpIHsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGb250
VXNlKEZvbnQmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZEltYWdlQnVmZmVyVXNl
KEltYWdlQnVmZmVyJikgeyB9CisgICAgICAgIHZpcnR1YWwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsgfQor
ICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOworICAgIHZvaWQg
Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSBm
aW5hbCB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50aWZpZXIpOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gRklYTUU6IE1heWJlIHJlbW92ZSB0aGlzPworICAgIGJvb2wgY2FuRHJhd0ltYWdlQnVm
ZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHJlY29yZFNhdmUoKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZFJlc3RvcmUoKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFRyYW5z
bGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJvdGF0ZShmbG9h
dCBhbmdsZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRTY2FsZShjb25zdCBGbG9hdFNpemUmKSBm
aW5hbDsKKyAgICB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4
X3Q+KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldE1p
dGVyTGltaXQoZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xlYXJTaGFkb3coKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
Q2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkQ2xpcE91dFRvUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxv
YXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdl
SWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCByZWNv
cmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEVu
ZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3UmVjdChjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9j
YXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29u
c3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNv
cmREcmF3UGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3Rm9jdXNS
aW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29s
b3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0
b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikg
ZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChjb25z
dCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbENvbXBv
c2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsOworI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQorICAgIHZvaWQgcmVjb3JkRmlsbExpbmUoY29uc3QgTGluZURhdGEm
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3QgQXJjRGF0YSYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVEYXRhJikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRGaWxsQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikg
ZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9y
bWF0LCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0KSBmaW5hbDsKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICB2
b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTdHJv
a2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
U3Ryb2tlQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgZmluYWw7CisjZW5kaWYK
KyAgICB2b2lkIHJlY29yZFN0cm9rZVBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkU3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZENsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNpZiBVU0UoQ0cpCisgICAg
dm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEFw
cGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKKyNlbmRpZgorICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CisKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNl
KE5hdGl2ZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250Jikg
ZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4
dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pIGZpbmFsOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJn
cz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIChV
TkxJS0VMWSghY2FuQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSkpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisKKyAgICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVt
KSB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRyYWNrc0RyYXdpbmdJ
dGVtRXh0ZW50cygpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1
dG8gaXRlbSA9IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIGlm
IChhdXRvIHJlY3QgPSBpdGVtLmxvY2FsQm91bmRzKCp0aGlzKSkKKyAgICAgICAgICAgICAgICBt
X2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcygq
cmVjdCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3Vu
ZHMoKSkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50
KCpyZWN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0
LmFkZERyYXdpbmdJdGVtRXh0ZW50KHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlw
ZSkgY29uc3Q7CisKKyAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKKyAgICBEZWxlZ2F0
ZSogbV9kZWxlZ2F0ZSB7IG51bGxwdHIgfTsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggNDJmYzQxOGM3OTgyMzMxNDk0ZWUyNzZiNmRhNDk5NGExZTRjOTk2YS4u
OGNlYzkyNDI2ODc1MTRjNmMyYzc3Yjc4OThjMGEzNGM5MDdkNWJjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDsKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPiBjbGFzcyBUaHJlYWRTYWZlUmVt
b3RlSW1hZ2VCdWZmZXJGbHVzaGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
LWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6RGVsZWdhdGUsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcldyaXRpbmdDbGllbnQgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGUsIHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewogICAgIHVzaW5nIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVm
ZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6
bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdp
bmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGViNjZiYzQwMzUxNjJmNzQ3ZjM3ODhhZWQwOWE2YzRjZjQxOGNlMjIuLmE0OWQ5YWUx
MTM0NDRlNDY3N2VjYjEyYTE0MTEyZTJiZTA2MjQ3MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0wNyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBE
aXNwbGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNv
bmNyZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAyMS0xMC0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW3dlYmtpdHNjbXB5XSBMaWJyYXJ5IHNob3VsZCBvd24gY29udHJpYnV0b3JzLmpzb24gbG9h
ZGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Jp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKaW5k
ZXggOGE5YmQ1ZDJmMjE0ZTdmYjMwODUwNWUyN2I3ZTc3N2U5YWZjOTlkNi4uMzQ5YjY1NjU4Nzhm
YTYwYTE4Y2M3YTUzZjE2MmYzMTgyMGU1NzYwOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVyYXRvci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RSZWNvcmRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HcmFkaWVudEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgpAQCAtNTUsNyArNTUsNyBAQCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVkQ29udGV4dCkKICAgICBHcmFwaGljc0NvbnRleHRD
RyBwcmltYXJ5Q29udGV4dChwcmltYXJ5Q0dDb250ZXh0LmdldCgpKTsKIAogICAgIEluTWVtb3J5
RGlzcGxheUxpc3QgZGlzcGxheUxpc3Q7Ci0gICAgUmVjb3JkZXIgc2Vjb25kYXJ5Q29udGV4dChk
aXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVp
Z2h0KSwgeyB9KTsKKyAgICBSZWNvcmRlckltcGwgc2Vjb25kYXJ5Q29udGV4dChkaXNwbGF5TGlz
dCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9
KTsKIAogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBz
ZWNvbmRhcnlDb250ZXh0KTsKIApAQCAtOTEsMTAgKzkxLDEwIEBAIFRFU1QoQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dFRlc3RzLCBCYXNpY0JpZnVyY2F0ZWRDb250ZXh0KQogVEVTVChCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIFRleHRJbkJpZnVyY2F0ZWRDb250ZXh0KQogewogICAg
IEluTWVtb3J5RGlzcGxheUxpc3QgcHJpbWFyeURpc3BsYXlMaXN0OwotICAgIFJlY29yZGVyIHBy
aW1hcnlDb250ZXh0KHByaW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29u
dGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKKyAgICBSZWNvcmRlckltcGwgcHJpbWFy
eUNvbnRleHQocHJpbWFyeURpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0
V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0pOwogCiAgICAgSW5NZW1vcnlEaXNwbGF5TGlzdCBz
ZWNvbmRhcnlEaXNwbGF5TGlzdDsKLSAgICBSZWNvcmRlciBzZWNvbmRhcnlDb250ZXh0KHNlY29u
ZGFyeURpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRl
eHRIZWlnaHQpLCB7IH0pOworICAgIFJlY29yZGVySW1wbCBzZWNvbmRhcnlDb250ZXh0KHNlY29u
ZGFyeURpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRl
eHRIZWlnaHQpLCB7IH0pOwogCiAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJp
bWFyeUNvbnRleHQsIHNlY29uZGFyeUNvbnRleHQpOwogCg==
</data>
<flag name="commit-queue"
          id="464631"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440616</attachid>
            <date>2021-10-08 08:22:41 -0700</date>
            <delta_ts>2021-10-08 08:30:33 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-231404-20211008082240.patch</filename>
            <type>text/plain</type>
            <size>101963</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4NTRmMDA3MTA3ZDBh
OTYxNzBhODhmODk1Y2UzZDg3Nzg4YjJkMC4uY2Q3OWRiNDMwOTVjY2U0MDM5YjljOWU2ZmU2MGE1
Y2NjNTA1MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMS0xMC0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tOgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHVzZXMgb2YgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
CisgICAgICAgIFRoZSBhYnN0cmFjdCBSZWNvcmRlciBub3cgY29udGFpbnMgbG9naWMgZm9yIG1h
cHBpbmcgR3JhcGhpY3NDb250ZXh0IG1ldGhvZCBjYWxscyBpbnRvIGNhbGxzIHRvIHJlY29yZAor
ICAgICAgICBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcy4gTm90ZSB0aGF0IHdoaWxlIG1h
bnkgR3JhcGhpY3NDb250ZXh0IG1ldGhvZHMgY29ycmVzcG9uZCBkaXJlY3RseSB0byBkaXNwbGF5
IGxpc3QKKyAgICAgICAgaXRlbXMsIHNvbWUgbWV0aG9kcyBtYXAgdG8gb25lIG9yIG1vcmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzdWNoIGFzIHNldHRpbmcgc3RhdGUgY29uc2lzdGluZyBvbmx5IG9m
IGlubGluZSBQT0QKKyAgICAgICAgZGF0YSBvciBkcmF3aW5nIHNpbXBsZSBwYXRocy4gVGhlIGJh
c2UgY2xhc3MgYWxzbyBtYW5hZ2VzIHVwZGF0aW5nIGFuZCBtYWludGFpbmluZyB0aGUgc3RhdGUg
c3RhY2sgKGEgbGlzdCBvZgorICAgICAgICBSZWNvcmRlcjo6Q29udGV4dFN0YXRlKSB3aGVuIG1v
ZGlmeWluZyBncmFwaGljcyBjb250ZXh0IHN0YXRlLgorCisgICAgICAgIEltcG9ydGFudGx5LCB0
aGlzIG1lYW5zIHRoYXQgdGhlIGFic3RyYWN0IFJlY29yZGVyIGNsYXNzIGRvZXMgbm90IGNvbnRh
aW4gZWl0aGVyIGEgUmVjb3JkZXIgRGVsZWdhdGUsIG5vciBkb2VzCisgICAgICAgIGl0IGNvbnRh
aW4gYSBEaXNwbGF5TGlzdC4gSW5zdGVhZCwgdGhlIGNvbmNyZXRlIHN1YmNsYXNzIChEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsKSBub3cgaG9sZHMgb24gdG8gdGhlIGxvY2FsCisgICAgICAgIERp
c3BsYXlMaXN0LgorCisgICAgICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgc3ViY2xhc3NlcyBv
ZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0ICJyZWNvcmRp
bmciIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcyBnaXZlbiB0aGVpciBjb25zdGl0dWVudCBh
cmd1bWVudHMsIGluc3RlYWQgb2YgZGlyZWN0bHkgaW1wbGVtZW50aW5nIHRoZSBpbmRpdmlkdWFs
IEdyYXBoaWNzQ29udGV4dCBkcmF3aW5nCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4
ZWxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpwdXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNh
bkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjppc05lc3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVn
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
RGVsZWdhdGU6OmNhbkFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRGb250VXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OnJlY29yZEltYWdlQnVmZmVyVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBl
bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpp
dGVtTmVlZHNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
YW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENv
bnRleHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBuZXN0ZWQgUmVjb3JkZXIgbG9naWMgdXNl
ZCBmb3IgYFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHNgLCBzdWNoIHRoYXQgaXQncyBu
b3cgYSBzZXBhcmF0ZQorICAgICAgICBvdmVycmlkZSBwb2ludC4gVGhpcyBhbGxvd3Mgc3ViY2xh
c3NlcyB0byBpbnN0YW50aWF0ZSBuZXN0ZWQgY29udGV4dHMgb2YgdGhlIHNhbWUgdHlwZSwgd2hp
bGUga2VlcGluZyB0aGUgbWFpbgorICAgICAgICBsb2dpYyBpbiBgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzYCBpbiB0aGUgc2hhcmVkIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDb25j
YXRlbmF0ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdFbGxpcHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVj
dFdpdGhHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEZpbGxBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkR2V0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJv
a2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkU3Ryb2tlUXVhZEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
QXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6On5EZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGU6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OnJlY29yZEltYWdlQnVmZmVyVXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmFwcGVuZCk6CisKIDIwMjEtMTAtMDcgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIGBoaWdoV2F0ZXJNYXJrYCBzaG91bGQg
YmUgYSByZWFkb25seSBXZWJJREwgYXR0cmlidXRlIG9mIHF1ZXVpbmcgc3RyYXRlZ2llcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlMWZhOWY2NmNhMGUxMWUxNWYzY2RiZjQ5MmVmNGMwN2RiZjZmN2E0Li5mMjY3YzY0
ZDA4NzFkZDljMDJlNDYwNDhlODM4NDg1OGEzMmYxMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0IGJh
c2UgY2xhc3MgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDI6IFVucm9sbCBQZW5kaW5nV2FrZXVwSW5mb3Jt
YXRpb246OmFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzNGQ5MWNhZmU2ZmY1ZDM1ZTI2NmE0
NTJjZDNmZjUzMzY3MzBkNDczLi41YTc4ZjE5ZDJhZGI0ZDBkZmUxMTQ1YmVkZmU3MDRjZWU4NzI3
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODIzOGU3MzdiOWVhNDg5ZTg1
NDhjY2VmYTljMWZlYmRmNjg0NGM3Li43YTA0NTkyOWI3NmZjYmVlMzkxZWQyZTM0M2Y3MzQ5ZDI5
MGVjZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNzQsNyArMzc0LDcgQEAKIAkJMEZFNTgwNjQxOTMyN0E2MjAwREUzMkVC
IC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFj
LmggKi87IH07CiAJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFNUZCRDcxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU1RkJE
OTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFy
VGhlbWVNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07
CiAJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTUzOTMsNiArNTM5Myw3IEBACiAJCUY0MjBGMDBBMjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVy
RXZlbnRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MjBGMDA4MjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVyRXZlbnRUeXBlTmFtZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDI5
MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAw
MDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTk0RkEyNzBDRkU0ODAwMzIyOThCIC8qIEdy
YXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk0RjkyNzBDRkU0ODAwMzIyOThCIC8qIEdyYXBoaWNz
Q29udGV4dEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0Mjk5NTBGMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzNFOTAzMURC
QkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3Rh
dGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1
NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYz
RjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLzsgfTsKQEAgLTY0MDIsOCArNjQwMyw4IEBACiAJCTBGRTVGQkNCMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJD
QzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU1RkJDRTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCRDAxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZXBsYXllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0
UmVwbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNkM3NkIxRkJGQjdB
NjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9y
VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODAwLDYgKzE2
ODAxLDggQEAKIAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyog
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5OTRGOTI3MENGRTQ4MDAz
MjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0Mjk5NTBFMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNF
OTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODIwMyw4ICsxODIwNiwxMCBAQAogCQkJCUY0Mzc3RDU1MjU1
MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCiAJCQkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAogCQkJCTFDRThE
MTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCi0JCQkJMEZF
NUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAotCQkJ
CTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCisJ
CQkJRjQyOTk1MEUyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICov
LAorCQkJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmgg
Ki8sCisJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcCAqLywKKwkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCkBAIC0zMjM1OCw3ICszMjM2Myw4IEBACiAJCQkJ
MEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0Mjk5NTBG
MjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUND
NjE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggY2E0ZTc3NzVlNzQ2Y2NjOTliMDc3
ZjIwYzY5NzE2Y2U4MjU4OTlkZi4uYWUwZDFhNzZmNjFjMjM2ZDliMTY4MTYwNDY1ZWUyMmNmZGYw
OGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdy
YWRpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4MDZjMTc1Njk5MzgwYmE2ZC4u
NmM2OGU0NDU5OGJmOTg2NmU4MTY0ZDIzNTFiMmNiZDYzZTc1YTBkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkNvbXBs
ZXhUZXh0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5
RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHJlY29yZGluZ0NvbnRl
eHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFu
c2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb246OkRvbnREZWNvbnN0cnVjdCk7CisgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBy
ZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3Qo
KSwgQWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOwogICAgIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwg
Z2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA2MWJiNWZjZGE4OTQwMmZhYTJjYzU3Y2M1OWFmOThkMjc1MDdmYzNlLi4y
ZDJmMTFhNDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0EpCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0xODA0LDcg
KzE4MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhD
b21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgICAgICAKICAgICAgICAgRmxv
YXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCi0gICAgICAgIERp
c3BsYXlMaXN0OjpSZWNvcmRlciBjb250ZXh0KCptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIGNvbnRleHQoKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIHBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiNjU2ZjEzNjgxNjI0
N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li40NDEwMzhlZDhmYjAyMjIzMjdmNDhlNjU2ZWVk
Nzg1YzI0MmYzMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaWYg
VVNFKENHKQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbQppbmRleCAzODhhZmNkNmY0NmFmYzQ1MjIxZjgwNzFkMzUwOTY3ZjBlNTM1NTBk
Li43NWUxZjk0YjJiNGY2OWIzMTg5YzRjNDI2MTdhYjE5MDgzYWRjYTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKIAotI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyMjY4
NGRjMzk4ZTFlZjUyYzFiZDk2NmZmNDUwMzcyMzdkY2YyYWVmLi44OTg2ZThjMzI5ZjBhMTFlODQ4
MzAxMTk5NWIzNmQzYmExNjE3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTQsNyAr
NTQsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEFzVGV4dEZsYWdzOwogCiBjbGFzcyBEaXNwbGF5TGlz
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3QpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXI7CisgICAgZnJpZW5kIGNsYXNz
IFJlY29yZGVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRGlzcGxheUxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAzOTU3YzQ1NzZmZTkxMmQ2ODEwMjA3NjEw
MDFjYzI0ZjY4Njg4NjJhLi4zNjJkNDM2NzUyYWM3M2E5YmMzYjNjYzhjMDU2YWE0ZDdmMDdiMjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxD
VE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitEcmF3aW5nQ29udGV4dDo6RHJhd2lu
Z0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IG1fY29udGV4dChtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggOTY1NjM2MzRk
NTdmNDA5NGIzYzJjYmE2ZjA2NzQwZjUwNjNkZDRiZi4uMTdmMjJlOTAzZWE2MGQwOWU5MGUyMGMz
ZTk3YmMxM2JjYWM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBJbk1l
bW9yeURpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXJJbXBsOjpEZWxl
Z2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9
Ci0gICAgUmVjb3JkZXImIHJlY29yZGVyKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9OworICAgIFJl
Y29yZGVySW1wbCYgcmVjb3JkZXIoKSB7IHJldHVybiBtX2NvbnRleHQ7IH07CiAgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlM
aXN0LCB7IH0pOyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7
CiAKIHByb3RlY3RlZDoKLSAgICBSZWNvcmRlciBtX2NvbnRleHQ7CisgICAgUmVjb3JkZXJJbXBs
IG1fY29udGV4dDsKICAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlMaXN0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbk1lbW9yeURpc3BsYXlMaXN0PiBtX3JlcGxheWVkRGlzcGxheUxpc3Q7CiAgICAg
Ym9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDBiMzVhZjU0MGMxNGRjYmRiZjdiZWM2
OWNhZmQ2MDZiMzJlNTVmMGYuLjQ2ZTlmYTg2YWFiNmJhNDQ5NWNjNDZhZGI3NmFmNDY3ZmU1YmEz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwogICAg
IH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCiAgICAg
ICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKICAgICAgICAgLCBtX2Ry
YXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAg
ICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3BsYXlM
aXN0OjpXcml0aW5nQ2xpZW50PigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDkzYmE2NTAyYWI2YmE0ZjMzMWNmZWU5NjNjMTllMzMwMmU5NWZiNmEuLjcz
MjA5NTM3M2FkN2ZhYjc3ZDg4NmExYTBjMDk3ZjQ2ZTFkMzk4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDIxICs0MCwxNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVy
KERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCitSZWNv
cmRlcjo6UmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbikKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3
R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGgg
Y2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUs
IGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNvcmRlcjo6UmVjb3JkZXIoUmVj
b3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
Ci0gICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9kZWxl
Z2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlz
LCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkp
CiAgICAgLCBtX2lzTmVzdGVkKHRydWUpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhp
cywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigp
KQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlh
bENsaXAgfSk7CiB9CkBAIC02MiwxOCArNTcsNiBAQCBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3Jk
ZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbAog
UmVjb3JkZXI6On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkg
PT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVz
dG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJS
ZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5k
YXRhKCkpOwotfQotCi12b2lkIFJlY29yZGVyOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQotewot
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKLX0K
LQotdm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi17Ci0gICAgYXBwZW5kPFB1dFBp
eGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsK
IH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKQEAgLTk2LDM3ICs3OSwyNSBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpy
ZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKG1fZGVs
ZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsK
LSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotfQotCiB2b2lkIFJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNo
YW5nZXMsIGNoYW5nZUZsYWdzKSkgewogICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdl
cy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVz
ZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2Vz
Lm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0
ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkp
Ci0gICAgICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKmNoYW5nZXMubV9zdGF0ZS5z
dHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgICAgIHJlY29yZFNldElubGlu
ZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5
dGVzKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhp
Y2tuZXNzPihjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgcmVjb3Jk
U2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPigqY2hhbmdlcy5t
X3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7Ci19Ci0KLWJvb2wgUmVjb3Jk
ZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1
cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsK
KyAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENv
bG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQpAQCAtMTUyLDM0ICsxMjMsMjQgQEAgdm9pZCBSZWNv
cmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRl
KHN0YXRlLCBmbGFncyk7CiB9CiAKLWJvb2wgUmVjb3JkZXI6OmNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2Rl
bGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwot
fQotCi1SZW5kZXJpbmdNb2RlIFJlY29yZGVyOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAo
TGluZUNhcCBsaW5lQ2FwKQogewotICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5lQ2FwKTsKKyAg
ICByZWNvcmRTZXRMaW5lQ2FwKGxpbmVDYXApOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hBcnJheSwgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAg
ICBhcHBlbmQ8U2V0TGluZURhc2g+KGRhc2hBcnJheSwgZGFzaE9mZnNldCk7CisgICAgcmVjb3Jk
U2V0TGluZURhc2goZGFzaEFycmF5LCBkYXNoT2Zmc2V0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZUpvaW4oTGluZUpvaW4gbGluZUpvaW4pCiB7Ci0gICAgYXBwZW5kPFNldExpbmVKb2lu
PihsaW5lSm9pbik7CisgICAgcmVjb3JkU2V0TGluZUpvaW4obGluZUpvaW4pOwogfQogCiB2b2lk
IFJlY29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiB7Ci0gICAgYXBwZW5k
PFNldE1pdGVyTGltaXQ+KG1pdGVyTGltaXQpOworICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0
ZXJMaW1pdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0xODksMzkgKzE1MCw0
MCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29ucwogCiB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7Ci0gICAgYXBwZW5kPERyYXdHbHlwaHM+
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9k
ZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRS
ZXNvdXJjZVVzZShjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgcmVjb3JkRHJhd0dseXBo
cyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01v
ZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogeworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJl
Y29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGlt
YWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisKKyAgICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAg
cmVjb3JkRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJlY29yZE5h
dGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZSk7CisgICAgcmVjb3JkRHJhd05hdGl2ZUltYWdlKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICByZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgYXBwZW5kPERyYXdQYXR0ZXJu
PihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291
cmNlVXNlKGltYWdlKTsKKyAgICByZWNvcmREcmF3UGF0dGVybihpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2F2ZSgpCiB7Ci0gICAgYXBwZW5kPFNhdmU+KCk7CisgICAgcmVjb3JkU2F2ZSgpOwogICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CiB9
CiAKQEAgLTIzMSwyNSArMTkzLDI1IEBAIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIGFwcGVuZDxS
ZXN0b3JlPigpOworICAgIHJlY29yZFJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgY3VycmVudFN0YXRlKCkudHJhbnNsYXRl
KHgsIHkpOwotICAgIGFwcGVuZDxUcmFuc2xhdGU+KHgsIHkpOworICAgIHJlY29yZFRyYW5zbGF0
ZSh4LCB5KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnJvdGF0ZShhbmdsZUluUmFkaWFucyk7Ci0gICAgYXBw
ZW5kPFJvdGF0ZT4oYW5nbGVJblJhZGlhbnMpOworICAgIHJlY29yZFJvdGF0ZShhbmdsZUluUmFk
aWFucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBjdXJyZW50U3RhdGUoKS5zY2FsZShzaXplKTsKLSAgICBhcHBlbmQ8U2NhbGU+KHNp
emUpOworICAgIHJlY29yZFNjYWxlKHNpemUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC0yNTgsMTMgKzIyMCwxMyBA
QCB2b2lkIFJlY29yZGVyOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGN1cnJlbnRTdGF0ZSgpLmNvbmNhdENUTSh0cmFu
c2Zvcm0pOwotICAgIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4odHJhbnNmb3JtKTsKKyAgICByZWNv
cmRDb25jYXRlbmF0ZUNUTSh0cmFuc2Zvcm0pOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgY3VycmVudFN0YXRlKCku
c2V0Q1RNKHRyYW5zZm9ybSk7Ci0gICAgYXBwZW5kPFNldENUTT4odHJhbnNmb3JtKTsKKyAgICBy
ZWNvcmRTZXRDVE0odHJhbnNmb3JtKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpn
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CkBAIC0yNzUs
NTQgKzIzNyw2NCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0Nv
bnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewotICAgIGFwcGVuZDxCZWdpblRyYW5z
cGFyZW5jeUxheWVyPihvcGFjaXR5KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkK
IHsKLSAgICBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewot
ICAgIGFwcGVuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdSZWN0KHJlY3QsIGJv
cmRlclRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQogewotICAgIGFwcGVuZDxE
cmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9h
dCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29s
IGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkKIHsKLSAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4
dD4oRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2ludCksIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChGbG9hdFBvaW50KCksIHRvRmxvYXRT
aXplKHBvaW50KSwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBhcHBlbmQ8
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVjdCwgc3R5bGUpOworICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcihyZWN0LCBzdHlsZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RHJhd0VsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0VsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7Ci0gICAgYXBwZW5kPERyYXdQYXRoPihwYXRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdQYXRoKHBhdGgpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmlu
Z1BhdGg+KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKHBhdGgsIHdp
ZHRoLCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihy
ZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlm
TmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKHJlY3RzLCB3aWR0aCwg
b2Zmc2V0LCBjb2xvcik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMzksMTIyICszMTEs
MTM2IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUsIGJvb2wmLCBjb25zdCBDb2xvCiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOwor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJl
Y3QocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xv
cj4ocmVjdCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVu
dCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxS
ZWN0V2l0aEdyYWRpZW50KHJlY3QsIGdyYWRpZW50KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGFwcGVuZDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChy
ZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4ocmVj
dCwgY29sb3IsIGJsZW5kTW9kZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKKyAgICByZWNvcmRGaWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1J
Zk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJv
dW5kZWRIb2xlUmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogeworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0
YSgpKSB7CiAgICAgICAgIGlmIChwYXRoLmhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAg
ICAgICAgICBhcHBlbmQ8RmlsbExpbmU+KHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKSk7Cisg
ICAgICAgICAgICByZWNvcmRGaWxsTGluZShwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCkpOwog
ICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8QXJjRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxGaWxsQXJjPihwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CisgICAgICAg
ICAgICByZWNvcmRGaWxsQXJjKHBhdGguaW5saW5lRGF0YTxBcmNEYXRhPigpKTsKICAgICAgICAg
ZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpCi0gICAgICAgICAg
ICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4ocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkp
OworICAgICAgICAgICAgcmVjb3JkRmlsbFF1YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1
cnZlRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihwYXRoLmlu
bGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxCZXpp
ZXJDdXJ2ZShwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgotICAgIGFwcGVuZDxGaWxsUGF0aD4ocGF0aCk7CisgICAgcmVj
b3JkRmlsbFBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbEVsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbEVsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7Ci0gICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3Qs
IGxpbmVXaWR0aCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRTdHJva2VSZWN0KHJlY3QsIGxpbmVXaWR0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChw
YXRoLmhhc0lubGluZURhdGEoKSkgewogICAgICAgICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPExp
bmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUxpbmU+KHBhdGguaW5saW5lRGF0
YTxMaW5lRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VMaW5lKHBhdGguaW5saW5l
RGF0YTxMaW5lRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxB
cmNEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUFyYz4ocGF0aC5pbmxpbmVEYXRh
PEFyY0RhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQXJjKHBhdGguaW5saW5lRGF0
YTxBcmNEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZlPihwYXRoLmlu
bGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VRdWFk
Q3VydmUocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlm
IChwYXRoLmhhc0lubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBw
ZW5kPFN0cm9rZUJlemllckN1cnZlPihwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigp
KTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUJlemllckN1cnZlKHBhdGguaW5saW5lRGF0YTxC
ZXppZXJDdXJ2ZURhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
YXBwZW5kPFN0cm9rZVBhdGg+KHBhdGgpOworICAgIHJlY29yZFN0cm9rZVBhdGgocGF0aCk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIGFwcGVuZDxTdHJva2VFbGxpcHNlPihyZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFN0cm9rZUVsbGlwc2UocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
YXBwZW5kPENsZWFyUmVjdD4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNl
c3NhcnkoKTsKKyAgICByZWNvcmRDbGVhclJlY3QocmVjdCk7CiB9CiAKICNpZiBVU0UoQ0cpCiB2
b2lkIFJlY29yZGVyOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGFwcGVuZDxBcHBseVN0
cm9rZVBhdHRlcm4+KCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsK
KyAgICByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBw
bHlGaWxsUGF0dGVybigpCiB7Ci0gICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRBcHBseUZpbGxQ
YXR0ZXJuKCk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5kcy5pbnRlcnNlY3QocmVj
dCk7Ci0gICAgYXBwZW5kPENsaXA+KHJlY3QpOworICAgIHJlY29yZENsaXAocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFw
cGVuZDxDbGlwT3V0PihyZWN0KTsKKyAgICByZWNvcmRDbGlwT3V0KHJlY3QpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiB7Ci0gICAgYXBwZW5kPENsaXBP
dXRUb1BhdGg+KHBhdGgpOworICAgIHJlY29yZENsaXBPdXRUb1BhdGgocGF0aCk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBhdGguZmFzdEJv
dW5kaW5nUmVjdCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHdpbmRSdWxlKTsKKyAg
ICByZWNvcmRDbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CiB9CiAKIEludFJlY3QgUmVjb3JkZXI6
OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNDY0LDEwICs0NTAsOCBAQCBJbnRSZWN0IFJlY29yZGVy
OjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKLSAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CisgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoaW1hZ2VCdWZmZXIpOworICAgIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKQEAgLTQ4MywxMCArNDY3LDEwIEBAIEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uCiAgICAgaW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVp
Z2h0KCkpOwogICAgIGluaXRpYWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNp
emUoKSk7CiAKLSAgICBSZWNvcmRlciBuZXN0ZWRDb250ZXh0KCp0aGlzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci0gICAgYXBwZW5kPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Ci0gICAgZHJhd2lu
Z0Z1bmN0aW9uKG5lc3RlZENvbnRleHQpOwotICAgIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIG5lc3RlZENvbnRleHQgPSBjcmVhdGVOZXN0
ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKKyAgICByZWNvcmRCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7CisgICAgZHJhd2luZ0Z1
bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKKyAgICByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZGVzdGluYXRpb24pOwogCiAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6U3VjY2VzczsKIH0KQEAgLTQ5OSw3ICs0ODMsNyBAQCB2b2lkIFJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwbGF5ZXIuaWRlbnRpZmllcigp
KTsKLSAgICBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsK
KyAgICByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbik7CiB9CiAj
ZW5kaWYKIApAQCAtNTA3LDcgKzQ5MSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
Y2hhbmdlcyB0aGUgYmFzZUNUTSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2Fj
aGVkIGV4dGVudHMuCiAgICAgLy8gQXNzZXJ0IHRoYXQgaXQncyBvbmx5IGNhbGxlZCBlYXJseSBv
bj8KLSAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiBGbG9hdFJlY3QgUmVjb3JkZXI6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkKQEAgLTUyNiwyNSArNTEw
LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVy
UmFkaXVzKQogICAgIHJldHVybiBjZWlsZihibHVyUmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlw
bGllcik7CiB9CiAKLUZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVj
dDsKLSAgICBjb25zdCBDb250ZXh0U3RhdGUmIHN0YXRlID0gY3VycmVudFN0YXRlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKLSAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9
IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKLSAgICAg
ICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVz
KSk7Ci0gICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOwotICAgIH0KLSAgICAKLSAg
ICBGbG9hdFJlY3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91bmRz
LCBib3VuZHMpOwotICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50KTsK
LX0KLQogY29uc3QgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OmN1cnJlbnRTdGF0
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYWU5NmY2ZTc3ZDY2ZWQ3MGQxNTI0ZjNl
MWMwNWEzMTFmMmNmMTk5MC4uOWJmMzViNWRkODBhNWQ0ODI4Y2EwYTE0NjVhMjJkMmYxYTdlMzVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNp
bmNsdWRlICJJbmxpbmVQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC01NCwzNiArNTUsMTM5IEBAIGNsYXNzIFJlY29y
ZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNs
YXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CisgICAgdmlydHVhbCB2
b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNo
SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3Jk
ZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
OworCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNhdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc3RvcmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJvdGF0ZShmbG9h
dCBhbmdsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTY2FsZShjb25zdCBGbG9hdFNp
emUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5l
RmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldE1pdGVyTGltaXQoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xl
YXJTaGFkb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRS
ZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVj
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91
dFRvUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBv
aW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZs
b2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBm
bG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRG
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZp
bGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBHcmFkaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbENvbXBvc2l0ZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpID0gMDsKKyNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbExpbmUoY29u
c3QgTGluZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3Qg
QXJjRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25z
dCBRdWFkQ3VydmVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQmV6aWVy
Q3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0KSA9IDA7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0
YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3Qg
QmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0
cm9rZVBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENs
ZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNv
dXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1h
Z2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSA9
IDA7CisKKyAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGN0bTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZSBsYXN0RHJhd2luZ1N0YXRlOworCisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCisgICAg
ICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKKyAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0
ZShzdGF0ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ29udGV4dFN0YXRlIGNs
b25lRm9yU2F2ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbnRleHRTdGF0ZSBz
dGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOworICAgICAgICAgICAgc3Rh
dGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsK
KyAgICAgICAgfQogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TGlzdC5pc0VtcHR5KCk7IH0KKyAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xv
bmVGb3JTYXZlKCk7CisgICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0g
MTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgfQogCi0gICAgY2xhc3MgRGVs
ZWdhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRp
dmVJbWFnZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRGb250VXNlKEZvbnQmKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEltYWdlQnVmZmVyVXNlKEltYWdlQnVmZmVyJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsgfQorICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5
KTsKKyAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOworICAgICAgICB2
b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAgICAgfTsKIAotICAgIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50
aWZpZXIpOyB9CisgICAgY29uc3QgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4mIHN0YXRlU3RhY2so
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2s7IH0KKyAgICBib29sIGlzTmVzdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc05lc3RlZDsgfQogCi1wcml2YXRlOgotICAgIFJlY29yZGVyKFJlY29y
ZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKKyAgICBj
b25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OworICAgIENvbnRleHRTdGF0
ZSYgY3VycmVudFN0YXRlKCk7CiAKK3ByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIEZJWE1FOiBNYXliZSBy
ZW1vdmUgdGhpcz8KLSAgICBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZl
ciYpIGNvbnN0OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkK
ICAgICB2b2lkIHNldElzQ0FMYXllckNvbnRleHQoYm9vbCkgZmluYWwgeyB9CkBAIC05NCwxODQg
KzE5OCw5NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCwg
Ym9vbCwgU3Ryb2tlU3R5bGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAg
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwotICAgIHZvaWQgc2V0TGluZURhc2goY29uc3Qg
RGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBzZXRMaW5lSm9p
bihMaW5lSm9pbikgZmluYWw7Ci0gICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBk
YXNoT2Zmc2V0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVKb2luKExp
bmVKb2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pdGVyTGltaXQoZmxv
YXQpIGZpbmFsOwogCi0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWw7
Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwotICAgIHZvaWQgZmlsbEVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JikgZmluYWw7Ci0gICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29uc3Qg
UGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKICNpZiBV
U0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIGZp
bmFsOwotICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKIAot
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFBvaW50JikgZmluYWw7Ci0gICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9p
bnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50
aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBm
bG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBi
b29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50
TWFya2VyTGluZVN0eWxlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0aChjb25zdCBQ
YXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UGF0aChjb25zdCBQYXRo
JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3Rm9j
dXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3Im
KSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgUGF0aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywgY29uc3QgQ29s
b3ImKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgm
LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBD
b2xvciYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmUoKSBmaW5hbDsKLSAgICB2b2lk
IHJlc3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmUoKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKSBmaW5hbDsKIAotICAgIHZvaWQgdHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgcm90YXRlKGZsb2F0IGFu
Z2xlSW5SYWRpYW5zKSBmaW5hbDsKLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpIGZp
bmFsOwotICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwotICAgIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xl
SW5SYWRpYW5zKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjYWxlKGNvbnN0IEZs
b2F0U2l6ZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uY2F0Q1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOwogCi0gICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpIGZpbmFsOwotICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIGZp
bmFsOwogCi0gICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQg
Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBPdXQoY29uc3Qg
UGF0aCYpIGZpbmFsOwotICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBm
aW5hbDsKLSAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBPdXQoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjbGlwQm91
bmRzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7Ci0KLSAgICBGbG9hdFJlY3Qgcm91bmRUb0Rl
dmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9k
ZSkgZmluYWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFjYW5BcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgY29uc3RleHByIChpdGVtTmVlZHNTdGF0ZTxUPigpKQotICAgICAgICAg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBtX2Rpc3Bs
YXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKLSAg
ICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7Ci0gICAgICAgICAgICBpZiAo
TElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlbSA9IFQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHJlY3QgPSBpdGVtLmxv
Y2FsQm91bmRzKCp0aGlzKSkKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdp
bmdJdGVtRXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcygqcmVjdCkpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKLSAgICAgICAgICAgICAg
ICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50
KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXRlbU5lZWRzU3RhdGUoKTsK
LQotICAgIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKLSAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2Fs
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIAogICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLSAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwotICAgICAgICAKLSAgICAgICAg
Q29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAg
ICAgIDogY3RtKHRyYW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAg
ICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwg
Y3RtLCBjbGlwQm91bmRzKTsKLSAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVD
aGFuZ2U7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBD
b250ZXh0U3RhdGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAgIHN0
YXRlLmxhc3REcmF3aW5nU3RhdGUuYWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRl
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7
Ci0gICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICAgICAgdm9p
ZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKLSAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotICAgIH07Ci0gICAgCi0gICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3Rh
dGUoKSBjb25zdDsKLSAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwotCi0gICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7Ci0gICAg
Ym9vbCBtX2lzTmVzdGVkOwotCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4gbV9zdGF0ZVN0
YWNrOwotCiAgICAgRHJhd0dseXBoc1JlY29yZGVyIG1fZHJhd0dseXBoc1JlY29yZGVyOworICAg
IGJvb2wgbV9pc05lc3RlZCB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y29uc3RleHByIGJvb2wgUmVjb3JkZXI6Oml0ZW1OZWVkc1N0YXRlKCkKLXsKLSAgICBpZiAoVDo6
aXNEcmF3aW5nSXRlbSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSNpZiBVU0UoQ0cpCi0gICAg
aWYgKFQ6Oml0ZW1UeXBlID09IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuIHx8IFQ6Oml0ZW1U
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4pCi0gICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNl
IERpc3BsYXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNDY1NGY5NGM5MTUx
Njg5MmQzZTc0ZTE2Y2RiMDA3ZTkyYzUwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwCkBAIC0wLDAgKzEsNDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVjb3JkZXIuaCIKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CisKK1JlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERl
bGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgIDogUmVjb3JkZXIoc3RhdGUsIGlu
aXRpYWxDbGlwLCBpbml0aWFsQ1RNLCBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgLCBt
X2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5n
IHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKK30KKworUmVjb3JkZXJJbXBsOjpSZWNvcmRl
ckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNKQorICAgIDogUmVjb3JkZXIocGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAs
IGluaXRpYWxDVE0pCisgICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQor
ICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKK3sKK30KKworUmVjb3JkZXJJbXBs
Ojp+UmVjb3JkZXJJbXBsKCkKK3sKKyAgICBBU1NFUlQoc3RhdGVTdGFjaygpLnNpemUoKSA9PSAx
KTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3Jl
LgorICAgIGlmICghaXNOZXN0ZWQoKSkKKyAgICAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29y
ZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEo
KSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBw
aXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQoreworICAgIGFwcGVuZDxQ
dXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1h
dCk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBl
IHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmNh
bkFwcGVuZEl0ZW1PZlR5cGUodHlwZSk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5EcmF3
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdAoreworICAg
IHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5pc0NhY2hlZEltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKK30KKworUmVuZGVyaW5nTW9kZSBSZWNvcmRlckltcGw6OnJlbmRlcmluZ01v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVy
aW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKK30KKworc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlckltcGw+KCp0aGlzLCBH
cmFwaGljc0NvbnRleHRTdGF0ZSB7IH0sIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNhdmUoKQoreworICAgIGFwcGVuZDxTYXZlPigpOwor
fQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSgpCit7CisgICAgYXBwZW5kPFJl
c3RvcmU+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUoZmxvYXQg
eCwgZmxvYXQgeSkKK3sKKyAgICBhcHBlbmQ8VHJhbnNsYXRlPih4LCB5KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFJvdGF0ZShmbG9hdCBhbmdsZSkKK3sKKyAgICBhcHBlbmQ8Um90
YXRlPihhbmdsZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTY2FsZShjb25zdCBG
bG9hdFNpemUmIHNjYWxlKQoreworICAgIGFwcGVuZDxTY2FsZT4oc2NhbGUpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKQoreworICAgIGFwcGVuZDxTZXRDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKK3sKKyAgICBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4g
aW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oaW5saW5lQ29s
b3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3Io
U1JHQkE8dWludDhfdD4gaW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZVN0cm9r
ZUNvbG9yPihpbmxpbmVDb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQoreworICAgIGFwcGVuZDxTZXRTdHJva2VU
aGlja25lc3M+KHRoaWNrbmVzcyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQoreworICAgIGFwcGVuZDxTZXRTdGF0
ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQoreworICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5l
Q2FwKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldExpbmVEYXNoKGNvbnN0IERh
c2hBcnJheSYgYXJyYXksIGZsb2F0IGRhc2hPZmZzZXQpCit7CisgICAgYXBwZW5kPFNldExpbmVE
YXNoPihhcnJheSwgZGFzaE9mZnNldCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRMaW5lSm9pbihMaW5lSm9pbiBqb2luKQoreworICAgIGFwcGVuZDxTZXRMaW5lSm9pbj4oam9p
bik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0IGxp
bWl0KQoreworICAgIGFwcGVuZDxTZXRNaXRlckxpbWl0PihsaW1pdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdygpCit7CisgICAgYXBwZW5kPENsZWFyU2hhZG93
PigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGFwcGVuZDxDbGlwPihjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCit7Cisg
ICAgYXBwZW5kPENsaXBPdXQ+KGNsaXBSZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAg
IGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBkZXN0aW5h
dGlvblJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aChj
b25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihwYXRoKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIHJ1bGUpCit7CisgICAgYXBwZW5kPENsaXBQYXRoPihwYXRoLCBydWxlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQoreworICAgIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24s
IGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgYXBwZW5k
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGlu
Z01vZGUgbW9kZSkKK3sKKyAgICBhcHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBtb2RlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05h
dGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZDxE
cmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCit7Cisg
ICAgYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KG9wYWNpdHkpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQoreworICAgIGFwcGVuZDxF
bmRUcmFuc3BhcmVuY3lMYXllcj4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQoreworICAgIGFw
cGVuZDxEcmF3UmVjdD4ocmVjdCwgbGluZVdpZHRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQyKQoreworICAgIGFwcGVuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0
aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzKQoreworICAgIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihibG9ja0xvY2F0aW9u
LCBsb2NhbEFuY2hvciwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmIHN0
eWxlKQoreworICAgIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihyZWN0LCBzdHls
ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPERyYXdFbGxpcHNlPihyZWN0KTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAg
YXBwZW5kPERyYXdQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZz
ZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+
KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZERyYXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZs
b2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBl
bmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihyZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQoreworICAgIGFwcGVuZDxGaWxsUmVjdD4ocmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KHJlY3QsIGNvbG9y
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQoreworICAgIGFwcGVuZDxG
aWxsUmVjdFdpdGhHcmFkaWVudD4ocmVjdCwgZ3JhZGllbnQpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUpCit7
CisgICAgYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4ocmVjdCwgY29sb3IsIG9wLCBtb2RlKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIEJsZW5kTW9kZSBtb2RlKQor
eworICAgIGFwcGVuZDxGaWxsUm91bmRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBtb2RlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KHJl
Y3QsIHJvdW5kZWRSZWN0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRG
aWxsTGluZShjb25zdCBMaW5lRGF0YSYgbGluZSkKK3sKKyAgICBhcHBlbmQ8RmlsbExpbmU+KGxp
bmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEFyYyhjb25zdCBBcmNEYXRh
JiBhcmMpCit7CisgICAgYXBwZW5kPEZpbGxBcmM+KGFyYyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKQorewor
ICAgIGFwcGVuZDxGaWxsUXVhZEN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJiBjdXJ2ZSkKK3sK
KyAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxGaWxs
UGF0aD4ocGF0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPEZpbGxFbGxpcHNlPihyZWN0KTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVy
Rm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8
R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgcmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRQdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIHByZW11bHRpcGxpY2F0aW9uKQoreworICAgIGFwcGVuZDxQdXRQaXhlbEJ1
ZmZlcj4oYnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIHByZW11bHRpcGxpY2F0aW9uKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVuZDxQ
YWludEZyYW1lRm9yTWVkaWE+KHBsYXllciwgZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdp
ZHRoKQoreworICAgIGFwcGVuZDxTdHJva2VSZWN0PihyZWN0LCB3aWR0aCk7Cit9CisKKyNpZiBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9r
ZUxpbmUoY29uc3QgTGluZURhdGEmIGxpbmUpCit7CisgICAgYXBwZW5kPFN0cm9rZUxpbmU+KGxp
bmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQXJjKGNvbnN0IEFyY0Rh
dGEmIGFyYykKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlQXJjPihhcmMpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZl
KQoreworICAgIGFwcGVuZDxTdHJva2VRdWFkQ3VydmU+KGN1cnZlKTsKK30KKwordm9pZCBSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYg
Y3VydmUpCit7CisgICAgYXBwZW5kPFN0cm9rZUJlemllckN1cnZlPihjdXJ2ZSk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUGF0
aD4ocGF0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4ocmVjdCk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQoreworICAgIGFwcGVuZDxDbGVhclJlY3Q+KHJlY3QpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkKK3sKKyAgICBhcHBlbmQ8QXBwbHlT
dHJva2VQYXR0ZXJuPigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlGaWxs
UGF0dGVybigpCit7CisgICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFj
dG9yKQoreworICAgIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYg
aW1hZ2UpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29y
ZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1h
Z2UoaW1hZ2UpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9u
dCYgZm9udCkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVj
b3JkRm9udFVzZShmb250KTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChmb250KTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFn
ZUJ1ZmZlcikKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVj
b3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Cit9CisKK0Zsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4
dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAg
RmxvYXRSZWN0IGJvdW5kcyA9IHJlY3Q7CisgICAgYXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUo
KTsKKworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgZmxvYXQgc2hhZG93UmFkaXVz
OworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgeworICAgICAgICBGbG9hdFJlY3Qgc2hhZG93
RXh0ZW50ID0gYm91bmRzOworICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQp
OworICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFk
b3dSYWRpdXMpKTsKKyAgICAgICAgYm91bmRzLnVuaXRlKHNoYWRvd0V4dGVudCk7CisgICAgfQor
CisgICAgRmxvYXRSZWN0IGNsaXBwZWRFeHRlbnQgPSBpbnRlcnNlY3Rpb24oc3RhdGUuY2xpcEJv
dW5kcywgYm91bmRzKTsKKyAgICByZXR1cm4gc3RhdGUuY3RtLm1hcFJlY3QoY2xpcHBlZEV4dGVu
dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiZjU5YzdlOTdmY2ZkNDM2NDJjMGFjZmU0YmYyYTM3MzJjODBiZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RSZWNvcmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIFJlY29yZGVySW1wbCA6IHB1YmxpYyBSZWNvcmRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UmVjb3JkZXJJbXBsKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlckltcGwoRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b246OkRlY29uc3RydWN0KTsKKyAgICBSZWNvcmRlckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflJlY29yZGVySW1wbCgpOworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5KCk7IH0KKworICAgIGNsYXNzIERlbGVnYXRl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1h
Z2UmKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3Qg
SW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkRm9udFVzZShGb250JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJ
bWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZlciYpIHsgfQorICAgICAgICB2aXJ0dWFsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQ7IH0KKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50
UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBmaW5h
bDsKKyAgICB2b2lkIGZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIg
aWRlbnRpZmllcikgZmluYWwgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlmaWVyKTsgfQor
Citwcml2YXRlOgorICAgIC8vIEZJWE1FOiBNYXliZSByZW1vdmUgdGhpcz8KKyAgICBib29sIGNh
bkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCByZWNv
cmRTYXZlKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXN0b3JlKCkgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRUcmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgZmluYWw7CisgICAgdm9pZCByZWNv
cmRSb3RhdGUoZmxvYXQgYW5nbGUpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2NhbGUoY29uc3Qg
RmxvYXRTaXplJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldElubGluZUZpbGxDb2xvcihT
UkdCQTx1aW50OF90PikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xv
cihTUkdCQTx1aW50OF90PikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25l
c3MoZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsZWFy
U2hhZG93KCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRDbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXBPdXRUb1BhdGgoY29uc3QgUGF0aCYpIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsK
KyAgICB2b2lkIHJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmlu
YWw7CisgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3UGF0dGVybihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgZmluYWw7CisgICAg
dm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
RHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
RHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dDIpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0
aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZERyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRHJhd1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkRHJhd0ZvY3VzUmluZ1BhdGgoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZz
ZXQsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUmVj
dHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBj
b25zdCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRo
R3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9k
ZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbDsK
KyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICB2b2lkIHJlY29yZEZpbGxMaW5lKGNv
bnN0IExpbmVEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsQXJjKGNvbnN0IEFyY0Rh
dGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZl
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbEJlemllckN1cnZlKGNvbnN0IEJlemll
ckN1cnZlRGF0YSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCByZWNvcmRGaWxsUGF0aChjb25z
dCBQYXRoJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9y
bWF0IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
UHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU3Ryb2tlUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgZmluYWw7CisjaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCisgICAgdm9pZCByZWNvcmRTdHJva2VMaW5lKGNvbnN0IExpbmVEYXRhJikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRTdHJva2VBcmMoY29uc3QgQXJjRGF0YSYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZFN0cm9rZUJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYpIGZp
bmFsOworI2VuZGlmCisgICAgdm9pZCByZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisjaWYg
VVNFKENHKQorICAgIHZvaWQgcmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkgZmluYWw7CisgICAg
dm9pZCByZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHJl
Y29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOworCisgICAgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3Vy
Y2VVc2UoRm9udCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZm
ZXImKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICBpZiAoVU5MSUtFTFkoIWNhbkFwcGVuZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2Rpc3BsYXlMaXN0LmFwcGVuZDxUPihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6
aXNEcmF3aW5nSXRlbSkgeworICAgICAgICAgICAgaWYgKExJS0VMWSghbV9kaXNwbGF5TGlzdC50
cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBhdXRvIGl0ZW0gPSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
ICAgICAgICAgICBpZiAoYXV0byByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcygqdGhpcykpCisgICAg
ICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudChleHRlbnRGcm9t
TG9jYWxCb3VuZHMoKnJlY3QpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0
ZW0uZ2xvYmFsQm91bmRzKCkpCisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3
aW5nSXRlbUV4dGVudCgqcmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudChzdGQ6Om51bGxvcHQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgRmxvYXRSZWN0IGV4dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkFwcGVuZEl0ZW1P
ZlR5cGUoSXRlbVR5cGUpIGNvbnN0OworCisgICAgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7
CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGUgeyBudWxscHRyIH07Cit9OworCit9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDQyZmM0MThjNzk4MjMzMTQ5NGVlMjc2YjZkYTQ5
OTRhMWU0Yzk5NmEuLjhjZWM5MjQyNjg3NTE0YzZjMmM3N2I3ODk4YzBhMzRjOTA3ZDViYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4gY2xhc3Mg
VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRU
eXBlPiwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRl
LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsK
ICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBlYjY2YmM0MDM1MTYyZjc0N2YzNzg4YWVkMDlhNmM0Y2Y0MThj
ZTIyLi5hNDlkOWFlMTEzNDQ0ZTQ2NzdlY2IxMmExNDExMmUyYmUwNjI0NzJiIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMjEtMTAtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3BsaXQgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGludG8gYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcyBhbmQgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMTAtMDcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gTGlicmFyeSBzaG91bGQgb3duIGNvbnRyaWJ1
dG9ycy5qc29uIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRl
c3RzQ0cuY3BwCmluZGV4IDhhOWJkNWQyZjIxNGU3ZmIzMDg1MDVlMjdiN2U3NzdlOWFmYzk5ZDYu
LjM0OWI2NTY1ODc4ZmE2MGExOGNjN2E1M2YxNjJmMzE4MjBlNTc2MDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2Fz
Y2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnRJbWFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KQEAgLTU1LDcgKzU1LDcgQEAgVEVTVChCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJjYXRlZENvbnRleHQpCiAgICAgR3Jh
cGhpY3NDb250ZXh0Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7CiAK
ICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IGRpc3BsYXlMaXN0OwotICAgIFJlY29yZGVyIHNlY29u
ZGFyeUNvbnRleHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0
aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHNlY29uZGFyeUNvbnRl
eHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4
dEhlaWdodCksIHsgfSk7CiAKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmlt
YXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKQEAgLTkxLDEwICs5MSwxMCBAQCBURVNU
KEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVkQ29udGV4dCkK
IFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29u
dGV4dCkKIHsKICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IHByaW1hcnlEaXNwbGF5TGlzdDsKLSAg
ICBSZWNvcmRlciBwcmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRS
ZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3Jk
ZXJJbXBsIHByaW1hcnlDb250ZXh0KHByaW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3Qo
MCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEluTWVtb3J5
RGlzcGxheUxpc3Qgc2Vjb25kYXJ5RGlzcGxheUxpc3Q7Ci0gICAgUmVjb3JkZXIgc2Vjb25kYXJ5
Q29udGV4dChzZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4
dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKKyAgICBSZWNvcmRlckltcGwgc2Vjb25kYXJ5
Q29udGV4dChzZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4
dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440618</attachid>
            <date>2021-10-08 08:30:36 -0700</date>
            <delta_ts>2021-10-08 09:45:01 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-231404-20211008083035.patch</filename>
            <type>text/plain</type>
            <size>102069</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg4NTRmMDA3MTA3ZDBh
OTYxNzBhODhmODk1Y2UzZDg3Nzg4YjJkMC4uY2Q3OWRiNDMwOTVjY2U0MDM5YjljOWU2ZmU2MGE1
Y2NjNTA1MzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAyMS0xMC0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tOgorCisgICAgICAgIENoYW5nZSB2YXJpb3VzIHVzZXMgb2YgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdD
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
CisgICAgICAgIFRoZSBhYnN0cmFjdCBSZWNvcmRlciBub3cgY29udGFpbnMgbG9naWMgZm9yIG1h
cHBpbmcgR3JhcGhpY3NDb250ZXh0IG1ldGhvZCBjYWxscyBpbnRvIGNhbGxzIHRvIHJlY29yZAor
ICAgICAgICBpbmRpdmlkdWFsIGRpc3BsYXkgbGlzdCBpdGVtcy4gTm90ZSB0aGF0IHdoaWxlIG1h
bnkgR3JhcGhpY3NDb250ZXh0IG1ldGhvZHMgY29ycmVzcG9uZCBkaXJlY3RseSB0byBkaXNwbGF5
IGxpc3QKKyAgICAgICAgaXRlbXMsIHNvbWUgbWV0aG9kcyBtYXAgdG8gb25lIG9yIG1vcmUgZGlz
cGxheSBsaXN0IGl0ZW1zLCBzdWNoIGFzIHNldHRpbmcgc3RhdGUgY29uc2lzdGluZyBvbmx5IG9m
IGlubGluZSBQT0QKKyAgICAgICAgZGF0YSBvciBkcmF3aW5nIHNpbXBsZSBwYXRocy4gVGhlIGJh
c2UgY2xhc3MgYWxzbyBtYW5hZ2VzIHVwZGF0aW5nIGFuZCBtYWludGFpbmluZyB0aGUgc3RhdGUg
c3RhY2sgKGEgbGlzdCBvZgorICAgICAgICBSZWNvcmRlcjo6Q29udGV4dFN0YXRlKSB3aGVuIG1v
ZGlmeWluZyBncmFwaGljcyBjb250ZXh0IHN0YXRlLgorCisgICAgICAgIEltcG9ydGFudGx5LCB0
aGlzIG1lYW5zIHRoYXQgdGhlIGFic3RyYWN0IFJlY29yZGVyIGNsYXNzIGRvZXMgbm90IGNvbnRh
aW4gZWl0aGVyIGEgUmVjb3JkZXIgRGVsZWdhdGUsIG5vciBkb2VzCisgICAgICAgIGl0IGNvbnRh
aW4gYSBEaXNwbGF5TGlzdC4gSW5zdGVhZCwgdGhlIGNvbmNyZXRlIHN1YmNsYXNzIChEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsKSBub3cgaG9sZHMgb24gdG8gdGhlIGxvY2FsCisgICAgICAgIERp
c3BsYXlMaXN0LgorCisgICAgICAgIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgc3ViY2xhc3NlcyBv
ZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0ICJyZWNvcmRp
bmciIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcyBnaXZlbiB0aGVpciBjb25zdGl0dWVudCBh
cmd1bWVudHMsIGluc3RlYWQgb2YgZGlyZWN0bHkgaW1wbGVtZW50aW5nIHRoZSBpbmRpdmlkdWFs
IEdyYXBoaWNzQ29udGV4dCBkcmF3aW5nCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjp+UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4
ZWxCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpwdXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNh
bkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRT
dGF0ZTo6Y2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjppc05lc3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVn
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
RGVsZWdhdGU6OmNhbkFwcGVuZEl0ZW1PZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRGb250VXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OnJlY29yZEltYWdlQnVmZmVyVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmbHVzaENvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBl
bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpp
dGVtTmVlZHNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpj
YW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZW5kZXJpbmdNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENv
bnRleHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBuZXN0ZWQgUmVjb3JkZXIgbG9naWMgdXNl
ZCBmb3IgYFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHNgLCBzdWNoIHRoYXQgaXQncyBu
b3cgYSBzZXBhcmF0ZQorICAgICAgICBvdmVycmlkZSBwb2ludC4gVGhpcyBhbGxvd3Mgc3ViY2xh
c3NlcyB0byBpbnN0YW50aWF0ZSBuZXN0ZWQgY29udGV4dHMgb2YgdGhlIHNhbWUgdHlwZSwgd2hp
bGUga2VlcGluZyB0aGUgbWFpbgorICAgICAgICBsb2dpYyBpbiBgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzYCBpbiB0aGUgc2hhcmVkIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUm90YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDb25j
YXRlbmF0ZUNUTSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkQ2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJh
d0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdFbGxpcHNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVj
dFdpdGhHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQ29tcG9zaXRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZEZpbGxBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVyQ3VydmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEVsbGlwc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkR2V0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJv
a2VBcmMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkU3Ryb2tlUXVhZEN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFN0cm9rZUJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlRWxsaXBzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
QXBwbHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpleHRl
bnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6On5EZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6RGVsZWdhdGU6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OnJlY29yZEltYWdlQnVmZmVyVXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZW5k
ZXJpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OmFwcGVuZCk6CisKIDIwMjEtMTAtMDcgIEFsZXhleSBTaHZheWthICA8
c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIGBoaWdoV2F0ZXJNYXJrYCBzaG91bGQg
YmUgYSByZWFkb25seSBXZWJJREwgYXR0cmlidXRlIG9mIHF1ZXVpbmcgc3RyYXRlZ2llcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlMWZhOWY2NmNhMGUxMWUxNWYzY2RiZjQ5MmVmNGMwN2RiZjZmN2E0Li5mMjY3YzY0
ZDA4NzFkZDljMDJlNDYwNDhlODM4NDg1OGEzMmYxMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFNwbGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0IGJh
c2UgY2xhc3MgYW5kIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oOgorCiAyMDIxLTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBVbmlxdWUgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDI6IFVucm9sbCBQZW5kaW5nV2FrZXVwSW5mb3Jt
YXRpb246OmFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzNGQ5MWNhZmU2ZmY1ZDM1ZTI2NmE0
NTJjZDNmZjUzMzY3MzBkNDczLi41YTc4ZjE5ZDJhZGI0ZDBkZmUxMTQ1YmVkZmU3MDRjZWU4NzI3
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODIzOGU3MzdiOWVhNDg5ZTg1
NDhjY2VmYTljMWZlYmRmNjg0NGM3Li43YTA0NTkyOWI3NmZjYmVlMzkxZWQyZTM0M2Y3MzQ5ZDI5
MGVjZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNzQsNyArMzc0LDcgQEAKIAkJMEZFNTgwNjQxOTMyN0E2MjAwREUzMkVC
IC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFj
LmggKi87IH07CiAJCTBGRTVGQkQzMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFNUZCRDcxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU1RkJE
OTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNUZCRDExQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFy
VGhlbWVNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggKi87IH07
CiAJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTUzOTMsNiArNTM5Myw3IEBACiAJCUY0MjBGMDBBMjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVy
RXZlbnRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MjBGMDA4MjVFNDc3OTEwMDkyNTFFRiAvKiBQb2ludGVyRXZlbnRUeXBlTmFtZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDI5
MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAw
MDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTk0RkEyNzBDRkU0ODAwMzIyOThCIC8qIEdy
YXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk0RjkyNzBDRkU0ODAwMzIyOThCIC8qIEdyYXBoaWNz
Q29udGV4dEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0Mjk5NTBGMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlz
dFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzNFOTAzMURC
QkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3Rh
dGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1
NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYz
RjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JD
bGlwYm9hcmQuaCAqLzsgfTsKQEAgLTY0MDIsOCArNjQwMyw4IEBACiAJCTBGRTVGQkNCMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJD
QzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0QxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU1RkJDRTFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0Eg
LyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCRDAxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZXBsYXllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlz
dFJlcGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0
UmVwbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNkM3NkIxRkJGQjdB
NjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9y
VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODAwLDYgKzE2
ODAxLDggQEAKIAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyog
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5OTRGOTI3MENGRTQ4MDAz
MjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0Mjk5NTBFMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNF
OTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODIwMyw4ICsxODIwNiwxMCBAQAogCQkJCUY0Mzc3RDU1MjU1
MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggKi8sCiAJCQkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovLAogCQkJCTFDRThE
MTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8sCi0JCQkJMEZF
NUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAotCQkJ
CTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCisJ
CQkJRjQyOTk1MEUyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICov
LAorCQkJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmgg
Ki8sCisJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcCAqLywKKwkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyog
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCkBAIC0zMjM1OCw3ICszMjM2Myw4IEBACiAJCQkJ
MEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdB
MkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0Mjk5NTBG
MjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUND
NjE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggY2E0ZTc3NzVlNzQ2Y2NjOTliMDc3
ZjIwYzY5NzE2Y2U4MjU4OTlkZi4uYWUwZDFhNzZmNjFjMjM2ZDliMTY4MTYwNDY1ZWUyMmNmZGYw
OGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRl
ICJET01NYXRyaXguaCIKICNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdy
YWRpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4MDZjMTc1Njk5MzgwYmE2ZC4u
NmM2OGU0NDU5OGJmOTg2NmU4MTY0ZDIzNTFiMmNiZDYzZTc1YTBkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjYsNyArMjYs
NyBAQAogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkNvbXBs
ZXhUZXh0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5
RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHJlY29yZGluZ0NvbnRl
eHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFu
c2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb246OkRvbnREZWNvbnN0cnVjdCk7CisgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBy
ZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3Qo
KSwgQWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOwogICAgIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmlu
aXRpYWxBZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwg
Z2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA2MWJiNWZjZGE4OTQwMmZhYTJjYzU3Y2M1OWFmOThkMjc1MDdmYzNlLi4y
ZDJmMTFhNDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0EpCiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIK
LSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0xODA0LDcg
KzE4MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhD
b21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgICAgICAKICAgICAgICAgRmxv
YXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCi0gICAgICAgIERp
c3BsYXlMaXN0OjpSZWNvcmRlciBjb250ZXh0KCptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIGNvbnRleHQoKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIHBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiNjU2ZjEzNjgxNjI0
N2E0NmFjZGNkYTU5OWJiNmQ0MWRkODA5M2E5Li40NDEwMzhlZDhmYjAyMjIzMjdmNDhlNjU2ZWVk
Nzg1YzI0MmYzMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaWYg
VVNFKENHKQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRDb2NvYS5tbQppbmRleCAzODhhZmNkNmY0NmFmYzQ1MjIxZjgwNzFkMzUwOTY3ZjBlNTM1NTBk
Li43NWUxZjk0YjJiNGY2OWIzMTg5YzRjNDI2MTdhYjE5MDgzYWRjYTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRDb2NvYS5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKIAotI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRl
ci5oIgorI2ltcG9ydCAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyMjY4
NGRjMzk4ZTFlZjUyYzFiZDk2NmZmNDUwMzcyMzdkY2YyYWVmLi44OTg2ZThjMzI5ZjBhMTFlODQ4
MzAxMTk5NWIzNmQzYmExNjE3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTQsNyAr
NTQsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEFzVGV4dEZsYWdzOwogCiBjbGFzcyBEaXNwbGF5TGlz
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3QpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXI7CisgICAgZnJpZW5kIGNsYXNz
IFJlY29yZGVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5ZXI7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgRGlzcGxheUxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAzOTU3YzQ1NzZmZTkxMmQ2ODEwMjA3NjEw
MDFjYzI0ZjY4Njg4NjJhLi4zNjJkNDM2NzUyYWM3M2E5YmMzYjNjYzhjMDU2YWE0ZDdmMDdiMjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
CkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNs
dWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxD
VE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitEcmF3aW5nQ29udGV4dDo6RHJhd2lu
Z0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6
IG1fY29udGV4dChtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVnYXRlKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggOTY1NjM2MzRk
NTdmNDA5NGIzYzJjYmE2ZjA2NzQwZjUwNjNkZDRiZi4uMTdmMjJlOTAzZWE2MGQwOWU5MGUyMGMz
ZTk3YmMxM2JjYWM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICszNywxMCBAQCBjbGFzcyBJbk1l
bW9yeURpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXJJbXBsOjpEZWxl
Z2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0OyB9
Ci0gICAgUmVjb3JkZXImIHJlY29yZGVyKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9OworICAgIFJl
Y29yZGVySW1wbCYgcmVjb3JkZXIoKSB7IHJldHVybiBtX2NvbnRleHQ7IH07CiAgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlM
aXN0LCB7IH0pOyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0Jik7
CiAKIHByb3RlY3RlZDoKLSAgICBSZWNvcmRlciBtX2NvbnRleHQ7CisgICAgUmVjb3JkZXJJbXBs
IG1fY29udGV4dDsKICAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlMaXN0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbk1lbW9yeURpc3BsYXlMaXN0PiBtX3JlcGxheWVkRGlzcGxheUxpc3Q7CiAgICAg
Ym9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDBiMzVhZjU0MGMxNGRjYmRiZjdiZWM2
OWNhZmQ2MDZiMzJlNTVmMGYuLjQ2ZTlmYTg2YWFiNmJhNDQ5NWNjNDZhZGI3NmFmNDY3ZmU1YmEz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwogICAg
IH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCisg
ICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0ZSA9IG51bGxwdHIpCiAgICAg
ICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVycykKICAgICAgICAgLCBtX2Ry
YXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSwgZGVsZWdhdGUpCiAg
ICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3BsYXlM
aXN0OjpXcml0aW5nQ2xpZW50PigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDkzYmE2NTAyYWI2YmE0ZjMzMWNmZWU5NjNjMTllMzMwMmU5NWZiNmEuLjcz
MjA5NTM3M2FkN2ZhYjc3ZDg4NmExYTBjMDk3ZjQ2ZTFkMzk4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDIxICs0MCwxNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVy
KERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCitSZWNv
cmRlcjo6UmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbikKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3
R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKIHsKLSAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5nIHdpdGgg
Y2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUs
IGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNvcmRlcjo6UmVjb3JkZXIoUmVj
b3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
Ci0gICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQotICAgICwgbV9kZWxl
Z2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlz
LCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkp
CiAgICAgLCBtX2lzTmVzdGVkKHRydWUpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhp
cywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigp
KQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlh
bENsaXAgfSk7CiB9CkBAIC02MiwxOCArNTcsNiBAQCBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3Jk
ZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbAog
UmVjb3JkZXI6On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkg
PT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUvcmVz
dG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExPRyhEaXNwbGF5TGlzdHMsICJS
ZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24oKS5k
YXRhKCkpOwotfQotCi12b2lkIFJlY29yZGVyOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQotewot
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKLX0K
LQotdm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi17Ci0gICAgYXBwZW5kPFB1dFBp
eGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsK
IH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKQEAgLTk2LDM3ICs3OSwyNSBAQCBzdGF0aWMg
Ym9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVyOjpy
ZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKG1fZGVs
ZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsK
LSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotfQotCiB2b2lkIFJl
Y29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNo
YW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNo
YW5nZXMsIGNoYW5nZUZsYWdzKSkgewogICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdl
cy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVz
ZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2Vz
Lm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNvcmROYXRpdmVJbWFnZVVzZShw
YXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5t
X3N0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZShwYXR0
ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIHJlY29yZFNldFN0YXRlKGNoYW5nZXMubV9zdGF0
ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkp
Ci0gICAgICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKmNoYW5nZXMubV9zdGF0ZS5z
dHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAgICAgIHJlY29yZFNldElubGlu
ZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5
dGVzKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0U3Ryb2tlVGhp
Y2tuZXNzPihjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgcmVjb3Jk
U2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29s
b3JDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPigqY2hhbmdlcy5t
X3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7Ci19Ci0KLWJvb2wgUmVjb3Jk
ZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKLXsKLSAgICByZXR1
cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBlKTsK
KyAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuZmlsbENv
bG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQpAQCAtMTUyLDM0ICsxMjMsMjQgQEAgdm9pZCBSZWNv
cmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5hY2N1bXVsYXRl
KHN0YXRlLCBmbGFncyk7CiB9CiAKLWJvb2wgUmVjb3JkZXI6OmNhbkRyYXdJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2Rl
bGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwot
fQotCi1SZW5kZXJpbmdNb2RlIFJlY29yZGVyOjpyZW5kZXJpbmdNb2RlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OnNldExpbmVDYXAo
TGluZUNhcCBsaW5lQ2FwKQogewotICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5lQ2FwKTsKKyAg
ICByZWNvcmRTZXRMaW5lQ2FwKGxpbmVDYXApOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRMaW5l
RGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hBcnJheSwgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAg
ICBhcHBlbmQ8U2V0TGluZURhc2g+KGRhc2hBcnJheSwgZGFzaE9mZnNldCk7CisgICAgcmVjb3Jk
U2V0TGluZURhc2goZGFzaEFycmF5LCBkYXNoT2Zmc2V0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZUpvaW4oTGluZUpvaW4gbGluZUpvaW4pCiB7Ci0gICAgYXBwZW5kPFNldExpbmVKb2lu
PihsaW5lSm9pbik7CisgICAgcmVjb3JkU2V0TGluZUpvaW4obGluZUpvaW4pOwogfQogCiB2b2lk
IFJlY29yZGVyOjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyTGltaXQpCiB7Ci0gICAgYXBwZW5k
PFNldE1pdGVyTGltaXQ+KG1pdGVyTGltaXQpOworICAgIHJlY29yZFNldE1pdGVyTGltaXQobWl0
ZXJMaW1pdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0xODksMzkgKzE1MCw0
MCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29ucwogCiB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7Ci0gICAgYXBwZW5kPERyYXdHbHlwaHM+
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9k
ZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRS
ZXNvdXJjZVVzZShjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgcmVjb3JkRHJhd0dseXBo
cyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01v
ZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGlt
YWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogeworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJl
Y29yZEltYWdlQnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGlt
YWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisKKyAgICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAg
cmVjb3JkRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJlY29yZE5h
dGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZSk7CisgICAgcmVjb3JkRHJhd05hdGl2ZUltYWdlKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICByZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgYXBwZW5kPERyYXdQYXR0ZXJu
PihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFJlc291
cmNlVXNlKGltYWdlKTsKKyAgICByZWNvcmREcmF3UGF0dGVybihpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2F2ZSgpCiB7Ci0gICAgYXBwZW5kPFNhdmU+KCk7CisgICAgcmVjb3JkU2F2ZSgpOwogICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclNhdmUoKSk7CiB9
CiAKQEAgLTIzMSwyNSArMTkzLDI1IEBAIHZvaWQgUmVjb3JkZXI6OnJlc3RvcmUoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIGFwcGVuZDxS
ZXN0b3JlPigpOworICAgIHJlY29yZFJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6dHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgY3VycmVudFN0YXRlKCkudHJhbnNsYXRl
KHgsIHkpOwotICAgIGFwcGVuZDxUcmFuc2xhdGU+KHgsIHkpOworICAgIHJlY29yZFRyYW5zbGF0
ZSh4LCB5KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnJvdGF0ZShhbmdsZUluUmFkaWFucyk7Ci0gICAgYXBw
ZW5kPFJvdGF0ZT4oYW5nbGVJblJhZGlhbnMpOworICAgIHJlY29yZFJvdGF0ZShhbmdsZUluUmFk
aWFucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBjdXJyZW50U3RhdGUoKS5zY2FsZShzaXplKTsKLSAgICBhcHBlbmQ8U2NhbGU+KHNp
emUpOworICAgIHJlY29yZFNjYWxlKHNpemUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCkBAIC0yNTgsMTMgKzIyMCwxMyBA
QCB2b2lkIFJlY29yZGVyOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGN1cnJlbnRTdGF0ZSgpLmNvbmNhdENUTSh0cmFu
c2Zvcm0pOwotICAgIGFwcGVuZDxDb25jYXRlbmF0ZUNUTT4odHJhbnNmb3JtKTsKKyAgICByZWNv
cmRDb25jYXRlbmF0ZUNUTSh0cmFuc2Zvcm0pOwogfQogCiB2b2lkIFJlY29yZGVyOjpzZXRDVE0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgY3VycmVudFN0YXRlKCku
c2V0Q1RNKHRyYW5zZm9ybSk7Ci0gICAgYXBwZW5kPFNldENUTT4odHJhbnNmb3JtKTsKKyAgICBy
ZWNvcmRTZXRDVE0odHJhbnNmb3JtKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpn
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CkBAIC0yNzUs
NTQgKzIzNyw2NCBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6OmdldENUTShHcmFwaGljc0Nv
bnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewotICAgIGFwcGVuZDxCZWdpblRyYW5z
cGFyZW5jeUxheWVyPihvcGFjaXR5KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkK
IHsKLSAgICBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewot
ICAgIGFwcGVuZDxEcmF3UmVjdD4ocmVjdCwgYm9yZGVyVGhpY2tuZXNzKTsKKyAgICBhcHBlbmRT
dGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdSZWN0KHJlY3QsIGJv
cmRlclRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKQogewotICAgIGFwcGVuZDxE
cmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9h
dCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29s
IGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkKIHsKLSAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4
dD4oRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2ludCksIHRoaWNrbmVzcywgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChGbG9hdFBvaW50KCksIHRvRmxvYXRT
aXplKHBvaW50KSwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSBzdHlsZSkKIHsKLSAgICBhcHBlbmQ8
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVjdCwgc3R5bGUpOworICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcihyZWN0LCBzdHlsZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RHJhd0VsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0VsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7Ci0gICAgYXBwZW5kPERyYXdQYXRoPihwYXRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdQYXRoKHBhdGgpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmlu
Z1BhdGg+KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKHBhdGgsIHdp
ZHRoLCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQs
IGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihy
ZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlm
TmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKHJlY3RzLCB3aWR0aCwg
b2Zmc2V0LCBjb2xvcik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMzksMTIyICszMTEs
MTM2IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUsIGJvb2wmLCBjb25zdCBDb2xvCiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOwor
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJl
Y3QocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xv
cj4ocmVjdCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IocmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVu
dCkKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsK
KyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxS
ZWN0V2l0aEdyYWRpZW50KHJlY3QsIGdyYWRpZW50KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGFwcGVuZDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChy
ZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4ocmVj
dCwgY29sb3IsIGJsZW5kTW9kZSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nh
cnkoKTsKKyAgICByZWNvcmRGaWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7
CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1J
Zk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHJlY3QsIHJv
dW5kZWRIb2xlUmVjdCwgY29sb3IpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogeworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0
YSgpKSB7CiAgICAgICAgIGlmIChwYXRoLmhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAg
ICAgICAgICBhcHBlbmQ8RmlsbExpbmU+KHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKSk7Cisg
ICAgICAgICAgICByZWNvcmRGaWxsTGluZShwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCkpOwog
ICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8QXJjRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxGaWxsQXJjPihwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CisgICAgICAg
ICAgICByZWNvcmRGaWxsQXJjKHBhdGguaW5saW5lRGF0YTxBcmNEYXRhPigpKTsKICAgICAgICAg
ZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpCi0gICAgICAgICAg
ICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4ocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkp
OworICAgICAgICAgICAgcmVjb3JkRmlsbFF1YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1
cnZlRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8RmlsbEJlemllckN1cnZlPihwYXRoLmlu
bGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxCZXpp
ZXJDdXJ2ZShwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgotICAgIGFwcGVuZDxGaWxsUGF0aD4ocGF0aCk7CisgICAgcmVj
b3JkRmlsbFBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBhcHBlbmQ8RmlsbEVsbGlwc2U+KHJlY3QpOworICAg
IGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbEVsbGlw
c2UocmVjdCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiB7Ci0gICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3Qs
IGxpbmVXaWR0aCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAg
ICByZWNvcmRTdHJva2VSZWN0KHJlY3QsIGxpbmVXaWR0aCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChw
YXRoLmhhc0lubGluZURhdGEoKSkgewogICAgICAgICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPExp
bmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUxpbmU+KHBhdGguaW5saW5lRGF0
YTxMaW5lRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VMaW5lKHBhdGguaW5saW5l
RGF0YTxMaW5lRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxB
cmNEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZUFyYz4ocGF0aC5pbmxpbmVEYXRh
PEFyY0RhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQXJjKHBhdGguaW5saW5lRGF0
YTxBcmNEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPFF1YWRD
dXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZlPihwYXRoLmlu
bGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VRdWFk
Q3VydmUocGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlm
IChwYXRoLmhhc0lubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBw
ZW5kPFN0cm9rZUJlemllckN1cnZlPihwYXRoLmlubGluZURhdGE8QmV6aWVyQ3VydmVEYXRhPigp
KTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUJlemllckN1cnZlKHBhdGguaW5saW5lRGF0YTxC
ZXppZXJDdXJ2ZURhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
YXBwZW5kPFN0cm9rZVBhdGg+KHBhdGgpOworICAgIHJlY29yZFN0cm9rZVBhdGgocGF0aCk7CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OnN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIGFwcGVuZDxTdHJva2VFbGxpcHNlPihyZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZFN0cm9rZUVsbGlwc2UocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
YXBwZW5kPENsZWFyUmVjdD4ocmVjdCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNl
c3NhcnkoKTsKKyAgICByZWNvcmRDbGVhclJlY3QocmVjdCk7CiB9CiAKICNpZiBVU0UoQ0cpCiB2
b2lkIFJlY29yZGVyOjphcHBseVN0cm9rZVBhdHRlcm4oKQogewotICAgIGFwcGVuZDxBcHBseVN0
cm9rZVBhdHRlcm4+KCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsK
KyAgICByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBw
bHlGaWxsUGF0dGVybigpCiB7Ci0gICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRBcHBseUZpbGxQ
YXR0ZXJuKCk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5kcy5pbnRlcnNlY3QocmVj
dCk7Ci0gICAgYXBwZW5kPENsaXA+KHJlY3QpOworICAgIHJlY29yZENsaXAocmVjdCk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFw
cGVuZDxDbGlwT3V0PihyZWN0KTsKKyAgICByZWNvcmRDbGlwT3V0KHJlY3QpOwogfQogCiB2b2lk
IFJlY29yZGVyOjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiB7Ci0gICAgYXBwZW5kPENsaXBP
dXRUb1BhdGg+KHBhdGgpOworICAgIHJlY29yZENsaXBPdXRUb1BhdGgocGF0aCk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBhdGguZmFzdEJv
dW5kaW5nUmVjdCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHdpbmRSdWxlKTsKKyAg
ICByZWNvcmRDbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CiB9CiAKIEludFJlY3QgUmVjb3JkZXI6
OmNsaXBCb3VuZHMoKSBjb25zdApAQCAtNDY0LDEwICs0NTAsOCBAQCBJbnRSZWN0IFJlY29yZGVy
OjpjbGlwQm91bmRzKCkgY29uc3QKIAogdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZl
clVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKLSAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CisgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoaW1hZ2VCdWZmZXIpOworICAgIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKQEAgLTQ4MywxMCArNDY3LDEwIEBAIEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVyOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uCiAgICAgaW5pdGlhbENUTS50cmFuc2xhdGUoMCwgLXNjYWxlZFNpemUuaGVp
Z2h0KCkpOwogICAgIGluaXRpYWxDVE0uc2NhbGUoc2NhbGVkU2l6ZSAvIGRlc3RpbmF0aW9uLnNp
emUoKSk7CiAKLSAgICBSZWNvcmRlciBuZXN0ZWRDb250ZXh0KCp0aGlzLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7Ci0gICAgYXBwZW5kPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Ci0gICAgZHJhd2lu
Z0Z1bmN0aW9uKG5lc3RlZENvbnRleHQpOwotICAgIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KGRlc3RpbmF0aW9uKTsKKyAgICBhdXRvIG5lc3RlZENvbnRleHQgPSBjcmVhdGVOZXN0
ZWRDb250ZXh0KGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKKyAgICByZWNvcmRCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyhkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7CisgICAgZHJhd2luZ0Z1
bmN0aW9uKCpuZXN0ZWRDb250ZXh0KTsKKyAgICByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZGVzdGluYXRpb24pOwogCiAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6U3VjY2VzczsKIH0KQEAgLTQ5OSw3ICs0ODMsNyBAQCB2b2lkIFJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwbGF5ZXIuaWRlbnRpZmllcigp
KTsKLSAgICBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsK
KyAgICByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbik7CiB9CiAj
ZW5kaWYKIApAQCAtNTA3LDcgKzQ5MSw3IEBAIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
Y2hhbmdlcyB0aGUgYmFzZUNUTSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2Fj
aGVkIGV4dGVudHMuCiAgICAgLy8gQXNzZXJ0IHRoYXQgaXQncyBvbmx5IGNhbGxlZCBlYXJseSBv
bj8KLSAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiBGbG9hdFJlY3QgUmVjb3JkZXI6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkKQEAgLTUyNiwyNSArNTEw
LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4dGVudChmbG9hdCBibHVy
UmFkaXVzKQogICAgIHJldHVybiBjZWlsZihibHVyUmFkaXVzICogcmFkaXVzRXh0ZW50TXVsdGlw
bGllcik7CiB9CiAKLUZsb2F0UmVjdCBSZWNvcmRlcjo6ZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICBGbG9hdFJlY3QgYm91bmRzID0gcmVj
dDsKLSAgICBjb25zdCBDb250ZXh0U3RhdGUmIHN0YXRlID0gY3VycmVudFN0YXRlKCk7Ci0KLSAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKLSAgICBD
b2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9
IGJvdW5kczsKLSAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKLSAgICAg
ICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVz
KSk7Ci0gICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOwotICAgIH0KLSAgICAKLSAg
ICBGbG9hdFJlY3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91bmRz
LCBib3VuZHMpOwotICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50KTsK
LX0KLQogY29uc3QgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZSYgUmVjb3JkZXI6OmN1cnJlbnRTdGF0
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYWU5NmY2ZTc3ZDY2ZWQ3MGQxNTI0ZjNl
MWMwNWEzMTFmMmNmMTk5MC4uOWJmMzViNWRkODBhNWQ0ODI4Y2EwYTE0NjVhMjJkMmYxYTdlMzVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KKyNp
bmNsdWRlICJJbmxpbmVQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC01NCwzNiArNTUsMTM5IEBAIGNsYXNzIFJlY29y
ZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNs
YXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0Jiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CisgICAgdmlydHVhbCB2
b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNo
SWRlbnRpZmllcikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3Jk
ZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0p
OworCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNhdmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc3RvcmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJvdGF0ZShmbG9h
dCBhbmdsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTY2FsZShjb25zdCBGbG9hdFNp
emUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0SW5saW5l
RmlsbENvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZVN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lRGFz
aChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZFNldE1pdGVyTGltaXQoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xl
YXJTaGFkb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRS
ZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVj
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvblJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91
dFRvUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBv
aW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRp
b24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZs
b2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERy
YXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBm
bG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRG
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZp
bGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhHcmFkaWVudChjb25zdCBGbG9hdFJlY3Qm
LCBHcmFkaWVudCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbENvbXBvc2l0ZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpID0gMDsKKyNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbExpbmUoY29u
c3QgTGluZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3Qg
QXJjRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25z
dCBRdWFkQ3VydmVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQmV6aWVy
Q3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRQdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0KSA9IDA7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0
YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3Qg
QmV6aWVyQ3VydmVEYXRhJikgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0
cm9rZVBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tl
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENs
ZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisjaWYgVVNFKENHKQorICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEFwcGx5RmlsbFBhdHRlcm4oKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNv
dXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1h
Z2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSA9
IDA7CisKKyAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGN0bTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZSBsYXN0RHJhd2luZ1N0YXRlOworCisgICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCisgICAg
ICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKKyAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0
ZShzdGF0ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ29udGV4dFN0YXRlIGNs
b25lRm9yU2F2ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIENvbnRleHRTdGF0ZSBz
dGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOworICAgICAgICAgICAgc3Rh
dGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsK
KyAgICAgICAgfQogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
TGlzdC5pc0VtcHR5KCk7IH0KKyAgICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJl
bmN5TGF5ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xv
bmVGb3JTYXZlKCk7CisgICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0g
MTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICAgICAgfQogCi0gICAgY2xhc3MgRGVs
ZWdhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRp
dmVJbWFnZSYpIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihj
b25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRGb250VXNlKEZvbnQmKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEltYWdlQnVmZmVyVXNlKEltYWdlQnVmZmVyJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsgfQorICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5
KTsKKyAgICAgICAgdm9pZCByb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOworICAgICAgICB2
b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAgICAgfTsKIAotICAgIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4
dEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50
aWZpZXIpOyB9CisgICAgY29uc3QgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4mIHN0YXRlU3RhY2so
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2s7IH0KKyAgICBib29sIGlzTmVzdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc05lc3RlZDsgfQogCi1wcml2YXRlOgotICAgIFJlY29yZGVyKFJlY29y
ZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKKyAgICBj
b25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OworICAgIENvbnRleHRTdGF0
ZSYgY3VycmVudFN0YXRlKCk7CiAKK3ByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIEZJWE1FOiBNYXliZSBy
ZW1vdmUgdGhpcz8KLSAgICBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZl
ciYpIGNvbnN0OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkK
ICAgICB2b2lkIHNldElzQ0FMYXllckNvbnRleHQoYm9vbCkgZmluYWwgeyB9CkBAIC05NCwxODQg
KzE5OCw5NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0SW1wbChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCwg
Ym9vbCwgU3Ryb2tlU3R5bGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAg
IGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOwotICAgIHZvaWQgc2V0TGluZURhc2goY29uc3Qg
RGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7Ci0gICAgdm9pZCBzZXRMaW5lSm9p
bihMaW5lSm9pbikgZmluYWw7Ci0gICAgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBk
YXNoT2Zmc2V0KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExpbmVKb2luKExp
bmVKb2luKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pdGVyTGltaXQoZmxv
YXQpIGZpbmFsOwogCi0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
LSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWw7
Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYpIGZpbmFsOwot
ICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwotICAgIHZvaWQgZmlsbEVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JikgZmluYWw7Ci0gICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFBhdGgoY29uc3Qg
UGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKICNpZiBV
U0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIGZp
bmFsOwotICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKIAot
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFBvaW50JikgZmluYWw7Ci0gICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9p
bnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50
aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBm
bG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBi
b29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYsIERvY3VtZW50
TWFya2VyTGluZVN0eWxlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0aChjb25zdCBQ
YXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UGF0aChjb25zdCBQYXRo
JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3Rm9j
dXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3Im
KSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgUGF0aCYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywgY29uc3QgQ29s
b3ImKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgm
LCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBD
b2xvciYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmUoKSBmaW5hbDsKLSAgICB2b2lk
IHJlc3RvcmUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmUoKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKSBmaW5hbDsKIAotICAgIHZvaWQgdHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOwotICAgIHZvaWQgcm90YXRlKGZsb2F0IGFu
Z2xlSW5SYWRpYW5zKSBmaW5hbDsKLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpIGZp
bmFsOwotICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOwotICAgIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xl
SW5SYWRpYW5zKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjYWxlKGNvbnN0IEZs
b2F0U2l6ZSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uY2F0Q1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmlu
ZVRyYW5zZm9ybSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNv
bnN0IGZpbmFsOwogCi0gICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpIGZpbmFsOwotICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIGZp
bmFsOwogCi0gICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQg
Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBPdXQoY29uc3Qg
UGF0aCYpIGZpbmFsOwotICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBm
aW5hbDsKLSAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcChjb25zdCBG
bG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBPdXQoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBh
dGgmLCBXaW5kUnVsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjbGlwQm91
bmRzKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7Ci0KLSAgICBGbG9hdFJlY3Qgcm91bmRUb0Rl
dmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9k
ZSkgZmluYWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFjYW5BcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgY29uc3RleHByIChpdGVtTmVlZHNTdGF0ZTxUPigpKQotICAgICAgICAg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBtX2Rpc3Bs
YXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKLSAg
ICAgICAgaWYgY29uc3RleHByIChUOjppc0RyYXdpbmdJdGVtKSB7Ci0gICAgICAgICAgICBpZiAo
TElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGF1dG8gaXRlbSA9IFQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHJlY3QgPSBpdGVtLmxv
Y2FsQm91bmRzKCp0aGlzKSkKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdp
bmdJdGVtRXh0ZW50KGV4dGVudEZyb21Mb2NhbEJvdW5kcygqcmVjdCkpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKLSAgICAgICAgICAgICAg
ICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50
KHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXRlbU5lZWRzU3RhdGUoKTsK
LQotICAgIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3Qgcm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0NvbnRleHQ6OlJvdW5kaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKLSAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2Fs
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIAogICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgY3RtKCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgQ29udGV4dFN0YXRlIHsKLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKLSAgICAgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHM7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwotICAgICAgICAKLSAgICAgICAg
Q29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKLSAgICAgICAg
ICAgIDogY3RtKHRyYW5zZm9ybSkKLSAgICAgICAgICAgICwgY2xpcEJvdW5kcyhjbGlwKQotICAg
ICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBDb250ZXh0U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwg
Y3RtLCBjbGlwQm91bmRzKTsKLSAgICAgICAgICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVD
aGFuZ2U7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICBD
b250ZXh0U3RhdGUgY2xvbmVGb3JUcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBjbG9uZUZvclNhdmUoKTsKLSAgICAgICAgICAgIHN0
YXRlLmxhc3REcmF3aW5nU3RhdGUuYWxwaGEgPSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRl
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7
Ci0gICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICAgICAgdm9p
ZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKLSAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotICAgIH07Ci0gICAgCi0gICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3Rh
dGUoKSBjb25zdDsKLSAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwotCi0gICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7Ci0gICAg
Ym9vbCBtX2lzTmVzdGVkOwotCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgND4gbV9zdGF0ZVN0
YWNrOwotCiAgICAgRHJhd0dseXBoc1JlY29yZGVyIG1fZHJhd0dseXBoc1JlY29yZGVyOworICAg
IGJvb2wgbV9pc05lc3RlZCB7IGZhbHNlIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y29uc3RleHByIGJvb2wgUmVjb3JkZXI6Oml0ZW1OZWVkc1N0YXRlKCkKLXsKLSAgICBpZiAoVDo6
aXNEcmF3aW5nSXRlbSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSNpZiBVU0UoQ0cpCi0gICAg
aWYgKFQ6Oml0ZW1UeXBlID09IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuIHx8IFQ6Oml0ZW1U
eXBlID09IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm4pCi0gICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNl
IERpc3BsYXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmODJmOTEwMTU3ZGZj
YjUwM2MzNzJjY2IzM2Y4ZTRlNWExMjk1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwCkBAIC0wLDAgKzEsNDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVjb3JkZXIuaCIKKworI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3REcmF3aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CisKK1JlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERl
bGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgIDogUmVjb3JkZXIoc3RhdGUsIGlu
aXRpYWxDbGlwLCBpbml0aWFsQ1RNLCBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgLCBt
X2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQorICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgIlxuUmVjb3JkaW5n
IHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKK30KKworUmVjb3JkZXJJbXBsOjpSZWNvcmRl
ckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBpbml0aWFsQ1RNKQorICAgIDogUmVjb3JkZXIocGFyZW50LCBzdGF0ZSwgaW5pdGlhbENsaXAs
IGluaXRpYWxDVE0pCisgICAgLCBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlMaXN0KQor
ICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKK3sKK30KKworUmVjb3JkZXJJbXBs
Ojp+UmVjb3JkZXJJbXBsKCkKK3sKKyAgICBBU1NFUlQoc3RhdGVTdGFjaygpLnNpemUoKSA9PSAx
KTsgLy8gSWYgdGhpcyBmaXJlcywgaXQgaW5kaWNhdGVzIG1pc21hdGNoZWQgc2F2ZS9yZXN0b3Jl
LgorICAgIGlmICghaXNOZXN0ZWQoKSkKKyAgICAgICAgTE9HKERpc3BsYXlMaXN0cywgIlJlY29y
ZGVkIGRpc3BsYXkgbGlzdDpcbiVzIiwgbV9kaXNwbGF5TGlzdC5kZXNjcmlwdGlvbigpLmRhdGEo
KSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQorewor
ICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCBzb3VyY2VSZWN0KTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBw
aXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQoreworICAgIGFwcGVuZDxQ
dXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1h
dCk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBl
IHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmNh
bkFwcGVuZEl0ZW1PZlR5cGUodHlwZSk7Cit9CisKK2Jvb2wgUmVjb3JkZXJJbXBsOjpjYW5EcmF3
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdAoreworICAg
IHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5pc0NhY2hlZEltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyKTsKK30KKworUmVuZGVyaW5nTW9kZSBSZWNvcmRlckltcGw6OnJlbmRlcmluZ01v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVy
aW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKK30KKworc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlckltcGw+KCp0aGlzLCBH
cmFwaGljc0NvbnRleHRTdGF0ZSB7IH0sIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNhdmUoKQoreworICAgIGFwcGVuZDxTYXZlPigpOwor
fQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzdG9yZSgpCit7CisgICAgYXBwZW5kPFJl
c3RvcmU+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRUcmFuc2xhdGUoZmxvYXQg
eCwgZmxvYXQgeSkKK3sKKyAgICBhcHBlbmQ8VHJhbnNsYXRlPih4LCB5KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFJvdGF0ZShmbG9hdCBhbmdsZSkKK3sKKyAgICBhcHBlbmQ8Um90
YXRlPihhbmdsZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTY2FsZShjb25zdCBG
bG9hdFNpemUmIHNjYWxlKQoreworICAgIGFwcGVuZDxTY2FsZT4oc2NhbGUpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKQoreworICAgIGFwcGVuZDxTZXRDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKK3sKKyAgICBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KHRyYW5zZm9ybSk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4g
aW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oaW5saW5lQ29s
b3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3Io
U1JHQkE8dWludDhfdD4gaW5saW5lQ29sb3IpCit7CisgICAgYXBwZW5kPFNldElubGluZVN0cm9r
ZUNvbG9yPihpbmxpbmVDb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQoreworICAgIGFwcGVuZDxTZXRTdHJva2VU
aGlja25lc3M+KHRoaWNrbmVzcyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQoreworICAgIGFwcGVuZDxTZXRTdGF0
ZT4oc3RhdGUsIGNoYW5nZUZsYWdzKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNl
dExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQoreworICAgIGFwcGVuZDxTZXRMaW5lQ2FwPihsaW5l
Q2FwKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldExpbmVEYXNoKGNvbnN0IERh
c2hBcnJheSYgYXJyYXksIGZsb2F0IGRhc2hPZmZzZXQpCit7CisgICAgYXBwZW5kPFNldExpbmVE
YXNoPihhcnJheSwgZGFzaE9mZnNldCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRMaW5lSm9pbihMaW5lSm9pbiBqb2luKQoreworICAgIGFwcGVuZDxTZXRMaW5lSm9pbj4oam9p
bik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0IGxp
bWl0KQoreworICAgIGFwcGVuZDxTZXRNaXRlckxpbWl0PihsaW1pdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGVhclNoYWRvdygpCit7CisgICAgYXBwZW5kPENsZWFyU2hhZG93
PigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3Qm
IGNsaXBSZWN0KQoreworICAgIGFwcGVuZDxDbGlwPihjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCit7Cisg
ICAgYXBwZW5kPENsaXBPdXQ+KGNsaXBSZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZENsaXBUb0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAg
IGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBkZXN0aW5h
dGlvblJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dFRvUGF0aChj
b25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihwYXRoKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIHJ1bGUpCit7CisgICAgYXBwZW5kPENsaXBQYXRoPihwYXRoLCBydWxlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQoreworICAgIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24s
IGNvbG9yU3BhY2UpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgYXBwZW5k
PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGlu
Z01vZGUgbW9kZSkKK3sKKyAgICBhcHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBtb2RlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05h
dGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGFwcGVuZDxE
cmF3UGF0dGVybj4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCit7Cisg
ICAgYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KG9wYWNpdHkpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQoreworICAgIGFwcGVuZDxF
bmRUcmFuc3BhcmVuY3lMYXllcj4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQoreworICAgIGFw
cGVuZDxEcmF3UmVjdD4ocmVjdCwgbGluZVdpZHRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQyKQoreworICAgIGFwcGVuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0
aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRv
dWJsZUxpbmVzKQoreworICAgIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihibG9ja0xvY2F0aW9u
LCBsb2NhbEFuY2hvciwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcyk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmIHN0
eWxlKQoreworICAgIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihyZWN0LCBzdHls
ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPERyYXdFbGxpcHNlPihyZWN0KTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAg
YXBwZW5kPERyYXdQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERy
YXdGb2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZz
ZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RHJhd0ZvY3VzUmluZ1BhdGg+
KHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZERyYXdGb2N1c1JpbmdSZWN0cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZs
b2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBl
bmQ8RHJhd0ZvY3VzUmluZ1JlY3RzPihyZWN0cywgd2lkdGgsIG9mZnNldCwgY29sb3IpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQoreworICAgIGFwcGVuZDxGaWxsUmVjdD4ocmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KHJlY3QsIGNvbG9y
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQoreworICAgIGFwcGVuZDxG
aWxsUmVjdFdpdGhHcmFkaWVudD4ocmVjdCwgZ3JhZGllbnQpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUpCit7
CisgICAgYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4ocmVjdCwgY29sb3IsIG9wLCBtb2RlKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIEJsZW5kTW9kZSBtb2RlKQor
eworICAgIGFwcGVuZDxGaWxsUm91bmRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBtb2RlKTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KHJl
Y3QsIHJvdW5kZWRSZWN0LCBjb2xvcik7Cit9CisKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxMaW5lKGNvbnN0IExpbmVEYXRhJiBs
aW5lKQoreworICAgIGFwcGVuZDxGaWxsTGluZT4obGluZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRGaWxsQXJjKGNvbnN0IEFyY0RhdGEmIGFyYykKK3sKKyAgICBhcHBlbmQ8Rmls
bEFyYz4oYXJjKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxRdWFkQ3VydmUo
Y29uc3QgUXVhZEN1cnZlRGF0YSYgY3VydmUpCit7CisgICAgYXBwZW5kPEZpbGxRdWFkQ3VydmU+
KGN1cnZlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxCZXppZXJDdXJ2ZShj
b25zdCBCZXppZXJDdXJ2ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVuZDxGaWxsQmV6aWVyQ3Vy
dmU+KGN1cnZlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAg
ICBhcHBlbmQ8RmlsbFBhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
RmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGFwcGVuZDxGaWxsRWxs
aXBzZT4ocmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRHZXRQaXhlbEJ1ZmZl
cihQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7
CisgICAgYXBwZW5kPEdldFBpeGVsQnVmZmVyPihvdXRwdXRGb3JtYXQsIHJlY3QpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKK3sKKyAgICBhcHBl
bmQ8UHV0UGl4ZWxCdWZmZXI+KGJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBwcmVtdWx0aXBs
aWNhdGlvbik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRQYWludEZyYW1lRm9yTWVk
aWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sK
KyAgICBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihwbGF5ZXIsIGRlc3RpbmF0aW9uKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCB3aWR0aCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUmVjdD4ocmVjdCwgd2lkdGgp
OworfQorCisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRTdHJva2VMaW5lKGNvbnN0IExpbmVEYXRhJiBsaW5lKQoreworICAgIGFwcGVuZDxT
dHJva2VMaW5lPihsaW5lKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUFy
Yyhjb25zdCBBcmNEYXRhJiBhcmMpCit7CisgICAgYXBwZW5kPFN0cm9rZUFyYz4oYXJjKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVF1YWRDdXJ2ZShjb25zdCBRdWFkQ3Vy
dmVEYXRhJiBjdXJ2ZSkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUXVhZEN1cnZlPihjdXJ2ZSk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VCZXppZXJDdXJ2ZShjb25zdCBCZXpp
ZXJDdXJ2ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVuZDxTdHJva2VCZXppZXJDdXJ2ZT4oY3Vy
dmUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK3ZvaWQgUmVj
b3JkZXJJbXBsOjpyZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgYXBw
ZW5kPFN0cm9rZVBhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ry
b2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPFN0cm9rZUVs
bGlwc2U+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xlYXJSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xlYXJSZWN0PihyZWN0KTsKK30K
KworI2lmIFVTRShDRykKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5U3Ryb2tlUGF0
dGVybigpCit7CisgICAgYXBwZW5kPEFwcGx5U3Ryb2tlUGF0dGVybj4oKTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZEFwcGx5RmlsbFBhdHRlcm4oKQoreworICAgIGFwcGVuZDxBcHBs
eUZpbGxQYXR0ZXJuPigpOworfQorCisjZW5kaWYgLy8gVVNFKENHKQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKK3sK
KyAgICBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oc2NhbGVGYWN0b3IpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQor
eworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJ
bWFnZVVzZShpbWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQp
Cit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRV
c2UoZm9udCk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUZvbnQoZm9udCk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIp
Cit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEltYWdl
QnVmZmVyVXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIpOworfQorCitGbG9hdFJlY3QgUmVjb3JkZXJJbXBsOjpleHRlbnRGcm9t
TG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAoreworICAgIEZsb2F0UmVj
dCBib3VuZHMgPSByZWN0OworICAgIGF1dG8mIHN0YXRlID0gY3VycmVudFN0YXRlKCk7CisKKyAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIGZsb2F0IHNoYWRvd1JhZGl1czsKKyAgICBD
b2xvciBzaGFkb3dDb2xvcjsKKyAgICBpZiAoZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvcikpIHsKKyAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0V4dGVudCA9
IGJvdW5kczsKKyAgICAgICAgc2hhZG93RXh0ZW50Lm1vdmUoc2hhZG93T2Zmc2V0KTsKKyAgICAg
ICAgc2hhZG93RXh0ZW50LmluZmxhdGUoc2hhZG93UGFpbnRpbmdFeHRlbnQoc2hhZG93UmFkaXVz
KSk7CisgICAgICAgIGJvdW5kcy51bml0ZShzaGFkb3dFeHRlbnQpOworICAgIH0KKworICAgIEZs
b2F0UmVjdCBjbGlwcGVkRXh0ZW50ID0gaW50ZXJzZWN0aW9uKHN0YXRlLmNsaXBCb3VuZHMsIGJv
dW5kcyk7CisgICAgcmV0dXJuIHN0YXRlLmN0bS5tYXBSZWN0KGNsaXBwZWRFeHRlbnQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmY1
OWM3ZTk3ZmNmZDQzNjQyYzBhY2ZlNGJmMmEzNzMyYzgwYmVjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRpc3BsYXlM
aXN0UmVjb3JkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRGlzcGxh
eUxpc3QgeworCitjbGFzcyBSZWNvcmRlckltcGwgOiBwdWJsaWMgUmVjb3JkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVy
SW1wbCk7CitwdWJsaWM6CisgICAgY2xhc3MgRGVsZWdhdGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVjb3JkZXJJbXBsKERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBj
b25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxl
Z2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNv
bnN0cnVjdCk7CisgICAgUmVjb3JkZXJJbXBsKFJlY29yZGVySW1wbCYgcGFyZW50LCBjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5SZWNvcmRlckltcGwoKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpOyB9CisKKyAgICBjbGFzcyBEZWxlZ2F0ZSB7CisgICAg
cHVibGljOgorICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQorICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlY29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJikgeyB9
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVm
ZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY29y
ZEZvbnRVc2UoRm9udCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkSW1hZ2VCdWZm
ZXJVc2UoSW1hZ2VCdWZmZXImKSB7IH0KKyAgICAgICAgdmlydHVhbCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OyB9CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgZmluYWw7CisgICAg
dm9pZCBmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIGZpbmFsIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KKworcHJpdmF0
ZToKKyAgICAvLyBGSVhNRTogTWF5YmUgcmVtb3ZlIHRoaXM/CisgICAgYm9vbCBjYW5EcmF3SW1h
Z2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgcmVjb3JkU2F2ZSgp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkUmVzdG9yZSgpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
VHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUm90YXRl
KGZsb2F0IGFuZ2xlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNjYWxlKGNvbnN0IEZsb2F0U2l6
ZSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRJbmxpbmVGaWxsQ29sb3IoU1JHQkE8dWlu
dDhfdD4pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8
dWludDhfdD4pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNl
dExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
U2V0TWl0ZXJMaW1pdChmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRDbGVhclNoYWRvdygp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZENsaXBPdXQoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgZmluYWw7
CisgICAgdm9pZCByZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZENsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
bWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdMaW5l
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZERyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgYmxv
Y2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5l
cykgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlJikgZmluYWw7CisgICAg
dm9pZCByZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdG
b2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3RzKGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29s
b3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50
KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxs
Q29tcG9zaXRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWw7CisjaWYgRU5B
QkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgdm9pZCByZWNvcmRGaWxsTGluZShjb25zdCBMaW5l
RGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbEFyYyhjb25zdCBBcmNEYXRhJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRGaWxsUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmKSBm
aW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxCZXppZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURh
dGEmKSBmaW5hbDsKKyNlbmRpZgorICAgIHZvaWQgcmVjb3JkRmlsbFBhdGgoY29uc3QgUGF0aCYp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFB1dFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgZmluYWw7CisgICAg
dm9pZCByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQpIGZpbmFsOworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQor
ICAgIHZvaWQgcmVjb3JkU3Ryb2tlTGluZShjb25zdCBMaW5lRGF0YSYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkU3Ryb2tlQXJjKGNvbnN0IEFyY0RhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZFN0cm9rZVF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVEYXRhJikgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRTdHJva2VCZXppZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmKSBmaW5hbDsKKyNl
bmRpZgorICAgIHZvaWQgcmVjb3JkU3Ryb2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAg
dm9pZCByZWNvcmRTdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZv
aWQgcmVjb3JkQ2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworI2lmIFVTRShDRykK
KyAgICB2b2lkIHJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkQXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCByZWNvcmRBcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsKKworICAgIHZvaWQgcmVjb3JkUmVzb3Vy
Y2VVc2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZv
bnQmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikgZmlu
YWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRD
b250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSkgZmluYWw7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKCFjYW5BcHBlbmRJdGVtT2ZUeXBlKFQ6Oml0ZW1UeXBlKSkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV9kaXNwbGF5TGlzdC5hcHBlbmQ8VD4oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKworICAgICAgICBpZiBjb25zdGV4cHIgKFQ6OmlzRHJhd2lu
Z0l0ZW0pIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIW1fZGlzcGxheUxpc3QudHJhY2tzRHJh
d2luZ0l0ZW1FeHRlbnRzKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgYXV0byBpdGVtID0gVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAg
ICAgaWYgKGF1dG8gcmVjdCA9IGl0ZW0ubG9jYWxCb3VuZHMoKnRoaXMpKQorICAgICAgICAgICAg
ICAgIG1fZGlzcGxheUxpc3QuYWRkRHJhd2luZ0l0ZW1FeHRlbnQoZXh0ZW50RnJvbUxvY2FsQm91
bmRzKCpyZWN0KSk7CisgICAgICAgICAgICBlbHNlIGlmIChhdXRvIHJlY3QgPSBpdGVtLmdsb2Jh
bEJvdW5kcygpKQorICAgICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYWRkRHJhd2luZ0l0ZW1F
eHRlbnQoKnJlY3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZGlzcGxh
eUxpc3QuYWRkRHJhd2luZ0l0ZW1FeHRlbnQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEZsb2F0UmVjdCBleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0
ZW1UeXBlKSBjb25zdDsKKworICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OworICAgIERl
bGVnYXRlKiBtX2RlbGVnYXRlIHsgbnVsbHB0ciB9OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaAppbmRleCA0MmZjNDE4Yzc5ODIzMzE0OTRlZTI3NmI2ZGE0OTk0YTFlNGM5
OTZhLi44Y2VjOTI0MjY4NzUxNGM2YzJjNzdiNzg5OGMwYTM0YzkwN2Q1YmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOwogdGVtcGxhdGU8dHlwZW5hbWUgQmFja2VuZFR5cGU+IGNsYXNzIFRocmVhZFNh
ZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRU
eXBlPgotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDog
cHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSwgcHVibGlj
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CiAgICAgdXNp
bmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1h
Z2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyOjptX2JhY2tlbmQ7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6Om1f
ZHJhd2luZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZWI2NmJjNDAzNTE2MmY3NDdmMzc4OGFlZDA5YTZjNGNmNDE4Y2UyMi4uYTQ5
ZDlhZTExMzQ0NGU0Njc3ZWNiMTJhMTQxMTJlMmJlMDYyNDcyYiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEw
LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNw
bGl0IERpc3BsYXlMaXN0OjpSZWNvcmRlciBpbnRvIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgYW5k
IGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDIxLTEwLTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbd2Via2l0c2NtcHldIExpYnJhcnkgc2hvdWxkIG93biBjb250cmlidXRvcnMuanNv
biBsb2FkaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNw
cAppbmRleCA4YTliZDVkMmYyMTRlN2ZiMzA4NTA1ZTI3YjdlNzc3ZTlhZmM5OWQ2Li4zNDliNjU2
NTg3OGZhNjBhMThjYzdhNTNmMTYyZjMxODIwZTU3NjA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3Rz
Q0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0
ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50SW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CkBAIC01NSw3ICs1NSw3IEBAIFRFU1QoQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dFRlc3RzLCBCYXNpY0JpZnVyY2F0ZWRDb250ZXh0KQogICAgIEdyYXBoaWNzQ29u
dGV4dENHIHByaW1hcnlDb250ZXh0KHByaW1hcnlDR0NvbnRleHQuZ2V0KCkpOwogCiAgICAgSW5N
ZW1vcnlEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdDsKLSAgICBSZWNvcmRlciBzZWNvbmRhcnlDb250
ZXh0KGRpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRl
eHRIZWlnaHQpLCB7IH0pOworICAgIFJlY29yZGVySW1wbCBzZWNvbmRhcnlDb250ZXh0KGRpc3Bs
YXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQp
LCB7IH0pOwogCiAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJpbWFyeUNvbnRl
eHQsIHNlY29uZGFyeUNvbnRleHQpOwogCkBAIC05MSwxMCArOTEsMTAgQEAgVEVTVChCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJjYXRlZENvbnRleHQpCiBURVNUKEJp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dEluQmlmdXJjYXRlZENvbnRleHQpCiB7
CiAgICAgSW5NZW1vcnlEaXNwbGF5TGlzdCBwcmltYXJ5RGlzcGxheUxpc3Q7Ci0gICAgUmVjb3Jk
ZXIgcHJpbWFyeUNvbnRleHQocHJpbWFyeURpc3BsYXlMaXN0LCB7IH0sIEZsb2F0UmVjdCgwLCAw
LCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQpLCB7IH0pOworICAgIFJlY29yZGVySW1wbCBw
cmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNv
bnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CiAKICAgICBJbk1lbW9yeURpc3BsYXlM
aXN0IHNlY29uZGFyeURpc3BsYXlMaXN0OwotICAgIFJlY29yZGVyIHNlY29uZGFyeUNvbnRleHQo
c2Vjb25kYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwg
Y29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHNlY29uZGFyeUNvbnRleHQo
c2Vjb25kYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwg
Y29udGV4dEhlaWdodCksIHsgfSk7CiAKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0
eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAK
</data>
<flag name="commit-queue"
          id="464642"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440631</attachid>
            <date>2021-10-08 09:31:57 -0700</date>
            <delta_ts>2021-10-08 13:46:07 -0700</delta_ts>
            <desc>Fix CMake build</desc>
            <filename>bug-231404-20211008093156.patch</filename>
            <type>text/plain</type>
            <size>102635</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZmMTYxNGM2OTg5MDQ4
YzQxYzRiMjliNDY0ZDAxOGYyYzQ4NjI3MC4uODdhYWMxYTU4YTk1YTUxMGQxMGVlOWY2MzgwNzc5
MmJlMDI5YmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW06CisKKyAgICAgICAgQ2hhbmdlIHZh
cmlvdXMgdXNlcyBvZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgdG8gRGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6cmVjb3JkZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisKKyAgICAgICAgVGhlIGFic3RyYWN0IFJlY29yZGVy
IG5vdyBjb250YWlucyBsb2dpYyBmb3IgbWFwcGluZyBHcmFwaGljc0NvbnRleHQgbWV0aG9kIGNh
bGxzIGludG8gY2FsbHMgdG8gcmVjb3JkCisgICAgICAgIGluZGl2aWR1YWwgZGlzcGxheSBsaXN0
IGl0ZW1zLiBOb3RlIHRoYXQgd2hpbGUgbWFueSBHcmFwaGljc0NvbnRleHQgbWV0aG9kcyBjb3Jy
ZXNwb25kIGRpcmVjdGx5IHRvIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtcywgc29tZSBtZXRo
b2RzIG1hcCB0byBvbmUgb3IgbW9yZSBkaXNwbGF5IGxpc3QgaXRlbXMsIHN1Y2ggYXMgc2V0dGlu
ZyBzdGF0ZSBjb25zaXN0aW5nIG9ubHkgb2YgaW5saW5lIFBPRAorICAgICAgICBkYXRhIG9yIGRy
YXdpbmcgc2ltcGxlIHBhdGhzLiBUaGUgYmFzZSBjbGFzcyBhbHNvIG1hbmFnZXMgdXBkYXRpbmcg
YW5kIG1haW50YWluaW5nIHRoZSBzdGF0ZSBzdGFjayAoYSBsaXN0IG9mCisgICAgICAgIFJlY29y
ZGVyOjpDb250ZXh0U3RhdGUpIHdoZW4gbW9kaWZ5aW5nIGdyYXBoaWNzIGNvbnRleHQgc3RhdGUu
CisKKyAgICAgICAgSW1wb3J0YW50bHksIHRoaXMgbWVhbnMgdGhhdCB0aGUgYWJzdHJhY3QgUmVj
b3JkZXIgY2xhc3MgZG9lcyBub3QgY29udGFpbiBlaXRoZXIgYSBSZWNvcmRlciBEZWxlZ2F0ZSwg
bm9yIGRvZXMKKyAgICAgICAgaXQgY29udGFpbiBhIERpc3BsYXlMaXN0LiBJbnN0ZWFkLCB0aGUg
Y29uY3JldGUgc3ViY2xhc3MgKERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwpIG5vdyBob2xkcyBv
biB0byB0aGUgbG9jYWwKKyAgICAgICAgRGlzcGxheUxpc3QuCisKKyAgICAgICAgVGhpcyBhbHNv
IGVuc3VyZXMgdGhhdCBzdWJjbGFzc2VzIG9mIERpc3BsYXlMaXN0OjpSZWNvcmRlciBvbmx5IG5l
ZWQgdG8gd29ycnkgYWJvdXQgInJlY29yZGluZyIgZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1z
IGdpdmVuIHRoZWlyIGNvbnN0aXR1ZW50IGFyZ3VtZW50cywgaW5zdGVhZCBvZiBkaXJlY3RseSBp
bXBsZW1lbnRpbmcgdGhlIGluZGl2aWR1YWwgR3JhcGhpY3NDb250ZXh0IGRyYXdpbmcKKyAgICAg
ICAgbWV0aG9kcy4KKworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpS
ZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6On5SZWNv
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVuZFN0
YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OnNldExpbmVDYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpz
ZXRMaW5lRGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnNl
dExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2V0
TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRy
YXdHbHlwaHNBbmRDYWNoZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OnNhdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cm90
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c2NhbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjb25jYXRDVE0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzZXRDVE0pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OmRyYXdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJh
d0ZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmZp
bGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFJv
dW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6c3Ryb2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpz
dHJva2VFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBw
bHlTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6YXBwbHlGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBU
b0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OnBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpnZXRQaXhlbEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVjb3JkTmF0aXZlSW1h
Z2VVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpjYW5BcHBlbmRJdGVtT2ZUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuRHJhd0ltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVuZGVyaW5nTW9k
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmV4dGVudEZyb21Mb2NhbEJvdW5kcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVjb3JkRHJhd1BhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OkNv
bnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNv
bnRleHRTdGF0ZTo6Y2xvbmVGb3JTYXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpjbG9uZUZvclRyYW5zcGFyZW5jeUxheWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6c3RhdGVT
dGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Omlz
TmVzdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
aXNFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OkRlbGVnYXRlOjp+RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2FuQXBwZW5kSXRlbU9mVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVn
YXRlOjpyZWNvcmROYXRpdmVJbWFnZVVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjppc0NhY2hlZEltYWdlQnVmZmVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVs
ZWdhdGU6OnJlY29yZEZvbnRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkSW1hZ2VCdWZmZXJVc2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVu
ZGVyaW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmZsdXNoQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Oml0ZW1OZWVkc1N0YXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OlJlY29yZGVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjp+UmVjb3JkZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OmdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlckltcGw6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNhbkFwcGVuZEl0ZW1PZlR5cGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6Y2FuRHJhd0ltYWdlQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlbmRlcmluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6Y3JlYXRlTmVzdGVkQ29udGV4dCk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhl
IG5lc3RlZCBSZWNvcmRlciBsb2dpYyB1c2VkIGZvciBgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdD
b21tYW5kc2AsIHN1Y2ggdGhhdCBpdCdzIG5vdyBhIHNlcGFyYXRlCisgICAgICAgIG92ZXJyaWRl
IHBvaW50LiBUaGlzIGFsbG93cyBzdWJjbGFzc2VzIHRvIGluc3RhbnRpYXRlIG5lc3RlZCBjb250
ZXh0cyBvZiB0aGUgc2FtZSB0eXBlLCB3aGlsZSBrZWVwaW5nIHRoZSBtYWluCisgICAgICAgIGxv
Z2ljIGluIGBjbGlwVG9EcmF3aW5nQ29tbWFuZHNgIGluIHRoZSBzaGFyZWQgYmFzZSBjbGFzcy4K
KworICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2F2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRS
ZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZFRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRSb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkU2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OnJlY29yZENvbmNhdGVuYXRlQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldElubGluZUZpbGxDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRJbmxp
bmVTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpyZWNvcmRTZXRTdHJva2VUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUNhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5lRGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5l
Sm9pbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRTZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZENsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OnJlY29yZENsaXApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0VG9QYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENs
aXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3R2x5
cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpyZWNvcmREcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRF
bmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmREcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkRHJhd0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZp
bGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZEZpbGxSZWN0V2l0aENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxDb21wb3NpdGVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxs
Um91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6cmVjb3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbExpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbEFyYyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUXVhZEN1cnZlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxC
ZXppZXJDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRGaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpyZWNvcmRGaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRQdXRQaXhlbEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRQYWludEZyYW1l
Rm9yTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
cmVjb3JkU3Ryb2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpyZWNvcmRTdHJva2VMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUFyYyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VRdWFkQ3VydmUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQmV6aWVyQ3Vy
dmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3Jk
U3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpyZWNvcmRTdHJva2VFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OnJlY29yZENsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlGaWxsUGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRB
cHBseURldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJvdW5kcyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1w
bDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpEZWxlZ2F0ZTo6fkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjpyZWNvcmRO
YXRpdmVJbWFnZVVzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsOjpEZWxlZ2F0ZTo6aXNDYWNoZWRJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVjb3JkRm9udFVzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6
cmVjb3JkSW1hZ2VCdWZmZXJVc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6RGVsZWdhdGU6OnJlbmRlcmluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1BhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6YXBwZW5kKToKKwogMjAy
MS0xMC0wOCAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtMaWJXUEVdIERvIG5vdCBkZXN0cm95IEVHTCBiYWNrZW5kIGlmIG5vdCBjcmVhdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGU0ZmIzZjgyYmQwYjc1NWE3MGY0ZjZkMzc0YWYwOTAyODYyYTJiZmQuLjQ1MmQ0
YTFkMTA0ZGI4M2Y1OGI0YTExMmY0NGMzYTlkNzQ5YzBmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMTAtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgU3BsaXQgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGludG8gYW4gYWJzdHJhY3Qg
YmFzZSBjbGFzcyBhbmQgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisKIDIwMjEtMTAtMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW1F0XSBBUEkgZXhwb3J0IGZpeGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCBhOTc2NTZiOWY0OGMyMThiMTczNGRmMDQ2MmJlYTA0Njc5
MzZiOTg4Li45MTBmMzE3OGUyMzBmMGMzZmVkODNiM2RkMzVjMTc0Mzg5MDY0MGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTEzOTksNiArMTM5OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlcmF0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
SW5NZW1vcnlEaXNwbGF5TGlzdC5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMzRkOTFjYWZlNmZmNWQz
NWUyNjZhNDUyY2QzZmY1MzM2NzMwZDQ3My4uNWE3OGYxOWQyYWRiNGQwZGZlMTE0NWJlZGZlNzA0
Y2VlODcyNzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMzEsNiArMjAzMSw3IEBAIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjgyMzhlNzM3Yjll
YTQ4OWU4NTQ4Y2NlZmE5YzFmZWJkZjY4NDRjNy4uN2EwNDU5MjliNzZmY2JlZTM5MWVkMmUzNDNm
NzM0OWQyOTBlY2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzc0LDcgKzM3NCw3IEBACiAJCTBGRTU4MDY0MTkzMjdBNjIw
MERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5n
VHJlZU1hYy5oICovOyB9OwogCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVG
QkNCMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAv
KiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTVG
QkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRjFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkQxMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNzE0MDYxNDIxNzBCODAwREIzM0JBIC8qIFNj
cm9sbGJhclRoZW1lTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5o
ICovOyB9OwogCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUEzRTc5MTkxQjJGQzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01MzkzLDYgKzUzOTMsNyBAQAogCQlGNDIwRjAwQTI1RTQ3NzkxMDA5MjUxRUYgLyog
UG9pbnRlckV2ZW50VHlwZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDIwRjAwODI1RTQ3NzkxMDA5MjUxRUYgLyogUG9pbnRlckV2ZW50VHlw
ZU5hbWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQyOTI2MTgyNTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxheWVySWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTI2MTcyNTI2
NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxheWVySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0Mjk5NEZBMjcwQ0ZFNDgwMDMyMjk4
QiAvKiBHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Mjk5NEY5MjcwQ0ZFNDgwMDMyMjk4QiAvKiBH
cmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlz
cGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQyOTk1MEQyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMz
RTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzM0U5MDIxREJCREJBMjAwRUYwRDE0
IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJ
dGVtVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQzNzdENTUyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDQwRTc3QTIzM0Q5
NEQ3MDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2
aWdhdG9yQ2xpcGJvYXJkLmggKi87IH07CkBAIC02NDAyLDggKzY0MDMsOCBAQAogCQkwRkU1RkJD
QjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZFNUZCQ0MxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlM
aXN0SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFNUZCQ0UxQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0UmVj
b3JkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFNUZCQ0UxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTVG
QkQwMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RSZXBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNw
bGF5TGlzdFJlcGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTZDNzZC
MUZCRkI3QTYwMDI1QzA1MyAvKiBDb2xvclV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb2xvclV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjgw
MCw2ICsxNjgwMSw4IEBACiAJCUY0MjJCOEI2MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyOTI2MTcyNTI2NEQ0NDAwMDA3
ODk4IC8qIE1lZGlhUGxheWVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXll
cklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyOTk0RjkyNzBD
RkU0ODAwMzIyOThCIC8qIEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQyOTk1MEQyNzBFNzUwMDAwMzIyOThCIC8qIERpc3BsYXlMaXN0UmVj
b3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDI5OTUwRTI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyQ0VCNTQyMTQwMzFFRTAwMkRDQTcy
IC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
b250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDMzRTkwMjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0
ZWJvYXJkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMDMsOCArMTgyMDYsMTAgQEAKIAkJCQlGNDM3
N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oICovLAogCQkJCTFD
RThEMTJCMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCAqLywKIAkJ
CQkxQ0U4RDEyQzI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oICovLAot
CQkJCTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAq
LywKLQkJCQkwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5o
ICovLAorCQkJCUY0Mjk5NTBFMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCAqLywKKwkJCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNv
cmRlci5oICovLAorCQkJCTBGRTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5jcHAgKi8sCisJCQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmggKi8sCiAJCQkJMEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovLAogCQkJCTBGRTVGQkQxMUMzREQ1MUUwMDA3QTJD
QSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggKi8sCiAJCQkJMUNFODg2M0UyNjEwNUE1RjAwMEM4
MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovLApAQCAtMzIzNTgsNyArMzIzNjMsOCBA
QAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJ
dGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8q
IERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRTVGQkQ3MUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NDI5OTUwRjI3MEU3NTAwMDAzMjI5OEIgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQw
NTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQyOUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGNhNGU3Nzc1ZTc0NmNj
Yzk5YjA3N2YyMGM2OTcxNmNlODI1ODk5ZGYuLmFlMGQxYTc2ZjYxYzIzNmQ5YjE2ODE2MDQ2NWVl
MjJjZmRmMDhmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAj
aW5jbHVkZSAiRE9NTWF0cml4LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4MkRJbml0LmgiCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVjb3JkZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1
ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCmluZGV4IDUzNTYxOTdhMzQ0YTY5OWVjODkwOGIxODA2YzE3NTY5OTM4
MGJhNmQuLjZjNjhlNDQ1OThiZjk4NjZlODE2NGQyMzUxYjJjYmQ2M2U3NWEwZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNoYXJhY3RlclByb3BlcnRpZXMuaCIKICNpbmNsdWRl
ICJDb21wbGV4VGV4dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVy
LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5o
IgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1v
cnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5N
ZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJ
bk1lbW9yeURpc3BsYXlMaXN0PigpOwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNvcmRp
bmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZm
aW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOworICAgIERpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGwgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxv
YXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KTsKICAgICAKICAgICBG
bG9hdFBvaW50IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoV2ViQ29yZTo6c2l6ZShnbHlwaEJ1
ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgZHJhd0dseXBoQnVmZmVyKHJlY29yZGluZ0Nv
bnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggNjFiYjVmY2RhODk0MDJmYWEyY2M1N2NjNTlhZjk4ZDI3NTA3
ZmMzZS4uMmQyZjExYTQ3ZDY0NmRlZDkwMTFiNWIyZThlM2UyM2Y2Zjc2NjFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgVVNFKENBKQogCiAjaW5jbHVkZSAiQW5pbWF0
aW9uLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgog
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAt
MTgwNCw3ICsxODA0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENo
YW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICAgICAgCiAgICAg
ICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChib3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAotICAg
ICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgY29udGV4dCgqbV9kaXNwbGF5TGlzdCwgR3JhcGhp
Y3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBjb250ZXh0KCptX2Rpc3BsYXlMaXN0LCBHcmFw
aGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAg
ICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzaXplKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYjY1NmYx
MzY4MTYyNDdhNDZhY2RjZGE1OTliYjZkNDFkZDgwOTNhOS4uNDQxMDM4ZWQ4ZmIwMjIyMzI3ZjQ4
ZTY1NmVlZDc4NWMyNDJmMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUg
IkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkdyYWRpZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0Q29jb2EubW0KaW5kZXggMzg4YWZjZDZmNDZhZmM0NTIyMWY4MDcxZDM1MDk2N2Yw
ZTUzNTUwZC4uNzVlMWY5NGIyYjRmNjliMzE4OWM0YzQyNjE3YWIxOTA4M2FkY2E5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0Q29jb2EubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAKLSNpbXBvcnQgIkRpc3BsYXlMaXN0
UmVjb3JkZXIuaCIKKyNpbXBvcnQgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlQ0cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5k
ZXggMjI2ODRkYzM5OGUxZWY1MmMxYmQ5NjZmZjQ1MDM3MjM3ZGNmMmFlZi4uODk4NmU4YzMyOWYw
YTExZTg0ODMwMTE5OTViMzZkM2JhMTYxNzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAg
LTU0LDcgKzU0LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBBc1RleHRGbGFnczsKIAogY2xhc3MgRGlz
cGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgZnJpZW5kIGNsYXNzIFJlY29yZGVyOworICAgIGZyaWVu
ZCBjbGFzcyBSZWNvcmRlckltcGw7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGxheWVyOwogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIERpc3BsYXlMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKaW5kZXggMzk1N2M0NTc2ZmU5MTJkNjgx
MDIwNzYxMDAxY2MyNGY2ODY4ODYyYS4uMzYyZDQzNjc1MmFjNzNhOWJjM2IzY2M4YzA1NmFhNGQ3
ZjA3YjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgi
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1EcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRl
eHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBp
bml0aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQorRHJhd2luZ0NvbnRleHQ6
OkRyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgUmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSogZGVsZWdhdGUp
CiAgICAgOiBtX2NvbnRleHQobV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4IDk2
NTYzNjM0ZDU3ZjQwOTRiM2MyY2JhNmYwNjc0MGY1MDYzZGQ0YmYuLjE3ZjIyZTkwM2VhNjBkMDll
OTBlMjBjM2U5N2JjMTNiY2FjNzIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdC5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxMCArMzcsMTAgQEAgY2xh
c3MgSW5NZW1vcnlEaXNwbGF5TGlzdDsKIGNsYXNzIERyYXdpbmdDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5n
Q29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0gPSB7IH0sIFJlY29yZGVySW1w
bDo6RGVsZWdhdGUqID0gbnVsbHB0cik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PERyYXdpbmdDb250ZXh0Jj4oKnRoaXMpLm1fY29u
dGV4dDsgfQotICAgIFJlY29yZGVyJiByZWNvcmRlcigpIHsgcmV0dXJuIG1fY29udGV4dDsgfTsK
KyAgICBSZWNvcmRlckltcGwmIHJlY29yZGVyKCkgeyByZXR1cm4gbV9jb250ZXh0OyB9OwogICAg
IERpc3BsYXlMaXN0IHRha2VEaXNwbGF5TGlzdCgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9k
aXNwbGF5TGlzdCwgeyB9KTsgfQogICAgIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIHsgcmV0
dXJuIG1fZGlzcGxheUxpc3Q7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxheURpc3BsYXlMaXN0KEdyYXBoaWNzQ29u
dGV4dCYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVjb3JkZXIgbV9jb250ZXh0OworICAgIFJlY29y
ZGVySW1wbCBtX2NvbnRleHQ7CiAgICAgRGlzcGxheUxpc3QgbV9kaXNwbGF5TGlzdDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5NZW1vcnlEaXNwbGF5TGlzdD4gbV9yZXBsYXllZERpc3BsYXlMaXN0
OwogICAgIGJvb2wgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCAwYjM1YWY1NDBjMTRkY2Jk
YmY3YmVjNjljYWZkNjA2YjMyZTU1ZjBmLi40NmU5ZmE4NmFhYjZiYTQ0OTVjYzQ2YWRiNzZhZjQ2
N2ZlNWJhMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3Bs
YXlMaXN0KCkuc2V0SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQobV9yZWFkaW5nQ2xpZW50LmdldCgp
KTsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxs
cHRyKQorICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgUmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRy
KQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCiAgICAgICAg
ICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVn
YXRlKQogICAgICAgICAsIG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlE
aXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudD4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAppbmRleCA5M2JhNjUwMmFiNmJhNGYzMzFjZmVlOTYzYzE5ZTMzMDJlOTVm
YjZhLi43MzIwOTUzNzNhZDdmYWI3N2Q4ODZhMWEwYzA5N2Y0NmUxZDM5ODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00MCwyMSArNDAsMTYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpS
ZWNvcmRlcihEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxlZ2F0ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRl
cjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKLSAg
ICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRl
KQorUmVjb3JkZXI6OlJlY29yZGVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgOiBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywg
ZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQogICAgICwgbV9pc05lc3RlZChmYWxzZSkKLSAgICAs
IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCiB7
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGlu
ZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7
IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0KIAogUmVjb3JkZXI6OlJlY29y
ZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNKQotICAgIDogbV9kaXNwbGF5TGlzdChwYXJlbnQubV9kaXNwbGF5TGlzdCkKLSAgICAs
IG1fZGVsZWdhdGUocGFyZW50Lm1fZGVsZWdhdGUpCisgICAgOiBtX2RyYXdHbHlwaHNSZWNvcmRl
cigqdGhpcywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbigpKQogICAgICwgbV9pc05lc3RlZCh0cnVlKQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3Jk
ZXIoKnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24oKSkKIHsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0s
IGluaXRpYWxDbGlwIH0pOwogfQpAQCAtNjIsMTggKzU3LDYgQEAgUmVjb3JkZXI6OlJlY29yZGVy
KFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29u
c3QgRmwKIFJlY29yZGVyOjp+UmVjb3JkZXIoKQogewogICAgIEFTU0VSVChtX3N0YXRlU3RhY2su
c2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBpdCBpbmRpY2F0ZXMgbWlzbWF0Y2hlZCBz
YXZlL3Jlc3RvcmUuCi0gICAgaWYgKCFtX2lzTmVzdGVkKQotICAgICAgICBMT0coRGlzcGxheUxp
c3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRlc2NyaXB0
aW9uKCkuZGF0YSgpKTsKLX0KLQotdm9pZCBSZWNvcmRlcjo6Z2V0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCkKLXsKLSAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgc291cmNlUmVj
dCk7Ci19Ci0KLXZvaWQgUmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
JiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQotewotICAgIGFwcGVu
ZDxQdXRQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZv
cm1hdCk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCkBAIC05NiwzNyArNzksMjUgQEAg
c3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiBjaGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWNv
cmRlcjo6cmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQotewotICAgIGlm
IChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShp
bWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLX0KLQog
dm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBjaGFuZ2VGbGFncykKIHsKICAgICBpZiAoIWNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hh
bmdlcyhjaGFuZ2VzLCBjaGFuZ2VGbGFncykpIHsKICAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9
IGNoYW5nZXMubV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAgcmVjb3JkTmF0aXZl
SW1hZ2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgICAgICAgICAgcmVjb3JkUmVzb3Vy
Y2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwogICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0g
Y2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgcmVjb3JkTmF0aXZlSW1h
Z2VVc2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwotICAgICAgICBhcHBlbmQ8U2V0U3RhdGU+KGNo
YW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOworICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VV
c2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgICAgICByZWNvcmRTZXRTdGF0ZShjaGFuZ2Vz
Lm1fc3RhdGUsIGNoYW5nZUZsYWdzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCpjaGFuZ2VzLm1f
c3RhdGUuc3Ryb2tlQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOworICAgICAgICByZWNvcmRT
ZXRJbmxpbmVTdHJva2VDb2xvcigqY2hhbmdlcy5tX3N0YXRlLnN0cm9rZUNvbG9yLnRyeUdldEFz
U1JHQkFCeXRlcygpKTsKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkKLSAgICAgICAgYXBwZW5kPFNldFN0
cm9rZVRoaWNrbmVzcz4oY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyk7CisgICAgICAg
IHJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KTsKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
RmlsbENvbG9yQ2hhbmdlKSkKLSAgICAgICAgYXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oKmNo
YW5nZXMubV9zdGF0ZS5maWxsQ29sb3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwotfQotCi1ib29s
IFJlY29yZGVyOjpjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlIHR5cGUpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmNhbkFwcGVuZEl0ZW1PZlR5cGUo
dHlwZSk7CisgICAgICAgIHJlY29yZFNldElubGluZUZpbGxDb2xvcigqY2hhbmdlcy5tX3N0YXRl
LmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCkKQEAgLTE1MiwzNCArMTIzLDI0IEBAIHZv
aWQgUmVjb3JkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSwgR3JhcGhpY3NDb250ZXh0U3RhCiAgICAgY3VycmVudFN0YXRlKCkuc3RhdGVDaGFuZ2UuYWNj
dW11bGF0ZShzdGF0ZSwgZmxhZ3MpOwogfQogCi1ib29sIFJlY29yZGVyOjpjYW5EcmF3SW1hZ2VC
dWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdAotewotICAgIHJldHVy
biAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVnYXRlLT5pc0NhY2hlZEltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyKTsKLX0KLQotUmVuZGVyaW5nTW9kZSBSZWNvcmRlcjo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZGVsZWdhdGUgPyBtX2RlbGVnYXRlLT5yZW5kZXJpbmdNb2RlKCkg
OiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwotfQotCiB2b2lkIFJlY29yZGVyOjpzZXRM
aW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKIHsKLSAgICBhcHBlbmQ8U2V0TGluZUNhcD4obGluZUNh
cCk7CisgICAgcmVjb3JkU2V0TGluZUNhcChsaW5lQ2FwKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNoQXJyYXksIGZsb2F0IGRhc2hPZmZzZXQp
CiB7Ci0gICAgYXBwZW5kPFNldExpbmVEYXNoPihkYXNoQXJyYXksIGRhc2hPZmZzZXQpOworICAg
IHJlY29yZFNldExpbmVEYXNoKGRhc2hBcnJheSwgZGFzaE9mZnNldCk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OnNldExpbmVKb2luKExpbmVKb2luIGxpbmVKb2luKQogewotICAgIGFwcGVuZDxTZXRM
aW5lSm9pbj4obGluZUpvaW4pOworICAgIHJlY29yZFNldExpbmVKb2luKGxpbmVKb2luKTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6c2V0TWl0ZXJMaW1pdChmbG9hdCBtaXRlckxpbWl0KQogewotICAg
IGFwcGVuZDxTZXRNaXRlckxpbWl0PihtaXRlckxpbWl0KTsKKyAgICByZWNvcmRTZXRNaXRlckxp
bWl0KG1pdGVyTGltaXQpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZm
ZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpAQCAtMTg5LDM5
ICsxNTAsNDAgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnMKIAogdm9pZCBSZWNvcmRlcjo6ZHJh
d0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0
ZS0+cmVjb3JkRm9udFVzZShjb25zdF9jYXN0PEZvbnQmPihmb250KSk7Ci0gICAgbV9kaXNwbGF5
TGlzdC5jYWNoZUZvbnQoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOwotICAgIGFwcGVuZDxEcmF3
R2x5cGhzPihmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290
aGluZ01vZGUpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAg
cmVjb3JkUmVzb3VyY2VVc2UoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOworICAgIHJlY29yZERy
YXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBzbW9v
dGhpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAg
ICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIGlmICghY2FuRHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVn
YXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7Ci0gICAgbV9kaXNwbGF5TGlz
dC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKLSAgICBhcHBlbmQ8RHJhd0ltYWdlQnVm
ZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworCisgICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIp
OworICAgIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBy
ZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4o
aW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5
KCk7CisgICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2UpOworICAgIHJlY29yZERyYXdOYXRpdmVJ
bWFnZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJu
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwotICAgIGFwcGVuZDxEcmF3
UGF0dGVybj4oaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0
aW9ucyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNv
cmRSZXNvdXJjZVVzZShpbWFnZSk7CisgICAgcmVjb3JkRHJhd1BhdHRlcm4oaW1hZ2UucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVj
b3JkZXI6OnNhdmUoKQogewotICAgIGFwcGVuZDxTYXZlPigpOworICAgIHJlY29yZFNhdmUoKTsK
ICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JTYXZl
KCkpOwogfQogCkBAIC0yMzEsMjUgKzE5MywyNSBAQCB2b2lkIFJlY29yZGVyOjpyZXN0b3JlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICBh
cHBlbmQ8UmVzdG9yZT4oKTsKKyAgICByZWNvcmRSZXN0b3JlKCk7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnRy
YW5zbGF0ZSh4LCB5KTsKLSAgICBhcHBlbmQ8VHJhbnNsYXRlPih4LCB5KTsKKyAgICByZWNvcmRU
cmFuc2xhdGUoeCwgeSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnJvdGF0ZShmbG9hdCBhbmdsZUlu
UmFkaWFucykKIHsKICAgICBjdXJyZW50U3RhdGUoKS5yb3RhdGUoYW5nbGVJblJhZGlhbnMpOwot
ICAgIGFwcGVuZDxSb3RhdGU+KGFuZ2xlSW5SYWRpYW5zKTsKKyAgICByZWNvcmRSb3RhdGUoYW5n
bGVJblJhZGlhbnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzY2FsZShjb25zdCBGbG9hdFNpemUm
IHNpemUpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuc2NhbGUoc2l6ZSk7Ci0gICAgYXBwZW5kPFNj
YWxlPihzaXplKTsKKyAgICByZWNvcmRTY2FsZShzaXplKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQpAQCAtMjU4LDEzICsy
MjAsMTMgQEAgdm9pZCBSZWNvcmRlcjo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtKQogICAgICAgICByZXR1cm47CiAKICAgICBjdXJyZW50U3RhdGUoKS5jb25jYXRD
VE0odHJhbnNmb3JtKTsKLSAgICBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KHRyYW5zZm9ybSk7Cisg
ICAgcmVjb3JkQ29uY2F0ZW5hdGVDVE0odHJhbnNmb3JtKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIGN1cnJlbnRT
dGF0ZSgpLnNldENUTSh0cmFuc2Zvcm0pOwotICAgIGFwcGVuZDxTZXRDVE0+KHRyYW5zZm9ybSk7
CisgICAgcmVjb3JkU2V0Q1RNKHRyYW5zZm9ybSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBSZWNv
cmRlcjo6Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdApA
QCAtMjc1LDU0ICsyMzcsNjQgQEAgQWZmaW5lVHJhbnNmb3JtIFJlY29yZGVyOjpnZXRDVE0oR3Jh
cGhpY3NDb250ZXh0OjpJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6
OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKIHsKLSAgICBhcHBlbmQ8QmVn
aW5UcmFuc3BhcmVuY3lMYXllcj4ob3BhY2l0eSk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVt
SWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQobV9zdGF0ZVN0YWNrLmxhc3QoKS5jbG9uZUZvclRy
YW5zcGFyZW5jeUxheWVyKCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjplbmRUcmFuc3BhcmVuY3lM
YXllcigpCiB7Ci0gICAgYXBwZW5kPEVuZFRyYW5zcGFyZW5jeUxheWVyPigpOworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB2b2lkIFJlY29y
ZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykKIHsKLSAgICBhcHBlbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcyk7CisgICAg
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3UmVjdChy
ZWN0LCBib3JkZXJUaGlja25lc3MpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MikKIHsKLSAgICBh
cHBlbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdMaW5lKHBvaW50MSwgcG9pbnQyKTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcywgU3Ryb2tlU3R5bGUpCiB7Ci0gICAgYXBwZW5kPERyYXdMaW5l
c0ZvclRleHQ+KEZsb2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocG9pbnQpLCB0aGlja25lc3MsIHdp
ZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1J
Zk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdMaW5lc0ZvclRleHQoRmxvYXRQb2ludCgpLCB0
b0Zsb2F0U2l6ZShwb2ludCksIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGlu
ZXMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCiB7Ci0gICAg
YXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KHJlY3QsIHN0eWxlKTsKKyAgICBhcHBl
bmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXIocmVjdCwgc3R5bGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3RWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXBwZW5kPERyYXdFbGxpcHNlPihyZWN0
KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERy
YXdFbGxpcHNlKHJlY3QpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0aChjb25zdCBQYXRo
JiBwYXRoKQogewotICAgIGFwcGVuZDxEcmF3UGF0aD4ocGF0aCk7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3UGF0aChwYXRoKTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB3aWR0
aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPERyYXdG
b2N1c1JpbmdQYXRoPihwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CisgICAgYXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChw
YXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdGb2N1
c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwgZmxvYXQg
b2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPERyYXdGb2N1c1JpbmdS
ZWN0cz4ocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5n
ZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZERyYXdGb2N1c1JpbmdSZWN0cyhyZWN0cywg
d2lkdGgsIG9mZnNldCwgY29sb3IpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzM5LDEy
MiArMzExLDEzNiBAQCB2b2lkIFJlY29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZG91YmxlLCBib29sJiwgY29uc3QgQ29sbwogCiB2b2lkIFJlY29yZGVyOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0Pihy
ZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29y
ZEZpbGxSZWN0KHJlY3QpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RX
aXRoQ29sb3I+KHJlY3QsIGNvbG9yKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEZpbGxSZWN0V2l0aENvbG9yKHJlY3QsIGNvbG9yKTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYg
Z3JhZGllbnQpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50PihyZWN0LCBncmFk
aWVudCk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNv
cmRGaWxsUmVjdFdpdGhHcmFkaWVudChyZWN0LCBncmFkaWVudCk7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBhcHBlbmQ8
RmlsbENvbXBvc2l0ZWRSZWN0PihyZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CisgICAgYXBw
ZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRGaWxsQ29tcG9zaXRl
ZFJlY3QocmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpm
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGFwcGVuZDxGaWxsUm91bmRlZFJl
Y3Q+KHJlY3QsIGNvbG9yLCBibGVuZE1vZGUpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlm
TmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJvdW5kZWRSZWN0KHJlY3QsIGNvbG9yLCBibGVu
ZE1vZGUpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4ocmVjdCwgcm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CisgICAgYXBwZW5kU3RhdGVDaGFu
Z2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShy
ZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKIHsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChwYXRoLmhhc0lu
bGluZURhdGEoKSkgewogICAgICAgICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPExpbmVEYXRhPigp
KQotICAgICAgICAgICAgYXBwZW5kPEZpbGxMaW5lPihwYXRoLmlubGluZURhdGE8TGluZURhdGE+
KCkpOworICAgICAgICAgICAgcmVjb3JkRmlsbExpbmUocGF0aC5pbmxpbmVEYXRhPExpbmVEYXRh
PigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPEFyY0RhdGE+KCkpCi0g
ICAgICAgICAgICBhcHBlbmQ8RmlsbEFyYz4ocGF0aC5pbmxpbmVEYXRhPEFyY0RhdGE+KCkpOwor
ICAgICAgICAgICAgcmVjb3JkRmlsbEFyYyhwYXRoLmlubGluZURhdGE8QXJjRGF0YT4oKSk7CiAg
ICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigpKQotICAg
ICAgICAgICAgYXBwZW5kPEZpbGxRdWFkQ3VydmU+KHBhdGguaW5saW5lRGF0YTxRdWFkQ3VydmVE
YXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZEZpbGxRdWFkQ3VydmUocGF0aC5pbmxpbmVEYXRh
PFF1YWRDdXJ2ZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8
QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPEZpbGxCZXppZXJDdXJ2ZT4o
cGF0aC5pbmxpbmVEYXRhPEJlemllckN1cnZlRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRG
aWxsQmV6aWVyQ3VydmUocGF0aC5pbmxpbmVEYXRhPEJlemllckN1cnZlRGF0YT4oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBhcHBlbmQ8RmlsbFBhdGg+KHBhdGgpOwor
ICAgIHJlY29yZEZpbGxQYXRoKHBhdGgpOwogfQogCiB2b2lkIFJlY29yZGVyOjpmaWxsRWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgYXBwZW5kPEZpbGxFbGxpcHNlPihyZWN0
KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEZp
bGxFbGxpcHNlKHJlY3QpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzdHJva2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogewotICAgIGFwcGVuZDxTdHJva2VSZWN0
PihyZWN0LCBsaW5lV2lkdGgpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5
KCk7CisgICAgcmVjb3JkU3Ryb2tlUmVjdChyZWN0LCBsaW5lV2lkdGgpOwogfQogCiB2b2lkIFJl
Y29yZGVyOjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiB7CisgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAg
ICBpZiAocGF0aC5oYXNJbmxpbmVEYXRhKCkpIHsKICAgICAgICAgaWYgKHBhdGguaGFzSW5saW5l
RGF0YTxMaW5lRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxTdHJva2VMaW5lPihwYXRoLmlu
bGluZURhdGE8TGluZURhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlTGluZShwYXRo
LmlubGluZURhdGE8TGluZURhdGE+KCkpOwogICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGlu
ZURhdGE8QXJjRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxTdHJva2VBcmM+KHBhdGguaW5s
aW5lRGF0YTxBcmNEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUFyYyhwYXRoLmlu
bGluZURhdGE8QXJjRGF0YT4oKSk7CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0
YTxRdWFkQ3VydmVEYXRhPigpKQotICAgICAgICAgICAgYXBwZW5kPFN0cm9rZVF1YWRDdXJ2ZT4o
cGF0aC5pbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ry
b2tlUXVhZEN1cnZlKHBhdGguaW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigpKTsKICAgICAgICAg
ZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPEJlemllckN1cnZlRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxTdHJva2VCZXppZXJDdXJ2ZT4ocGF0aC5pbmxpbmVEYXRhPEJlemllckN1cnZl
RGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VCZXppZXJDdXJ2ZShwYXRoLmlubGlu
ZURhdGE8QmV6aWVyQ3VydmVEYXRhPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgotICAgIGFwcGVuZDxTdHJva2VQYXRoPihwYXRoKTsKKyAgICByZWNvcmRTdHJva2VQYXRoKHBh
dGgpOwogfQogCiB2b2lkIFJlY29yZGVyOjpzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKIHsKLSAgICBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4ocmVjdCk7CisgICAgYXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRTdHJva2VFbGxpcHNlKHJlY3Qp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIGFwcGVuZDxDbGVhclJlY3Q+KHJlY3QpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkQ2xlYXJSZWN0KHJlY3QpOwogfQogCiAjaWYgVVNF
KENHKQogdm9pZCBSZWNvcmRlcjo6YXBwbHlTdHJva2VQYXR0ZXJuKCkKIHsKLSAgICBhcHBlbmQ8
QXBwbHlTdHJva2VQYXR0ZXJuPigpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNz
YXJ5KCk7CisgICAgcmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCk7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OmFwcGx5RmlsbFBhdHRlcm4oKQogewotICAgIGFwcGVuZDxBcHBseUZpbGxQYXR0ZXJuPigp
OworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkQXBw
bHlGaWxsUGF0dGVybigpOwogfQogI2VuZGlmCiAKIHZvaWQgUmVjb3JkZXI6OmNsaXAoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJz
ZWN0KHJlY3QpOwotICAgIGFwcGVuZDxDbGlwPihyZWN0KTsKKyAgICByZWNvcmRDbGlwKHJlY3Qp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
LSAgICBhcHBlbmQ8Q2xpcE91dD4ocmVjdCk7CisgICAgcmVjb3JkQ2xpcE91dChyZWN0KTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQogewotICAgIGFwcGVu
ZDxDbGlwT3V0VG9QYXRoPihwYXRoKTsKKyAgICByZWNvcmRDbGlwT3V0VG9QYXRoKHBhdGgpOwog
fQogCiB2b2lkIFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSB3
aW5kUnVsZSkKIHsKICAgICBjdXJyZW50U3RhdGUoKS5jbGlwQm91bmRzLmludGVyc2VjdChwYXRo
LmZhc3RCb3VuZGluZ1JlY3QoKSk7Ci0gICAgYXBwZW5kPENsaXBQYXRoPihwYXRoLCB3aW5kUnVs
ZSk7CisgICAgcmVjb3JkQ2xpcFBhdGgocGF0aCwgd2luZFJ1bGUpOwogfQogCiBJbnRSZWN0IFJl
Y29yZGVyOjpjbGlwQm91bmRzKCkgY29uc3QKQEAgLTQ2NCwxMCArNDUwLDggQEAgSW50UmVjdCBS
ZWNvcmRlcjo6Y2xpcEJvdW5kcygpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1h
Z2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcik7Ci0gICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1
ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOworICAgIHJlY29y
ZFJlc291cmNlVXNlKGltYWdlQnVmZmVyKTsKKyAgICByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQog
CiBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBSZWNvcmRlcjo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCkBAIC00ODMsMTAgKzQ2NywxMCBAQCBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBSZWNvcmRlcjo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbgogICAgIGluaXRpYWxDVE0udHJhbnNsYXRlKDAsIC1zY2FsZWRT
aXplLmhlaWdodCgpKTsKICAgICBpbml0aWFsQ1RNLnNjYWxlKHNjYWxlZFNpemUgLyBkZXN0aW5h
dGlvbi5zaXplKCkpOwogCi0gICAgUmVjb3JkZXIgbmVzdGVkQ29udGV4dCgqdGhpcywgR3JhcGhp
Y3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwotICAgIGFwcGVuZDxC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpOwotICAg
IGRyYXdpbmdGdW5jdGlvbihuZXN0ZWRDb250ZXh0KTsKLSAgICBhcHBlbmQ8RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbik7CisgICAgYXV0byBuZXN0ZWRDb250ZXh0ID0gY3Jl
YXRlTmVzdGVkQ29udGV4dChpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7CisgICAgcmVjb3JkQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UpOworICAgIGRy
YXdpbmdGdW5jdGlvbigqbmVzdGVkQ29udGV4dCk7CisgICAgcmVjb3JkRW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGRlc3RpbmF0aW9uKTsKIAogICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQ6OlN1Y2Nlc3M7CiB9CkBAIC00OTksNyArNDgzLDcgQEAgdm9pZCBSZWNvcmRlcjo6
cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQocGxheWVyLmlkZW50
aWZpZXIoKSk7Ci0gICAgYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4ocGxheWVyLCBkZXN0aW5h
dGlvbik7CisgICAgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKHBsYXllciwgZGVzdGluYXRpb24p
OwogfQogI2VuZGlmCiAKQEAgLTUwNyw3ICs0OTEsNyBAQCB2b2lkIFJlY29yZGVyOjphcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1F
OiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0sIHdoaWNoIHdpbGwgaW52YWxpZGF0ZSBhbGwgb2Yg
b3VyIGNhY2hlZCBleHRlbnRzLgogICAgIC8vIEFzc2VydCB0aGF0IGl0J3Mgb25seSBjYWxsZWQg
ZWFybHkgb24/Ci0gICAgYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIAogRmxvYXRSZWN0IFJlY29yZGVyOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpCkBAIC01MjYs
MjUgKzUxMCw2IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hhZG93UGFpbnRpbmdFeHRlbnQoZmxv
YXQgYmx1clJhZGl1cykKICAgICByZXR1cm4gY2VpbGYoYmx1clJhZGl1cyAqIHJhZGl1c0V4dGVu
dE11bHRpcGxpZXIpOwogfQogCi1GbG9hdFJlY3QgUmVjb3JkZXI6OmV4dGVudEZyb21Mb2NhbEJv
dW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Ci17Ci0gICAgRmxvYXRSZWN0IGJvdW5k
cyA9IHJlY3Q7Ci0gICAgY29uc3QgQ29udGV4dFN0YXRlJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgp
OwotCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dSYWRpdXM7
Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGdldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBzaGFkb3dF
eHRlbnQgPSBib3VuZHM7Ci0gICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNldCk7
Ci0gICAgICAgIHNoYWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNoYWRv
d1JhZGl1cykpOwotICAgICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsKLSAgICB9Ci0g
ICAgCi0gICAgRmxvYXRSZWN0IGNsaXBwZWRFeHRlbnQgPSBpbnRlcnNlY3Rpb24oc3RhdGUuY2xp
cEJvdW5kcywgYm91bmRzKTsKLSAgICByZXR1cm4gc3RhdGUuY3RtLm1hcFJlY3QoY2xpcHBlZEV4
dGVudCk7Ci19Ci0KIGNvbnN0IFJlY29yZGVyOjpDb250ZXh0U3RhdGUmIFJlY29yZGVyOjpjdXJy
ZW50U3RhdGUoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N0YXRlU3RhY2suc2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGFlOTZmNmU3N2Q2NmVkNzBk
MTUyNGYzZTFjMDVhMzExZjJjZjE5OTAuLjliZjM1YjVkZDgwYTVkNDgyOGNhMGExNDY1YTIyZDJm
MWE3ZTM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkRyYXdHbHlwaHNSZWNvcmRlci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1
bGUuCisjaW5jbHVkZSAiSW5saW5lUGF0aERhdGEuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNTQsMzYgKzU1LDEzOSBAQCBjbGFz
cyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoK
LSAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihEaXNwbGF5
TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlY29yZGVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRy
YXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgflJlY29yZGVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0
Rm9ybWF0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRl
eHRGbHVzaElkZW50aWZpZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JU
IFJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNKTsKKworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTYXZlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRSZXN0b3JlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRUcmFu
c2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSb3Rh
dGUoZmxvYXQgYW5nbGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2NhbGUoY29uc3Qg
RmxvYXRTaXplJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRDVE0oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDb25jYXRlbmF0ZUNU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNl
dElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0
TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRTZXRMaW5lSm9pbihMaW5lSm9pbikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZENsZWFyU2hhZG93KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwKGNvbnN0
IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcE91dChjb25zdCBG
bG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZENsaXBPdXRUb1BhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
Q2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291
bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lM
YXllcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9j
a0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3Ms
IGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd1BhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgoY29uc3QgUGF0aCYsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3
aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxv
YXRSZWN0JiwgR3JhZGllbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxDb21w
b3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKSA9IDA7Cisj
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxM
aW5lKGNvbnN0IExpbmVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQXJj
KGNvbnN0IEFyY0RhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxRdWFkQ3Vy
dmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmls
bEJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYpID0gMDsKKyNlbmRpZgorICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRGaWxsUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRGaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUHV0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgPSAwOworI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQorICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VMaW5lKGNvbnN0IExpbmVEYXRh
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VBcmMoY29uc3QgQXJjRGF0YSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRD
dXJ2ZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZUJlemllckN1cnZl
KGNvbnN0IEJlemllckN1cnZlRGF0YSYpID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOworI2lmIFVTRShDRykKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
RHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSkgPSAwOworCisgICAgc3RydWN0IENvbnRleHRTdGF0ZSB7CisgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBjdG07CisgICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKKworICAgICAgICBDb250ZXh0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQorICAgICAgICAgICAgOiBjdG0odHJhbnNmb3Jt
KQorICAgICAgICAgICAgLCBjbGlwQm91bmRzKGNsaXApCisgICAgICAgICAgICAsIGxhc3REcmF3
aW5nU3RhdGUoc3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRT
dGF0ZSBjbG9uZUZvclNhdmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBDb250ZXh0
U3RhdGUgc3RhdGUobGFzdERyYXdpbmdTdGF0ZSwgY3RtLCBjbGlwQm91bmRzKTsKKyAgICAgICAg
ICAgIHN0YXRlLnN0YXRlQ2hhbmdlID0gc3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXR1cm4g
c3RhdGU7CisgICAgICAgIH0KIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheUxpc3QuaXNFbXB0eSgpOyB9CisgICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZvclRy
YW5zcGFyZW5jeUxheWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzdGF0
ZSA9IGNsb25lRm9yU2F2ZSgpOworICAgICAgICAgICAgc3RhdGUubGFzdERyYXdpbmdTdGF0ZS5h
bHBoYSA9IDE7CisgICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgIH0KIAotICAgIGNs
YXNzIERlbGVnYXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkg
eyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VV
c2UoTmF0aXZlSW1hZ2UmKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VC
dWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250JikgeyB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZlciYpIHsgfQotICAgICAgICB2aXJ0
dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KKyAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CisgICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKKyAg
ICAgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICAgICAgdm9pZCBjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogICAgIH07CiAKLSAgICB2b2lkIGZsdXNoQ29udGV4dChHcmFwaGlj
c0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0
PihpZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+JiBzdGF0
ZVN0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrOyB9CisgICAgYm9vbCBpc05lc3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXN0ZWQ7IH0KIAotcHJpdmF0ZToKLSAgICBSZWNvcmRl
cihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7
CisgICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKKyAgICBDb250
ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCitwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZv
cm1Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBGSVhNRTog
TWF5YmUgcmVtb3ZlIHRoaXM/Ci0gICAgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1h
Z2VCdWZmZXImKSBjb25zdDsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IGZpbmFsOwogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElS
RUNUMkQpCiAgICAgdm9pZCBzZXRJc0NBTGF5ZXJDb250ZXh0KGJvb2wpIGZpbmFsIHsgfQpAQCAt
OTQsMTg0ICsxOTgsOTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYs
IGJvb2wsIGJvb2wsIFN0cm9rZVN0eWxlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBj
b25zdCBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAot
ICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBmaW5hbDsKLSAgICB2b2lkIHNldExpbmVEYXNo
KGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgc2V0
TGluZUpvaW4oTGluZUpvaW4pIGZpbmFsOwotICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5Jiwg
ZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5l
Sm9pbihMaW5lSm9pbikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNaXRlckxp
bWl0KGZsb2F0KSBmaW5hbDsKIAotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7Ci0gICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYp
IGZpbmFsOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBm
aW5hbDsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBmaWxsUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBm
aW5hbDsKLSAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKSBm
aW5hbDsKLSAgICB2b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIGZp
bGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tl
UGF0aChjb25zdCBQYXRoJikgZmluYWw7Ci0gICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZs
b2F0UmVjdCYpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jikg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2Rl
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxQYXRo
KGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3Ryb2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwog
CiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBhcHBseVN0cm9rZVBhdHRl
cm4oKSBmaW5hbDsKLSAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lk
IGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3R2x5
cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBj
b25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwog
Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmlu
YWw7CiAKLSAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykgZmluYWw7Ci0gICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYpIGZpbmFsOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9v
bCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcywgU3Ryb2tlU3R5bGUpIGZpbmFsOwotICAgIHZv
aWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBv
aW50JiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVMaW5lcywgU3Ryb2tlU3R5bGUpIGZpbmFsOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBE
b2N1bWVudE1hcmtlckxpbmVTdHlsZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd1BhdGgo
Y29uc3QgUGF0aCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdGgoY29u
c3QgUGF0aCYpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBm
bG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOwotICAgIHZvaWQg
ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9h
dCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25z
dCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0
IENvbG9yJikgZmluYWw7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBkcmF3Rm9jdXNS
aW5nKGNvbnN0IFBhdGgmLCBkb3VibGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNv
bnN0IENvbG9yJikgZmluYWw7Ci0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBD
b2xvciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25z
dCBQYXRoJiwgZG91YmxlIHRpbWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBDb2xv
ciYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywg
Y29uc3QgQ29sb3ImKSBmaW5hbDsKICNlbmRpZgogCi0gICAgdm9pZCBzYXZlKCkgZmluYWw7Ci0g
ICAgdm9pZCByZXN0b3JlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlKCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlKCkgZmluYWw7CiAKLSAgICB2
b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHJvdGF0ZShm
bG9hdCBhbmdsZUluUmFkaWFucykgZmluYWw7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNp
emUmKSBmaW5hbDsKLSAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBm
aW5hbDsKLSAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNj
YWxlKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShmbG9h
dCB4LCBmbG9hdCB5KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvdGF0ZShmbG9h
dCBhbmdsZUluUmFkaWFucykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2FsZShj
b25zdCBGbG9hdFNpemUmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmNhdENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNj
YWxlKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcGFjaXR5KSBmaW5hbDsKLSAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9w
YWNpdHkpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKSBmaW5hbDsKIAotICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAg
ICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBjbGlwT3V0
KGNvbnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5k
UnVsZSkgZmluYWw7Ci0gICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3QgZmluYWw7Ci0gICAg
dm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYpIGZpbmFsOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXAo
Y29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0
KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcE91
dChjb25zdCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3Qg
Y2xpcEJvdW5kcygpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikgZmluYWw7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCBwYWludEZyYW1lRm9y
TWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lk
IGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHJv
dW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3Vu
ZGluZ01vZGUpIGZpbmFsOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJn
cz4KLSAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIGlmIChV
TkxJS0VMWSghY2FuQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSkpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmIGNvbnN0ZXhwciAoaXRlbU5lZWRzU3RhdGU8VD4oKSkKLSAg
ICAgICAgICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0KLSAgICAgICAg
bV9kaXNwbGF5TGlzdC5hcHBlbmQ8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFs
OwogCi0gICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNEcmF3aW5nSXRlbSkgewotICAgICAgICAg
ICAgaWYgKExJS0VMWSghbV9kaXNwbGF5TGlzdC50cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBhdXRvIGl0ZW0gPSBUKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICBpZiAoYXV0byByZWN0ID0g
aXRlbS5sb2NhbEJvdW5kcygqdGhpcykpCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5h
ZGREcmF3aW5nSXRlbUV4dGVudChleHRlbnRGcm9tTG9jYWxCb3VuZHMoKnJlY3QpKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCi0gICAgICAg
ICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRl
bUV4dGVudChzdGQ6Om51bGxvcHQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYW5BcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSBjb25zdDsKLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGl0ZW1OZWVkc1N0
YXRlKCk7Ci0KLSAgICB2b2lkIHJlY29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxv
YXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAgdm9p
ZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgYXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCi0gICAgRmxvYXRSZWN0IGV4dGVudEZy
b21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICAKICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGN0bSgpIGNvbnN0OwogCi0gICAgc3RydWN0IENvbnRleHRTdGF0ZSB7
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBjdG07Ci0gICAgICAgIEZsb2F0UmVjdCBjbGlwQm91
bmRzOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKLSAgICAgICAgCi0g
ICAgICAgIENvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCi0g
ICAgICAgICAgICA6IGN0bSh0cmFuc2Zvcm0pCi0gICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xp
cCkKLSAgICAgICAgICAgICwgbGFzdERyYXdpbmdTdGF0ZShzdGF0ZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZlKCkgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3REcmF3aW5n
U3RhdGUsIGN0bSwgY2xpcEJvdW5kcyk7Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNoYW5nZSA9
IHN0YXRlQ2hhbmdlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQ29udGV4dFN0YXRlIGNsb25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0gICAgICAg
ICAgICBzdGF0ZS5sYXN0RHJhd2luZ1N0YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAgIHJldHVy
biBzdGF0ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZs
b2F0IHkpOwotICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAg
ICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgICAgIHZvaWQgY29uY2F0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgICAgICB2b2lkIHNldENUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKLSAgICB9OwotICAgIAotICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3Vy
cmVudFN0YXRlKCkgY29uc3Q7Ci0gICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKLQot
ICAgIERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIERlbGVnYXRlKiBtX2RlbGVnYXRl
OwotICAgIGJvb2wgbV9pc05lc3RlZDsKLQogICAgIFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+IG1f
c3RhdGVTdGFjazsKLQogICAgIERyYXdHbHlwaHNSZWNvcmRlciBtX2RyYXdHbHlwaHNSZWNvcmRl
cjsKKyAgICBib29sIG1faXNOZXN0ZWQgeyBmYWxzZSB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWNvbnN0ZXhwciBib29sIFJlY29yZGVyOjppdGVtTmVlZHNTdGF0ZSgpCi17Ci0gICAg
aWYgKFQ6OmlzRHJhd2luZ0l0ZW0pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgVVNFKENH
KQotICAgIGlmIChUOjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybiB8fCBU
OjppdGVtVHlwZSA9PSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci19Cit9IC8vIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjgyZjkx
MDE1N2RmY2I1MDNjMzcyY2NiMzNmOGU0ZTVhMTI5NWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcApAQCAtMCwwICsxLDQ2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNw
bGF5TGlzdFJlY29yZGVyLmgiCisKKyNpbmNsdWRlICJEaXNwbGF5TGlzdC5oIgorI2luY2x1ZGUg
IkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1z
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgRGlzcGxheUxpc3QgeworCitSZWNvcmRlckltcGw6OlJlY29yZGVySW1wbChEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNLCBEZWxlZ2F0ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKKyAgICA6IFJlY29yZGVyKHN0
YXRlLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSwgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQor
ICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdh
dGUpCit7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJl
Y29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7Cit9CisKK1JlY29yZGVySW1wbDo6
UmVjb3JkZXJJbXBsKFJlY29yZGVySW1wbCYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSkKKyAgICA6IFJlY29yZGVyKHBhcmVudCwgc3RhdGUsIGluaXRp
YWxDbGlwLCBpbml0aWFsQ1RNKQorICAgICwgbV9kaXNwbGF5TGlzdChwYXJlbnQubV9kaXNwbGF5
TGlzdCkKKyAgICAsIG1fZGVsZWdhdGUocGFyZW50Lm1fZGVsZWdhdGUpCit7Cit9CisKK1JlY29y
ZGVySW1wbDo6flJlY29yZGVySW1wbCgpCit7CisgICAgQVNTRVJUKHN0YXRlU3RhY2soKS5zaXpl
KCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBtaXNtYXRjaGVkIHNhdmUv
cmVzdG9yZS4KKyAgICBpZiAoIWlzTmVzdGVkKCkpCisgICAgICAgIExPRyhEaXNwbGF5TGlzdHMs
ICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3JpcHRpb24o
KS5kYXRhKCkpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCkKK3sKKyAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgc291cmNlUmVj
dCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKK3sKKyAgICBh
cHBlbmQ8UHV0UGl4ZWxCdWZmZXI+KHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRl
c3RGb3JtYXQpOworfQorCitib29sIFJlY29yZGVySW1wbDo6Y2FuQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSB0eXBlKSBjb25zdAoreworICAgIHJldHVybiAhbV9kZWxlZ2F0ZSB8fCBtX2RlbGVn
YXRlLT5jYW5BcHBlbmRJdGVtT2ZUeXBlKHR5cGUpOworfQorCitib29sIFJlY29yZGVySW1wbDo6
Y2FuRHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+aXNDYWNoZWRJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcik7Cit9CisKK1JlbmRlcmluZ01vZGUgUmVjb3JkZXJJbXBsOjpyZW5k
ZXJpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZSA/IG1fZGVsZWdhdGUt
PnJlbmRlcmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlY29yZGVySW1wbDo6Y3JlYXRlTmVzdGVk
Q29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0pCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXJJbXBsPigq
dGhpcywgR3JhcGhpY3NDb250ZXh0U3RhdGUgeyB9LCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTYXZlKCkKK3sKKyAgICBhcHBlbmQ8U2F2
ZT4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc3RvcmUoKQoreworICAgIGFw
cGVuZDxSZXN0b3JlPigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkVHJhbnNsYXRl
KGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgYXBwZW5kPFRyYW5zbGF0ZT4oeCwgeSk7Cit9CisK
K3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSb3RhdGUoZmxvYXQgYW5nbGUpCit7CisgICAgYXBw
ZW5kPFJvdGF0ZT4oYW5nbGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2NhbGUo
Y29uc3QgRmxvYXRTaXplJiBzY2FsZSkKK3sKKyAgICBhcHBlbmQ8U2NhbGU+KHNjYWxlKTsKK30K
Kwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKK3sKKyAgICBhcHBlbmQ8U2V0Q1RNPih0cmFuc2Zvcm0pOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pCit7CisgICAgYXBwZW5kPENvbmNhdGVuYXRlQ1RNPih0cmFuc2Zvcm0pOwor
fQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNSR0JBPHVp
bnQ4X3Q+IGlubGluZUNvbG9yKQoreworICAgIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGlu
bGluZUNvbG9yKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldElubGluZVN0cm9r
ZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+IGlubGluZUNvbG9yKQoreworICAgIGFwcGVuZDxTZXRJbmxp
bmVTdHJva2VDb2xvcj4oaW5saW5lQ29sb3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykKK3sKKyAgICBhcHBlbmQ8U2V0
U3Ryb2tlVGhpY2tuZXNzPih0aGlja25lc3MpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKK3sKKyAgICBhcHBlbmQ8
U2V0U3RhdGU+KHN0YXRlLCBjaGFuZ2VGbGFncyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRTZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKK3sKKyAgICBhcHBlbmQ8U2V0TGluZUNh
cD4obGluZUNhcCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5lRGFzaChj
b25zdCBEYXNoQXJyYXkmIGFycmF5LCBmbG9hdCBkYXNoT2Zmc2V0KQoreworICAgIGFwcGVuZDxT
ZXRMaW5lRGFzaD4oYXJyYXksIGRhc2hPZmZzZXQpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4gam9pbikKK3sKKyAgICBhcHBlbmQ8U2V0TGluZUpv
aW4+KGpvaW4pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TWl0ZXJMaW1pdChm
bG9hdCBsaW1pdCkKK3sKKyAgICBhcHBlbmQ8U2V0TWl0ZXJMaW1pdD4obGltaXQpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xlYXJTaGFkb3coKQoreworICAgIGFwcGVuZDxDbGVh
clNoYWRvdz4oKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXAoY29uc3QgRmxv
YXRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xpcD4oY2xpcFJlY3QpOworfQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcE91dChjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0
KQoreworICAgIGFwcGVuZDxDbGlwT3V0PihjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkK
K3sKKyAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVySWRlbnRpZmllciwg
ZGVzdGluYXRpb25SZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBPdXRU
b1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4ocGF0
aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSBydWxlKQoreworICAgIGFwcGVuZDxDbGlwUGF0aD4ocGF0aCwgcnVsZSk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3sKKyAgICBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3Rp
bmF0aW9uLCBjb2xvclNwYWNlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEVuZENs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAg
IGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9uKTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlIG1vZGUpCit7CisgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBo
cywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgbW9kZSk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmREcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3sKKyAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZUlkZW50aWZpZXIs
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBh
cHBlbmQ8RHJhd1BhdHRlcm4+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5
KQoreworICAgIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihvcGFjaXR5KTsKK30KKwor
dm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkKK3sKKyAgICBh
cHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKK3sK
KyAgICBhcHBlbmQ8RHJhd1JlY3Q+KHJlY3QsIGxpbmVXaWR0aCk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmREcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50MikKK3sKKyAgICBhcHBlbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQy
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdMaW5lc0ZvclRleHQoY29uc3Qg
RmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwg
ZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywg
Ym9vbCBkb3VibGVMaW5lcykKK3sKKyAgICBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4dD4oYmxvY2tM
b2NhdGlvbiwgbG9jYWxBbmNob3IsIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91Ymxl
TGluZXMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERvY3VtZW50TWFya2VyTGluZVN0
eWxlJiBzdHlsZSkKK3sKKyAgICBhcHBlbmQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4ocmVj
dCwgc3R5bGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0VsbGlwc2UoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGFwcGVuZDxEcmF3RWxsaXBzZT4ocmVjdCk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQor
eworICAgIGFwcGVuZDxEcmF3UGF0aD4ocGF0aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB3aWR0aCwgZmxv
YXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPERyYXdGb2N1c1Jp
bmdQYXRoPihwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJl
Y3RzLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCit7Cisg
ICAgYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4ocmVjdHMsIHdpZHRoLCBvZmZzZXQsIGNvbG9y
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8RmlsbFJlY3Q+KHJlY3QpOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihyZWN0
LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhHcmFk
aWVudChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKK3sKKyAgICBh
cHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KHJlY3QsIGdyYWRpZW50KTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBt
b2RlKQoreworICAgIGFwcGVuZDxGaWxsQ29tcG9zaXRlZFJlY3Q+KHJlY3QsIGNvbG9yLCBvcCwg
bW9kZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUg
bW9kZSkKK3sKKyAgICBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0PihyZWN0LCBjb2xvciwgbW9kZSk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0
LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlPihyZWN0LCByb3VuZGVkUmVjdCwgY29sb3IpOworfQorCisjaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsTGluZShjb25zdCBMaW5l
RGF0YSYgbGluZSkKK3sKKyAgICBhcHBlbmQ8RmlsbExpbmU+KGxpbmUpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRmlsbEFyYyhjb25zdCBBcmNEYXRhJiBhcmMpCit7CisgICAgYXBw
ZW5kPEZpbGxBcmM+KGFyYyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUXVh
ZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKQoreworICAgIGFwcGVuZDxGaWxsUXVh
ZEN1cnZlPihjdXJ2ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQmV6aWVy
Q3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJiBjdXJ2ZSkKK3sKKyAgICBhcHBlbmQ8RmlsbEJl
emllckN1cnZlPihjdXJ2ZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
Cit7CisgICAgYXBwZW5kPEZpbGxQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8
RmlsbEVsbGlwc2U+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkR2V0UGl4
ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0LCByZWN0KTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVs
QnVmZmVyJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gcHJlbXVsdGlwbGljYXRpb24pCit7Cisg
ICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihidWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgcHJl
bXVsdGlwbGljYXRpb24pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUGFpbnRGcmFt
ZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pCit7CisgICAgYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4ocGxheWVyLCBkZXN0aW5hdGlv
bik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgd2lkdGgpCit7CisgICAgYXBwZW5kPFN0cm9rZVJlY3Q+KHJlY3Qs
IHdpZHRoKTsKK30KKworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU3Ryb2tlTGluZShjb25zdCBMaW5lRGF0YSYgbGluZSkKK3sKKyAgICBh
cHBlbmQ8U3Ryb2tlTGluZT4obGluZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
dHJva2VBcmMoY29uc3QgQXJjRGF0YSYgYXJjKQoreworICAgIGFwcGVuZDxTdHJva2VBcmM+KGFy
Yyk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VRdWFkQ3VydmUoY29uc3Qg
UXVhZEN1cnZlRGF0YSYgY3VydmUpCit7CisgICAgYXBwZW5kPFN0cm9rZVF1YWRDdXJ2ZT4oY3Vy
dmUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29u
c3QgQmV6aWVyQ3VydmVEYXRhJiBjdXJ2ZSkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlQmV6aWVyQ3Vy
dmU+KGN1cnZlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQorewor
ICAgIGFwcGVuZDxTdHJva2VQYXRoPihwYXRoKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGFwcGVuZDxT
dHJva2VFbGxpcHNlPihyZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsZWFy
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPENsZWFyUmVjdD4ocmVj
dCk7Cit9CisKKyNpZiBVU0UoQ0cpCisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseVN0
cm9rZVBhdHRlcm4oKQoreworICAgIGFwcGVuZDxBcHBseVN0cm9rZVBhdHRlcm4+KCk7Cit9CisK
K3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkKK3sKKyAgICBhcHBl
bmQ8QXBwbHlGaWxsUGF0dGVybj4oKTsKK30KKworI2VuZGlmIC8vIFVTRShDRykKKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0
b3IpCit7CisgICAgYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KHNjYWxlRmFjdG9yKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3Jk
TmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFn
ZShpbWFnZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250
JiBmb250KQoreworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRGb250VXNlKGZvbnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyKQoreworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5yZWNv
cmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUlt
YWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKK30KKworRmxvYXRSZWN0IFJlY29yZGVySW1wbDo6ZXh0
ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBG
bG9hdFJlY3QgYm91bmRzID0gcmVjdDsKKyAgICBhdXRvJiBzdGF0ZSA9IGN1cnJlbnRTdGF0ZSgp
OworCisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dSYWRpdXM7
CisgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgaWYgKGdldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IpKSB7CisgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dF
eHRlbnQgPSBib3VuZHM7CisgICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNldCk7
CisgICAgICAgIHNoYWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNoYWRv
d1JhZGl1cykpOworICAgICAgICBib3VuZHMudW5pdGUoc2hhZG93RXh0ZW50KTsKKyAgICB9CisK
KyAgICBGbG9hdFJlY3QgY2xpcHBlZEV4dGVudCA9IGludGVyc2VjdGlvbihzdGF0ZS5jbGlwQm91
bmRzLCBib3VuZHMpOworICAgIHJldHVybiBzdGF0ZS5jdG0ubWFwUmVjdChjbGlwcGVkRXh0ZW50
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWJmNTljN2U5N2ZjZmQ0MzY0MmMwYWNmZTRiZjJhMzczMmM4MGJlYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJE
aXNwbGF5TGlzdFJlY29yZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKKworY2xhc3MgUmVjb3JkZXJJbXBsIDogcHVibGljIFJlY29yZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWNvcmRlckltcGwpOworcHVibGljOgorICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlY29yZGVySW1wbChEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bjo6RGVjb25zdHJ1Y3QpOworICAgIFJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVudCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pOworCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+UmVjb3JkZXJJbXBsKCk7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKTsgfQorCisgICAgY2xhc3MgRGVsZWdhdGUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFn
ZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYWNoZWRJbWFnZUJ1ZmZlcihjb25zdCBJ
bWFnZUJ1ZmZlciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRGb250VXNlKEZvbnQmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlY29yZElt
YWdlQnVmZmVyVXNlKEltYWdlQnVmZmVyJikgeyB9CisgICAgICAgIHZpcnR1YWwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZDsgfQorICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFs
OworICAgIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBp
ZGVudGlmaWVyKSBmaW5hbCB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50aWZpZXIpOyB9CisK
K3ByaXZhdGU6CisgICAgLy8gRklYTUU6IE1heWJlIHJlbW92ZSB0aGlzPworICAgIGJvb2wgY2Fu
RHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHJlY29y
ZFNhdmUoKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFJlc3RvcmUoKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsKKyAgICB2b2lkIHJlY29y
ZFJvdGF0ZShmbG9hdCBhbmdsZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRTY2FsZShjb25zdCBG
bG9hdFNpemUmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENvbmNhdGVuYXRlQ1RNKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKFNS
R0JBPHVpbnQ4X3Q+KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9y
KFNSR0JBPHVpbnQ4X3Q+KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFNldFN0cm9rZVRoaWNrbmVz
cyhmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZFNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRTZXRMaW5lRGFzaChjb25zdCBEYXNoQXJyYXkmLCBmbG9hdCBkYXNoT2Zmc2V0KSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZFNldExpbmVKb2luKExpbmVKb2luKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFNldE1pdGVyTGltaXQoZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xlYXJT
aGFkb3coKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXAoY29uc3QgRmxvYXRSZWN0JikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmRDbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qp
IGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcE91dFRvUGF0aChjb25zdCBQYXRoJikgZmluYWw7
CisgICAgdm9pZCByZWNvcmRDbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3Vu
dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5h
bDsKKyAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmlu
YWw7CisgICAgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmRCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0KSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRE
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRE
cmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
MikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9p
bnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRo
aWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYpIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkRHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmREcmF3UGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgdm9pZCByZWNv
cmREcmF3Rm9jdXNSaW5nUGF0aChjb25zdCBQYXRoJiwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdGb2N1c1JpbmdSZWN0
cyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNv
bnN0IENvbG9yJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aENvbG9yKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUmVjdFdpdGhH
cmFkaWVudChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkRmlsbENvbXBvc2l0ZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsOwor
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgIHZvaWQgcmVjb3JkRmlsbExpbmUoY29u
c3QgTGluZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxBcmMoY29uc3QgQXJjRGF0
YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVE
YXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxsQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVy
Q3VydmVEYXRhJikgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHJlY29yZEZpbGxQYXRoKGNvbnN0
IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVj
dCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3Jt
YXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRQ
dXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkUGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTdHJva2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBmaW5hbDsKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKKyAgICB2b2lkIHJlY29yZFN0cm9rZUxpbmUoY29uc3QgTGluZURhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIHJlY29yZFN0cm9rZUFyYyhjb25zdCBBcmNEYXRhJikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRTdHJva2VRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpIGZpbmFsOworICAg
IHZvaWQgcmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUoY29uc3QgQmV6aWVyQ3VydmVEYXRhJikgZmlu
YWw7CisjZW5kaWYKKyAgICB2b2lkIHJlY29yZFN0cm9rZVBhdGgoY29uc3QgUGF0aCYpIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkU3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
KyAgICB2b2lkIHJlY29yZENsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyNpZiBV
U0UoQ0cpCisgICAgdm9pZCByZWNvcmRBcHBseVN0cm9rZVBhdHRlcm4oKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZEFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKKyNlbmRpZgorICAgIHZvaWQgcmVj
b3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CisKKyAgICB2b2lkIHJlY29y
ZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJj
ZVVzZShGb250JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZl
ciYpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRl
TmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7Cisg
ICAgICAgIGlmIChVTkxJS0VMWSghY2FuQXBwZW5kSXRlbU9mVHlwZShUOjppdGVtVHlwZSkpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGlzcGxheUxpc3QuYXBwZW5kPFQ+KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisKKyAgICAgICAgaWYgY29uc3RleHByIChUOjpp
c0RyYXdpbmdJdGVtKSB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFtX2Rpc3BsYXlMaXN0LnRy
YWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGF1dG8gaXRlbSA9IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvIHJlY3QgPSBpdGVtLmxvY2FsQm91bmRzKCp0aGlzKSkKKyAgICAg
ICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KGV4dGVudEZyb21M
b2NhbEJvdW5kcygqcmVjdCkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXV0byByZWN0ID0gaXRl
bS5nbG9iYWxCb3VuZHMoKSkKKyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdp
bmdJdGVtRXh0ZW50KCpyZWN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZs
b2F0UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQXBwZW5kSXRlbU9m
VHlwZShJdGVtVHlwZSkgY29uc3Q7CisKKyAgICBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsK
KyAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZSB7IG51bGxwdHIgfTsKK307CisKK30KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNDJmYzQxOGM3OTgyMzMxNDk0ZWUyNzZiNmRhNDk5
NGExZTRjOTk2YS4uOGNlYzkyNDI2ODc1MTRjNmMyYzc3Yjc4OThjMGEzNGM5MDdkNWJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDsKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPiBjbGFzcyBU
aHJlYWRTYWZlUmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBC
YWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGUs
IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgewog
ICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyOjptX2RyYXdpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGU0NTQxZGZhYTFiOGYxOWQxYWY3OWNlMTk1OTYxMGIyZGRhY2I5
N2IuLmI2MTlhMTk2NzkzYzM2MWMyZGUzYzFmMDMzY2E3MzkzODk0YmMwNTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBTcGxpdCBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dlYkRyaXZlcl0gVXBkYXRlIHczYyBhbmQgc2VsZW5pdW0g
dGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmlu
ZGV4IDhhOWJkNWQyZjIxNGU3ZmIzMDg1MDVlMjdiN2U3NzdlOWFmYzk5ZDYuLjM0OWI2NTY1ODc4
ZmE2MGExOGNjN2E1M2YxNjJmMzE4MjBlNTc2MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhZGllbnRJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Q0cuaD4KQEAgLTU1LDcgKzU1LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0VGVzdHMsIEJhc2ljQmlmdXJjYXRlZENvbnRleHQpCiAgICAgR3JhcGhpY3NDb250ZXh0
Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7CiAKICAgICBJbk1lbW9y
eURpc3BsYXlMaXN0IGRpc3BsYXlMaXN0OwotICAgIFJlY29yZGVyIHNlY29uZGFyeUNvbnRleHQo
ZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhl
aWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHNlY29uZGFyeUNvbnRleHQoZGlzcGxheUxp
c3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsg
fSk7CiAKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwg
c2Vjb25kYXJ5Q29udGV4dCk7CiAKQEAgLTkxLDEwICs5MSwxMCBAQCBURVNUKEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVkQ29udGV4dCkKIFRFU1QoQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkKIHsKICAg
ICBJbk1lbW9yeURpc3BsYXlMaXN0IHByaW1hcnlEaXNwbGF5TGlzdDsKLSAgICBSZWNvcmRlciBw
cmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNv
bnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHByaW1h
cnlDb250ZXh0KHByaW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4
dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEluTWVtb3J5RGlzcGxheUxpc3Qg
c2Vjb25kYXJ5RGlzcGxheUxpc3Q7Ci0gICAgUmVjb3JkZXIgc2Vjb25kYXJ5Q29udGV4dChzZWNv
bmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0KSwgeyB9KTsKKyAgICBSZWNvcmRlckltcGwgc2Vjb25kYXJ5Q29udGV4dChzZWNv
bmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHBy
aW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440666</attachid>
            <date>2021-10-08 13:46:10 -0700</date>
            <delta_ts>2021-10-08 16:09:52 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-231404-20211008134609.patch</filename>
            <type>text/plain</type>
            <size>101156</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZmMTYxNGM2OTg5MDQ4
YzQxYzRiMjliNDY0ZDAxOGYyYzQ4NjI3MC4uMDVmYzljMjMxMjBkNjljNTA0YTkzOWI2YWI0YzUz
ZTM1YWEwMmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNCBAQAorMjAyMS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNy
ZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4K
KworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0aGUgY3VycmVudCBjb2RlIGluIHRoZSBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIgY2xhc3MgaW50byB0d28gY2xhc3NlczogYW4gYWJzdHJhY3QgYmFz
ZSBjbGFzcworICAgICAgICB3aXRoIHRoZSBleGlzdGluZyBuYW1lIChEaXNwbGF5TGlzdDo6UmVj
b3JkZXIpLCBhbmQgYSBuZXcgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyB2aXJ0dWFs
IGNsYXNzLAorICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsLiBTZWUgYmVsb3cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIHdpbGwgYWxsb3cgdXMg
dG8gaW50cm9kdWNlIGEgV2ViS2l0Mi1zcGVjaWZpYyBzdWJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgaW4gYSBzdWJzZXF1ZW50CisgICAgICAgIHBhdGNoLCB3aGljaCBpcyBzaW1pbGFy
IHRvIHRoZSBleGlzdGluZyBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgb2JqZWN0LCBidXQgd2lsbCBy
ZWNvcmQgaXRzIGRpc3BsYXkgbGlzdCBpdGVtcyBieQorICAgICAgICBzZW5kaW5nIHRoZW0gdG8g
dGhlIEdQVSBQcm9jZXNzIHRocm91Z2ggdGhlIElQQyBzdHJlYW0gY29ubmVjdGlvbiwgcmF0aGVy
IHRoYW4gYXBwZW5kIHRoZW0gdG8gYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgRGlzcGxheUxpc3Qu
CisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorCisgICAgICAgIENoYW5nZSB2YXJpb3Vz
IHVzZXMgb2YgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGwuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpyZWNvcmRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKworICAgICAgICBUaGUgYWJzdHJhY3QgUmVjb3JkZXIg
bm93IGNvbnRhaW5zIGxvZ2ljIGZvciBtYXBwaW5nIEdyYXBoaWNzQ29udGV4dCBtZXRob2QgY2Fs
bHMgaW50byBjYWxscyB0byByZWNvcmQKKyAgICAgICAgaW5kaXZpZHVhbCBkaXNwbGF5IGxpc3Qg
aXRlbXMuIE5vdGUgdGhhdCB3aGlsZSBtYW55IEdyYXBoaWNzQ29udGV4dCBtZXRob2RzIGNvcnJl
c3BvbmQgZGlyZWN0bHkgdG8gZGlzcGxheSBsaXN0CisgICAgICAgIGl0ZW1zLCBzb21lIG1ldGhv
ZHMgbWFwIHRvIG9uZSBvciBtb3JlIGRpc3BsYXkgbGlzdCBpdGVtcywgc3VjaCBhcyBzZXR0aW5n
IHN0YXRlIGNvbnNpc3Rpbmcgb25seSBvZiBpbmxpbmUgUE9ECisgICAgICAgIGRhdGEgb3IgZHJh
d2luZyBzaW1wbGUgcGF0aHMuIFRoZSBiYXNlIGNsYXNzIGFsc28gbWFuYWdlcyB1cGRhdGluZyBh
bmQgbWFpbnRhaW5pbmcgdGhlIHN0YXRlIHN0YWNrIChhIGxpc3Qgb2YKKyAgICAgICAgUmVjb3Jk
ZXI6OkNvbnRleHRTdGF0ZSkgd2hlbiBtb2RpZnlpbmcgZ3JhcGhpY3MgY29udGV4dCBzdGF0ZS4K
KworICAgICAgICBJbXBvcnRhbnRseSwgdGhpcyBtZWFucyB0aGF0IHRoZSBhYnN0cmFjdCBSZWNv
cmRlciBjbGFzcyBkb2VzIG5vdCBjb250YWluIGVpdGhlciBhIFJlY29yZGVyIERlbGVnYXRlLCBu
b3IgZG9lcworICAgICAgICBpdCBjb250YWluIGEgRGlzcGxheUxpc3QuIEluc3RlYWQsIHRoZSBj
b25jcmV0ZSBzdWJjbGFzcyAoRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCkgbm93IGhvbGRzIG9u
IHRvIHRoZSBsb2NhbAorICAgICAgICBEaXNwbGF5TGlzdC4KKworICAgICAgICBUaGlzIGFsc28g
ZW5zdXJlcyB0aGF0IHN1YmNsYXNzZXMgb2YgRGlzcGxheUxpc3Q6OlJlY29yZGVyIG9ubHkgbmVl
ZCB0byB3b3JyeSBhYm91dCAicmVjb3JkaW5nIiBkaXNwbGF5IGxpc3QKKyAgICAgICAgaXRlbXMg
Z2l2ZW4gdGhlaXIgY29uc3RpdHVlbnQgYXJndW1lbnRzLCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGlt
cGxlbWVudGluZyB0aGUgaW5kaXZpZHVhbCBHcmFwaGljc0NvbnRleHQgZHJhd2luZworICAgICAg
ICBtZXRob2RzLgorCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJl
Y29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6flJlY29y
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6c2V0TGluZURhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpzZXRMaW5lSm9pbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
c2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpmaWxsRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnN0cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGx5RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Z2V0UGl4ZWxCdWZmZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwdXRQaXhl
bEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FuQXBwZW5kSXRlbU9mVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhbkRyYXdJbWFnZUJ1
ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnJl
Y29yZERyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6Q29udGV4dFN0YXRlOjpDb250ZXh0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNsb25lRm9yU2F2ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y2xvbmVG
b3JUcmFuc3BhcmVuY3lMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OnN0YXRlU3RhY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYW5B
cHBlbmRJdGVtT2ZUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6RGVsZWdhdGU6OnJlY29yZE5hdGl2ZUltYWdlVXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmlzQ2FjaGVk
SW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6cmVjb3JkRm9udFVzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpyZWNvcmRJbWFnZUJ1
ZmZlclVzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OkRlbGVnYXRlOjpyZW5kZXJpbmdNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Zmx1c2hDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6aXRlbU5lZWRzU3RhdGUp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVySW1wbDo6UmVjb3JkZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6On5SZWNvcmRlckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6Z2V0UGl4ZWxCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cHV0UGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6Y2FuQXBwZW5kSXRlbU9m
VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpjYW5EcmF3SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVySW1wbDo6cmVuZGVyaW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpjcmVhdGVOZXN0ZWRDb250ZXh0KToKKworICAg
ICAgICBSZWZhY3RvciB0aGUgbmVzdGVkIFJlY29yZGVyIGxvZ2ljIHVzZWQgZm9yIGBSZWNvcmRl
cjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzYCwgc3VjaCB0aGF0IGl0J3Mgbm93IGEgc2VwYXJhdGUK
KyAgICAgICAgb3ZlcnJpZGUgcG9pbnQuIFRoaXMgYWxsb3dzIHN1YmNsYXNzZXMgdG8gaW5zdGFu
dGlhdGUgbmVzdGVkIGNvbnRleHRzIG9mIHRoZSBzYW1lIHR5cGUsIHdoaWxlIGtlZXBpbmcgdGhl
IG1haW4KKyAgICAgICAgbG9naWMgaW4gYGNsaXBUb0RyYXdpbmdDb21tYW5kc2AgaW4gdGhlIHNo
YXJlZCBiYXNlIGNsYXNzLgorCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpyZWNvcmRTYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZFJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkVHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRDVE0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQ29uY2F0ZW5hdGVDVE0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU2V0SW5s
aW5lRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTZXRMaW5l
Q2FwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZFNldExpbmVKb2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGw6OnJlY29yZFNldE1pdGVyTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQ2xlYXJTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZENsaXBUb0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZENsaXBPdXRUb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkQ2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6cmVjb3JkRHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3UGF0dGVybik6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRCZWdp
blRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZERyYXdMaW5lc0Zv
clRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVj
b3JkRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3Rm9jdXNSaW5nUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3Rm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVySW1wbDo6cmVjb3JkRmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3RXaXRoQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkRmls
bENvbXBvc2l0ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OnJlY29yZEZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxs
QXJjKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZEZpbGxRdWFkQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbEJlemllckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEdldFBpeGVsQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFB1dFBp
eGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6
OnJlY29yZFBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUxpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQXJjKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZVF1YWRD
dXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRTdHJva2VCZXppZXJDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXJJbXBsOjpyZWNvcmRTdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUVsbGlwc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkQ2xlYXJSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5U3Ryb2tlUGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNv
cmRBcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6ZXh0ZW50RnJvbUxvY2FsQm91
bmRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXJJbXBsOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjp+RGVsZWdhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGU6OmNhbkFwcGVuZEl0
ZW1PZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
RGVsZWdhdGU6OnJlY29yZE5hdGl2ZUltYWdlVXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRlOjppc0NhY2hlZEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRl
OjpyZWNvcmRGb250VXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
ckltcGw6OkRlbGVnYXRlOjpyZWNvcmRJbWFnZUJ1ZmZlclVzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZTo6cmVuZGVyaW5nTW9kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpyZWNvcmRE
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjphcHBlbmQpOgorCiAyMDIxLTEwLTA4ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0xpYldQRV0gRG8gbm90IGRlc3Ryb3kgRUdMIGJhY2tlbmQg
aWYgbm90IGNyZWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTRmYjNmODJiZDBiNzU1YTcwZjRmNmQzNzRhZjA5
MDI4NjJhMmJmZC4uM2EyNTNhZmYwMzUxYWI0Njk1OTAyZWE2MTRlMmUwZWI3ZmJiZjg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBEaXNwbGF5TGlzdDo6UmVjb3JkZXIg
aW50byBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGFuZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBTZWUgV2Vi
Q29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAyMS0xMC0wOCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bUXRd
IEFQSSBleHBvcnQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGE5NzY1NmI5ZjQ4YzIxOGIx
NzM0ZGYwNDYyYmVhMDQ2NzkzNmI5ODguLjkxMGYzMTc4ZTIzMGYwYzNmZWQ4M2IzZGQzNWMxNzQz
ODkwNjQwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTM5OSw2ICsxMzk5LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCAzNGQ5MWNhZmU2ZmY1ZDM1ZTI2NmE0NTJjZDNmZjUzMzY3MzBkNDczLi41YTc4ZjE5ZDJhZGI0
ZDBkZmUxMTQ1YmVkZmU3MDRjZWU4NzI3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsy
MDMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxp
c3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2ODIzOGU3MzdiOWVhNDg5ZTg1NDhjY2VmYTljMWZlYmRmNjg0NGM3Li43YTA0NTkyOWI3
NmZjYmVlMzkxZWQyZTM0M2Y3MzQ5ZDI5MGVjZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzQsNyArMzc0LDcgQEAKIAkJ
MEZFNTgwNjQxOTMyN0E2MjAwREUzMkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERF
MzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggKi87IH07CiAJCTBGRTVGQkQzMUMzREQ1MUUwMDA3
QTJDQSAvKiBEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFNUZCQ0IxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNUZCRDUx
QzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNEMUMzREQ1MUUwMDA3QTJDQSAvKiBE
aXNwbGF5TGlzdEl0ZW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVG
QkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFNUZCRDcxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZXBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkU3MTQwNjE0MjE3
MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyogU2Ny
b2xsYmFyVGhlbWVNb2NrLmggKi87IH07CiAJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1NSAvKiBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFNzkxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUzOTMsNiArNTM5Myw3IEBACiAJCUY0MjBGMDBBMjVF
NDc3OTEwMDkyNTFFRiAvKiBQb2ludGVyRXZlbnRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjBGMDA4MjVFNDc3OTEwMDkyNTFFRiAv
KiBQb2ludGVyRXZlbnRUeXBlTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGNDI5MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5
ZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQyOTk0
RkEyNzBDRkU0ODAwMzIyOThCIC8qIEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTk0RjkyNzBD
RkU0ODAwMzIyOThCIC8qIEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0Mjk5NTBGMjcwRTc1
MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIgLyogRGlz
cGxheUxpc3RSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUY0MzNFOTAzMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkw
MjFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJG
RSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDM3N0Q1NTI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxpc3RJ
dGVtVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzZGMjMzRDk0
RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsgfTsKQEAgLTY0MDIsOCArNjQw
Myw4IEBACiAJCTBGRTVGQkNCMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkU1RkJDQzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJ
dGVtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlz
dEl0ZW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0QxQzNERDUx
RTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0SXRlbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGlzcGxheUxpc3RJdGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRkU1RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGlzcGxheUxpc3RSZWNvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkU1RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU1RkJDRjFDM0RENTFFMDAw
N0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFNUZCRDAxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUxpc3RS
ZXBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTVGQkQxMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0UmVwbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZFNkM3NkIxRkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2ODAwLDYgKzE2ODAxLDggQEAKIAkJRjQyMkI4QjYyNTNGNzA2NTAwNEU3
N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDI5
MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDI5OTRGOTI3MENGRTQ4MDAzMjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDI5OTUwRDI3MEU3NTAwMDAzMjI5OEIg
LyogRGlzcGxheUxpc3RSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29y
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0Mjk5NTBFMjcwRTc1MDAwMDMy
Mjk4QiAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJDRUI1
NDIxNDAzMUVFMDAyRENBNzIgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0
ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9h
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzM0U5MDQxREJCREJDMjAwRUYw
RDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUGFz
dGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODIwMyw4ICsxODIw
NiwxMCBAQAogCQkJCUY0Mzc3RDU1MjU1MUM5QzYwMDgwQUJGRSAvKiBEaXNwbGF5TGlzdEl0ZW1U
eXBlLmggKi8sCiAJCQkJMUNFOEQxMkIyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwICovLAogCQkJCTFDRThEMTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmggKi8sCi0JCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwICovLAotCQkJCTBGRTVGQkNGMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdFJlY29yZGVyLmggKi8sCisJCQkJRjQyOTk1MEUyNzBFNzUwMDAwMzIyOThCIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAorCQkJCUY0Mjk5NTBEMjcwRTc1MDAwMDMyMjk4QiAv
KiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCisJCQkJMEZFNUZCQ0UxQzNERDUxRTAwMDdBMkNB
IC8qIERpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCAqLywKKwkJCQkwRkU1RkJDRjFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCAqLywKIAkJCQkwRkU1RkJEMDFD
M0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5jcHAgKi8sCiAJCQkJMEZFNUZC
RDExQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCAqLywKIAkJCQkxQ0U4
ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8sCkBAIC0z
MjM1OCw3ICszMjM2Myw4IEBACiAJCQkJMEZFNUZCRDUxQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0SXRlbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Mzc3RDU3MjU1MUM5QzYwMDgwQUJG
RSAvKiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0U4RDEyRTI2
MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEZFNUZCRDcxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0Mjk5NTBGMjcwRTc1MDAwMDMyMjk4QiAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ5MUMz
REQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDI5RUNDNjE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1MzU2MTk3YTM0NGE2OTllYzg5
MDhiMTgwNmMxNzU2OTkzODBiYTZkLi42YzY4ZTQ0NTk4YmY5ODY2ZTgxNjRkMjM1MWIyY2JkNjNl
NzVhMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJDaGFyYWN0ZXJQcm9wZXJ0
aWVzLmgiCiAjaW5jbHVkZSAiQ29tcGxleFRleHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3RSZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVk
ZSAiR2x5cGhCdWZmZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZv
clRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1
ZTxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4oKTsKLSAgICBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwg
RmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KTsKKyAgICBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJJbXBsIHJlY29yZGluZ0NvbnRleHQoKmRpc3BsYXlMaXN0LCBjb250
ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVj
dCk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9hdFBvaW50KFdlYkNv
cmU6OnNpemUoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSkpOwogICAgIGRyYXdHbHlwaEJ1
ZmZlcihyZWNvcmRpbmdDb250ZXh0LCBnbHlwaEJ1ZmZlciwgc3RhcnRQb2ludCwgY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDYxYmI1ZmNkYTg5NDAyZmFhMmNj
NTdjYzU5YWY5OGQyNzUwN2ZjM2UuLjJkMmYxMWE0N2Q2NDZkZWQ5MDExYjViMmU4ZTNlMjNmNmY3
NjYxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIFVTRShDQSkKIAog
I2luY2x1ZGUgIkFuaW1hdGlvbi5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIK
KyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkRpc3BsYXlM
aXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKQEAgLTE4MDQsNyArMTgwNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSwgY29uc3QgVHJh
CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2luKCks
IHNpemUoKSk7CiAKLSAgICAgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGNvbnRleHQoKm1fZGlz
cGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFu
c2Zvcm0oKSk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgY29udGV4dCgqbV9k
aXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAppbmRleCAyMjY4NGRjMzk4ZTFlZjUyYzFiZDk2NmZmNDUwMzcyMzdkY2YyYWVmLi44
OTg2ZThjMzI5ZjBhMTFlODQ4MzAxMTk5NWIzNmQzYmExNjE3NjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaApAQCAtNTQsNyArNTQsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIEFzVGV4dEZsYWdzOwog
CiBjbGFzcyBEaXNwbGF5TGlzdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxp
c3QpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXI7
CisgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgUmVwbGF5
ZXI7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRGlzcGxheUxpc3QoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAppbmRleCAzOTU3YzQ1
NzZmZTkxMmQ2ODEwMjA3NjEwMDFjYzI0ZjY4Njg4NjJhLi4zNjJkNDM2NzUyYWM3M2E5YmMzYjNj
YzhjMDU2YWE0ZDdmMDdiMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJEaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpE
cmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUpCitEcmF3
aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlckltcGw6OkRlbGVnYXRl
KiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIGRlbGVn
YXRlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgKaW5kZXggOTY1NjM2MzRkNTdmNDA5NGIzYzJjYmE2ZjA2NzQwZjUwNjNkZDRiZi4uMTdmMjJl
OTAzZWE2MGQwOWU5MGUyMGMzZTk3YmMxM2JjYWM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZWNvcmRlci5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDEwICsz
NywxMCBAQCBjbGFzcyBJbk1lbW9yeURpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51
bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwg
UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSogPSBudWxscHRyKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigq
dGhpcykubV9jb250ZXh0OyB9Ci0gICAgUmVjb3JkZXImIHJlY29yZGVyKCkgeyByZXR1cm4gbV9j
b250ZXh0OyB9OworICAgIFJlY29yZGVySW1wbCYgcmVjb3JkZXIoKSB7IHJldHVybiBtX2NvbnRl
eHQ7IH07CiAgICAgRGlzcGxheUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gc3RkOjpl
eGNoYW5nZShtX2Rpc3BsYXlMaXN0LCB7IH0pOyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KCkgeyByZXR1cm4gbV9kaXNwbGF5TGlzdDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGF5RGlzcGxheUxpc3Qo
R3JhcGhpY3NDb250ZXh0Jik7CiAKIHByb3RlY3RlZDoKLSAgICBSZWNvcmRlciBtX2NvbnRleHQ7
CisgICAgUmVjb3JkZXJJbXBsIG1fY29udGV4dDsKICAgICBEaXNwbGF5TGlzdCBtX2Rpc3BsYXlM
aXN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbk1lbW9yeURpc3BsYXlMaXN0PiBtX3JlcGxheWVk
RGlzcGxheUxpc3Q7CiAgICAgYm9vbCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5IHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDBiMzVh
ZjU0MGMxNGRjYmRiZjdiZWM2OWNhZmQ2MDZiMzJlNTVmMGYuLjQ2ZTlmYTg2YWFiNmJhNDQ5NWNj
NDZhZGI3NmFmNDY3ZmU1YmEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd2luZ0Nv
bnRleHQuZGlzcGxheUxpc3QoKS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdD
bGllbnQuZ2V0KCkpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVy
QmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgUmVjb3JkZXI6OkRlbGVnYXRlKiBkZWxl
Z2F0ZSA9IG51bGxwdHIpCisgICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5k
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxlZ2F0
ZSA9IG51bGxwdHIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1ldGVy
cykKICAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zv
cm0oKSwgZGVsZWdhdGUpCiAgICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1
ZTxJbk1lbW9yeURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDkzYmE2NTAyYWI2YmE0ZjMzMWNmZWU5NjNj
MTllMzMwMmU5NWZiNmEuLjJjZWEyMWZhZDU5M2ZkMjBmNWRiNzFhZjNmMmE3YTNjMTFkZjE4YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDIxICs0
MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAot
UmVjb3JkZXI6OlJlY29yZGVyKERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3Ry
dWN0aW9uKQotICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICAsIG1fZGVsZWdh
dGUoZGVsZWdhdGUpCi0gICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3R2x5cGhz
UmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK1JlY29yZGVyOjpSZWNv
cmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRHJhd0dseXBo
c1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0
aW9uKQorICAgIDogbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbikKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwg
IlxuUmVjb3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3Rh
Y2suYXBwZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNv
cmRlcjo6UmVjb3JkZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxDVE0pCi0gICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVudC5tX2Rpc3BsYXlM
aXN0KQotICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKLSAgICAsIG1faXNOZXN0
ZWQodHJ1ZSkKLSAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3
R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkpCisgICAgOiBtX2RyYXdH
bHlwaHNSZWNvcmRlcigqdGhpcywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbigpKQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQoeyBzdGF0ZSwg
aW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CiB9CkBAIC02MiwxOCArNTUsNiBAQCBSZWNvcmRl
cjo6UmVjb3JkZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBGbAogUmVjb3JkZXI6On5SZWNvcmRlcigpCiB7CiAgICAgQVNTRVJUKG1f
c3RhdGVTdGFjay5zaXplKCkgPT0gMSk7IC8vIElmIHRoaXMgZmlyZXMsIGl0IGluZGljYXRlcyBt
aXNtYXRjaGVkIHNhdmUvcmVzdG9yZS4KLSAgICBpZiAoIW1faXNOZXN0ZWQpCi0gICAgICAgIExP
RyhEaXNwbGF5TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxp
c3QuZGVzY3JpcHRpb24oKS5kYXRhKCkpOwotfQotCi12b2lkIFJlY29yZGVyOjpnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KQotewotICAgIGFwcGVuZDxHZXRQaXhlbEJ1ZmZlcj4ob3V0cHV0Rm9ybWF0
LCBzb3VyY2VSZWN0KTsKLX0KLQotdm9pZCBSZWNvcmRlcjo6cHV0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi17
Ci0gICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVzdFBv
aW50LCBkZXN0Rm9ybWF0KTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3Rh
dGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKQEAgLTk2LDQx
ICs3NywzMiBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFJlY29yZGVyOjpyZWNvcmROYXRpdmVJbWFnZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2Up
Ci17Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2
ZUltYWdlVXNlKGltYWdlKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1h
Z2UpOwotfQotCiB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5s
aW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgewogICAgICAgICBpZiAoYXV0
byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICBy
ZWNvcmROYXRpdmVJbWFnZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgICAgICBy
ZWNvcmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGlmIChhdXRv
IHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4pCi0gICAgICAgICAgICByZWNv
cmROYXRpdmVJbWFnZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7Ci0gICAgICAgIGFwcGVuZDxT
ZXRTdGF0ZT4oY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CisgICAgICAgICAgICByZWNv
cmRSZXNvdXJjZVVzZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIHJlY29yZFNldFN0
YXRlKGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4o
KmNoYW5nZXMubV9zdGF0ZS5zdHJva2VDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7CisgICAg
ICAgIHJlY29yZFNldElubGluZVN0cm9rZUNvbG9yKCpjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlQ29s
b3IudHJ5R2V0QXNTUkdCQUJ5dGVzKCkpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VUaGlja25lc3NDaGFuZ2UpKQotICAgICAgICBh
cHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPihjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KTsKKyAgICAgICAgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGNoYW5nZXMubV9zdGF0ZS5zdHJv
a2VUaGlja25lc3MpOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBhcHBlbmQ8U2V0SW5saW5lRmls
bENvbG9yPigqY2hhbmdlcy5tX3N0YXRlLmZpbGxDb2xvci50cnlHZXRBc1NSR0JBQnl0ZXMoKSk7
Ci19Ci0KLWJvb2wgUmVjb3JkZXI6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5k
SXRlbU9mVHlwZSh0eXBlKTsKKyAgICAgICAgcmVjb3JkU2V0SW5saW5lRmlsbENvbG9yKCpjaGFu
Z2VzLm1fc3RhdGUuZmlsbENvbG9yLnRyeUdldEFzU1JHQkFCeXRlcygpKTsKIH0KIAogdm9pZCBS
ZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKQogeworICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGN1cnJlbnRseSBpbnZva2VkIGluIGFuIGFkLWhvYyBtYW5uZXIgd2hlbiBy
ZWNvcmRpbmcgZHJhd2luZyBpdGVtcy4gV2Ugc2hvdWxkIGNvbnNpZGVyIGVpdGhlcgorICAgIC8v
IHNwbGl0dGluZyBHcmFwaGljc0NvbnRleHQgc3RhdGUgY2hhbmdlcyBpbnRvIGluZGl2aWR1YWwg
ZGlzcGxheSBsaXN0IGl0ZW1zLCBvciByZWZhY3RvcmluZyB0aGUgY29kZSBzdWNoIHRoYXQKKyAg
ICAvLyB0aGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgd2hlbiByZWNvcmRpbmcg
YSBkcmF3aW5nIGl0ZW0uCiAgICAgYXV0byYgc3RhdGVDaGFuZ2VzID0gY3VycmVudFN0YXRlKCku
c3RhdGVDaGFuZ2U7CiAgICAgYXV0byBjaGFuZ2VzRnJvbUxhc3RTdGF0ZSA9IHN0YXRlQ2hhbmdl
cy5jaGFuZ2VzRnJvbVN0YXRlKGN1cnJlbnRTdGF0ZSgpLmxhc3REcmF3aW5nU3RhdGUpOwogICAg
IGlmICghY2hhbmdlc0Zyb21MYXN0U3RhdGUpCkBAIC0xNTIsMzQgKzEyNCwyNCBAQCB2b2lkIFJl
Y29yZGVyOjp1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdy
YXBoaWNzQ29udGV4dFN0YQogICAgIGN1cnJlbnRTdGF0ZSgpLnN0YXRlQ2hhbmdlLmFjY3VtdWxh
dGUoc3RhdGUsIGZsYWdzKTsKIH0KIAotYm9vbCBSZWNvcmRlcjo6Y2FuRHJhd0ltYWdlQnVmZmVy
KGNvbnN0IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgY29uc3QKLXsKLSAgICByZXR1cm4gIW1f
ZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+aXNDYWNoZWRJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7
Ci19Ci0KLVJlbmRlcmluZ01vZGUgUmVjb3JkZXI6OnJlbmRlcmluZ01vZGUoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RlbGVnYXRlID8gbV9kZWxlZ2F0ZS0+cmVuZGVyaW5nTW9kZSgpIDogUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKLX0KLQogdm9pZCBSZWNvcmRlcjo6c2V0TGluZUNh
cChMaW5lQ2FwIGxpbmVDYXApCiB7Ci0gICAgYXBwZW5kPFNldExpbmVDYXA+KGxpbmVDYXApOwor
ICAgIHJlY29yZFNldExpbmVDYXAobGluZUNhcCk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNldExp
bmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaEFycmF5LCBmbG9hdCBkYXNoT2Zmc2V0KQogewot
ICAgIGFwcGVuZDxTZXRMaW5lRGFzaD4oZGFzaEFycmF5LCBkYXNoT2Zmc2V0KTsKKyAgICByZWNv
cmRTZXRMaW5lRGFzaChkYXNoQXJyYXksIGRhc2hPZmZzZXQpOwogfQogCiB2b2lkIFJlY29yZGVy
OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKIHsKLSAgICBhcHBlbmQ8U2V0TGluZUpv
aW4+KGxpbmVKb2luKTsKKyAgICByZWNvcmRTZXRMaW5lSm9pbihsaW5lSm9pbik7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXJMaW1pdCkKIHsKLSAgICBhcHBl
bmQ8U2V0TWl0ZXJMaW1pdD4obWl0ZXJMaW1pdCk7CisgICAgcmVjb3JkU2V0TWl0ZXJMaW1pdCht
aXRlckxpbWl0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKQEAgLTE4OSwzOSArMTUx
LDQwIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zCiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlw
aHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3Vu
dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290
aGluZ01vZGUpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJl
Y29yZEZvbnRVc2UoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOwotICAgIG1fZGlzcGxheUxpc3Qu
Y2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKLSAgICBhcHBlbmQ8RHJhd0dseXBo
cz4oZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgY291bnQsIGxvY2FsQW5jaG9yLCBzbW9vdGhpbmdN
b2RlKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29y
ZFJlc291cmNlVXNlKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKKyAgICByZWNvcmREcmF3R2x5
cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5n
TW9kZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXBw
ZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKICAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcikpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+
cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwotICAgIG1fZGlzcGxheUxpc3QuY2Fj
aGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Ci0gICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4o
aW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKKworICAgIHJlY29yZFJlc291cmNlVXNlKGltYWdlQnVmZmVyKTsKKyAg
ICByZWNvcmREcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmVjb3Jk
TmF0aXZlSW1hZ2VVc2UoaW1hZ2UpOwotICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdl
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwor
ICAgIHJlY29yZFJlc291cmNlVXNlKGltYWdlKTsKKyAgICByZWNvcmREcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRp
dmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIHJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKLSAgICBhcHBlbmQ8RHJhd1BhdHRl
cm4+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkUmVz
b3VyY2VVc2UoaW1hZ2UpOworICAgIHJlY29yZERyYXdQYXR0ZXJuKGltYWdlLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29yZGVy
OjpzYXZlKCkKIHsKLSAgICBhcHBlbmQ8U2F2ZT4oKTsKKyAgICByZWNvcmRTYXZlKCk7CiAgICAg
bV9zdGF0ZVN0YWNrLmFwcGVuZChtX3N0YXRlU3RhY2subGFzdCgpLmNsb25lRm9yU2F2ZSgpKTsK
IH0KIApAQCAtMjMxLDI1ICsxOTQsMjUgQEAgdm9pZCBSZWNvcmRlcjo6cmVzdG9yZSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgYXBwZW5k
PFJlc3RvcmU+KCk7CisgICAgcmVjb3JkUmVzdG9yZSgpOwogfQogCiB2b2lkIFJlY29yZGVyOjp0
cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBjdXJyZW50U3RhdGUoKS50cmFuc2xh
dGUoeCwgeSk7Ci0gICAgYXBwZW5kPFRyYW5zbGF0ZT4oeCwgeSk7CisgICAgcmVjb3JkVHJhbnNs
YXRlKHgsIHkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpyb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlh
bnMpCiB7CiAgICAgY3VycmVudFN0YXRlKCkucm90YXRlKGFuZ2xlSW5SYWRpYW5zKTsKLSAgICBh
cHBlbmQ8Um90YXRlPihhbmdsZUluUmFkaWFucyk7CisgICAgcmVjb3JkUm90YXRlKGFuZ2xlSW5S
YWRpYW5zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
KQogewogICAgIGN1cnJlbnRTdGF0ZSgpLnNjYWxlKHNpemUpOwotICAgIGFwcGVuZDxTY2FsZT4o
c2l6ZSk7CisgICAgcmVjb3JkU2NhbGUoc2l6ZSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmNvbmNh
dENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKQEAgLTI1OCwxMyArMjIxLDEz
IEBAIHZvaWQgUmVjb3JkZXI6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY3VycmVudFN0YXRlKCkuY29uY2F0Q1RNKHRy
YW5zZm9ybSk7Ci0gICAgYXBwZW5kPENvbmNhdGVuYXRlQ1RNPih0cmFuc2Zvcm0pOworICAgIHJl
Y29yZENvbmNhdGVuYXRlQ1RNKHRyYW5zZm9ybSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OnNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICBjdXJyZW50U3RhdGUo
KS5zZXRDVE0odHJhbnNmb3JtKTsKLSAgICBhcHBlbmQ8U2V0Q1RNPih0cmFuc2Zvcm0pOworICAg
IHJlY29yZFNldENUTSh0cmFuc2Zvcm0pOwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gUmVjb3JkZXI6
OmdldENUTShHcmFwaGljc0NvbnRleHQ6OkluY2x1ZGVEZXZpY2VTY2FsZSkgY29uc3QKQEAgLTI3
NSw1NCArMjM4LDY0IEBAIEFmZmluZVRyYW5zZm9ybSBSZWNvcmRlcjo6Z2V0Q1RNKEdyYXBoaWNz
Q29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdAogCiB2b2lkIFJlY29yZGVyOjpiZWdp
blRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiB7Ci0gICAgYXBwZW5kPEJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXI+KG9wYWNpdHkpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CisgICAgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKICAg
ICBtX3N0YXRlU3RhY2suYXBwZW5kKG1fc3RhdGVTdGFjay5sYXN0KCkuY2xvbmVGb3JUcmFuc3Bh
cmVuY3lMYXllcigpKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KQogewotICAgIGFwcGVuZDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKTsKKyAgICBhcHBlbmRTdGF0
ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7
Ci0gICAgYXBwZW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MpOworICAgIGFwcGVu
ZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd1JlY3QocmVjdCwg
Ym9yZGVyVGhpY2tuZXNzKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCiB7Ci0gICAgYXBwZW5k
PERyYXdMaW5lPihwb2ludDEsIHBvaW50Mik7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZO
ZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3TGluZShwb2ludDEsIHBvaW50Mik7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlKQogewotICAgIGFwcGVuZDxEcmF3TGluZXNGb3JU
ZXh0PihGbG9hdFBvaW50KCksIHRvRmxvYXRTaXplKHBvaW50KSwgdGhpY2tuZXNzLCB3aWR0aHMs
IHByaW50aW5nLCBkb3VibGVMaW5lcyk7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNl
c3NhcnkoKTsKKyAgICByZWNvcmREcmF3TGluZXNGb3JUZXh0KEZsb2F0UG9pbnQoKSwgdG9GbG9h
dFNpemUocG9pbnQpLCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzKTsK
IH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIERvY3VtZW50TWFya2VyTGluZVN0eWxlIHN0eWxlKQogewotICAgIGFwcGVu
ZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihyZWN0LCBzdHlsZSk7CisgICAgYXBwZW5kU3Rh
dGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKHJlY3QsIHN0eWxlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0VsbGlwc2UoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFwcGVuZDxEcmF3RWxsaXBzZT4ocmVjdCk7Cisg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3RWxs
aXBzZShyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0
aCkKIHsKLSAgICBhcHBlbmQ8RHJhd1BhdGg+KHBhdGgpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdl
SXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd1BhdGgocGF0aCk7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZs
b2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxEcmF3Rm9jdXNS
aW5nUGF0aD4ocGF0aCwgd2lkdGgsIG9mZnNldCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hh
bmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgocGF0aCwg
d2lkdGgsIG9mZnNldCwgY29sb3IpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3Rm9jdXNSaW5n
KGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+
KHJlY3RzLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVt
SWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMocmVjdHMsIHdpZHRo
LCBvZmZzZXQsIGNvbG9yKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTMzOSwxMjIgKzMx
MiwxMzYgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYsIGRvdWJsZSwgYm9vbCYsIGNvbnN0IENvbG8KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFwcGVuZDxGaWxsUmVjdD4ocmVjdCk7
CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRGaWxs
UmVjdChyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgYXBwZW5kPEZpbGxSZWN0V2l0aENv
bG9yPihyZWN0LCBjb2xvcik7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nhcnko
KTsKKyAgICByZWNvcmRGaWxsUmVjdFdpdGhDb2xvcihyZWN0LCBjb2xvcik7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRp
ZW50KQogewotICAgIGFwcGVuZDxGaWxsUmVjdFdpdGhHcmFkaWVudD4ocmVjdCwgZ3JhZGllbnQp
OworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmls
bFJlY3RXaXRoR3JhZGllbnQocmVjdCwgZ3JhZGllbnQpOwogfQogCiB2b2lkIFJlY29yZGVyOjpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgYXBwZW5kPEZpbGxD
b21wb3NpdGVkUmVjdD4ocmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpOworICAgIGFwcGVuZFN0
YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbENvbXBvc2l0ZWRSZWN0
KHJlY3QsIGNvbG9yLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0Pihy
ZWN0LCBjb2xvciwgYmxlbmRNb2RlKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vz
c2FyeSgpOworICAgIHJlY29yZEZpbGxSb3VuZGVkUmVjdChyZWN0LCBjb2xvciwgYmxlbmRNb2Rl
KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+
KHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgY29sb3IpOworICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRl
bUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocmVjdCwg
cm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmZpbGxQYXRoKGNv
bnN0IFBhdGgmIHBhdGgpCiB7CisgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3Nhcnko
KTsKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBpZiAocGF0aC5oYXNJbmxpbmVE
YXRhKCkpIHsKICAgICAgICAgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxMaW5lRGF0YT4oKSkKLSAg
ICAgICAgICAgIGFwcGVuZDxGaWxsTGluZT4ocGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpKTsK
KyAgICAgICAgICAgIHJlY29yZEZpbGxMaW5lKHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKSk7
CiAgICAgICAgIGVsc2UgaWYgKHBhdGguaGFzSW5saW5lRGF0YTxBcmNEYXRhPigpKQotICAgICAg
ICAgICAgYXBwZW5kPEZpbGxBcmM+KHBhdGguaW5saW5lRGF0YTxBcmNEYXRhPigpKTsKKyAgICAg
ICAgICAgIHJlY29yZEZpbGxBcmMocGF0aC5pbmxpbmVEYXRhPEFyY0RhdGE+KCkpOwogICAgICAg
ICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSkKLSAgICAgICAg
ICAgIGFwcGVuZDxGaWxsUXVhZEN1cnZlPihwYXRoLmlubGluZURhdGE8UXVhZEN1cnZlRGF0YT4o
KSk7CisgICAgICAgICAgICByZWNvcmRGaWxsUXVhZEN1cnZlKHBhdGguaW5saW5lRGF0YTxRdWFk
Q3VydmVEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRhPEJlemll
ckN1cnZlRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxGaWxsQmV6aWVyQ3VydmU+KHBhdGgu
aW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpOworICAgICAgICAgICAgcmVjb3JkRmlsbEJl
emllckN1cnZlKHBhdGguaW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgYXBwZW5kPEZpbGxQYXRoPihwYXRoKTsKKyAgICBy
ZWNvcmRGaWxsUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZmlsbEVsbGlwc2UoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGFwcGVuZDxGaWxsRWxsaXBzZT4ocmVjdCk7Cisg
ICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKyAgICByZWNvcmRGaWxsRWxs
aXBzZShyZWN0KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKIHsKLSAgICBhcHBlbmQ8U3Ryb2tlUmVjdD4ocmVj
dCwgbGluZVdpZHRoKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwor
ICAgIHJlY29yZFN0cm9rZVJlY3QocmVjdCwgbGluZVdpZHRoKTsKIH0KIAogdm9pZCBSZWNvcmRl
cjo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogeworICAgIGFwcGVuZFN0YXRlQ2hhbmdl
SXRlbUlmTmVjZXNzYXJ5KCk7CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYg
KHBhdGguaGFzSW5saW5lRGF0YSgpKSB7CiAgICAgICAgIGlmIChwYXRoLmhhc0lubGluZURhdGE8
TGluZURhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlTGluZT4ocGF0aC5pbmxpbmVE
YXRhPExpbmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZUxpbmUocGF0aC5pbmxp
bmVEYXRhPExpbmVEYXRhPigpKTsKICAgICAgICAgZWxzZSBpZiAocGF0aC5oYXNJbmxpbmVEYXRh
PEFyY0RhdGE+KCkpCi0gICAgICAgICAgICBhcHBlbmQ8U3Ryb2tlQXJjPihwYXRoLmlubGluZURh
dGE8QXJjRGF0YT4oKSk7CisgICAgICAgICAgICByZWNvcmRTdHJva2VBcmMocGF0aC5pbmxpbmVE
YXRhPEFyY0RhdGE+KCkpOwogICAgICAgICBlbHNlIGlmIChwYXRoLmhhc0lubGluZURhdGE8UXVh
ZEN1cnZlRGF0YT4oKSkKLSAgICAgICAgICAgIGFwcGVuZDxTdHJva2VRdWFkQ3VydmU+KHBhdGgu
aW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigpKTsKKyAgICAgICAgICAgIHJlY29yZFN0cm9rZVF1
YWRDdXJ2ZShwYXRoLmlubGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSk7CiAgICAgICAgIGVsc2Ug
aWYgKHBhdGguaGFzSW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpCi0gICAgICAgICAgICBh
cHBlbmQ8U3Ryb2tlQmV6aWVyQ3VydmU+KHBhdGguaW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+
KCkpOworICAgICAgICAgICAgcmVjb3JkU3Ryb2tlQmV6aWVyQ3VydmUocGF0aC5pbmxpbmVEYXRh
PEJlemllckN1cnZlRGF0YT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAg
ICBhcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7CisgICAgcmVjb3JkU3Ryb2tlUGF0aChwYXRoKTsK
IH0KIAogdm9pZCBSZWNvcmRlcjo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7Ci0gICAgYXBwZW5kPFN0cm9rZUVsbGlwc2U+KHJlY3QpOworICAgIGFwcGVuZFN0YXRlQ2hh
bmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgcmVjb3JkU3Ryb2tlRWxsaXBzZShyZWN0KTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAg
ICBhcHBlbmQ8Q2xlYXJSZWN0PihyZWN0KTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5l
Y2Vzc2FyeSgpOworICAgIHJlY29yZENsZWFyUmVjdChyZWN0KTsKIH0KIAogI2lmIFVTRShDRykK
IHZvaWQgUmVjb3JkZXI6OmFwcGx5U3Ryb2tlUGF0dGVybigpCiB7Ci0gICAgYXBwZW5kPEFwcGx5
U3Ryb2tlUGF0dGVybj4oKTsKKyAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgp
OworICAgIHJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigpOwogfQogCiB2b2lkIFJlY29yZGVyOjph
cHBseUZpbGxQYXR0ZXJuKCkKIHsKLSAgICBhcHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oKTsKKyAg
ICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOworICAgIHJlY29yZEFwcGx5Rmls
bFBhdHRlcm4oKTsKIH0KICNlbmRpZgogCiB2b2lkIFJlY29yZGVyOjpjbGlwKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKICAgICBjdXJyZW50U3RhdGUoKS5jbGlwQm91bmRzLmludGVyc2VjdChy
ZWN0KTsKLSAgICBhcHBlbmQ8Q2xpcD4ocmVjdCk7CisgICAgcmVjb3JkQ2xpcChyZWN0KTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAg
YXBwZW5kPENsaXBPdXQ+KHJlY3QpOworICAgIHJlY29yZENsaXBPdXQocmVjdCk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKIHsKLSAgICBhcHBlbmQ8Q2xp
cE91dFRvUGF0aD4ocGF0aCk7CisgICAgcmVjb3JkQ2xpcE91dFRvUGF0aChwYXRoKTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgd2luZFJ1
bGUpCiB7CiAgICAgY3VycmVudFN0YXRlKCkuY2xpcEJvdW5kcy5pbnRlcnNlY3QocGF0aC5mYXN0
Qm91bmRpbmdSZWN0KCkpOwotICAgIGFwcGVuZDxDbGlwUGF0aD4ocGF0aCwgd2luZFJ1bGUpOwor
ICAgIHJlY29yZENsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKIH0KIAogSW50UmVjdCBSZWNvcmRl
cjo6Y2xpcEJvdW5kcygpIGNvbnN0CkBAIC00NjQsMTAgKzQ1MSw4IEBAIEludFJlY3QgUmVjb3Jk
ZXI6OmNsaXBCb3VuZHMoKSBjb25zdAogCiB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7
Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEltYWdlQnVm
ZmVyVXNlKGltYWdlQnVmZmVyKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIpOwotICAgIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsKKyAgICByZWNvcmRSZXNv
dXJjZVVzZShpbWFnZUJ1ZmZlcik7CisgICAgcmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsKIH0KIAogR3Jh
cGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQpAQCAtNDgzLDEwICs0NjgsMTAgQEAgR3JhcGhpY3ND
b250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb24KICAgICBpbml0aWFsQ1RNLnRyYW5zbGF0ZSgwLCAtc2NhbGVkU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgaW5pdGlhbENUTS5zY2FsZShzY2FsZWRTaXplIC8gZGVzdGluYXRpb24u
c2l6ZSgpKTsKIAotICAgIFJlY29yZGVyIG5lc3RlZENvbnRleHQoKnRoaXMsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKLSAgICBhcHBlbmQ8QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlKTsKLSAgICBkcmF3
aW5nRnVuY3Rpb24obmVzdGVkQ29udGV4dCk7Ci0gICAgYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcz4oZGVzdGluYXRpb24pOworICAgIGF1dG8gbmVzdGVkQ29udGV4dCA9IGNyZWF0ZU5l
c3RlZENvbnRleHQoaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOworICAgIHJlY29yZEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlKTsKKyAgICBkcmF3aW5n
RnVuY3Rpb24oKm5lc3RlZENvbnRleHQpOworICAgIHJlY29yZEVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyhkZXN0aW5hdGlvbik7CiAKICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVz
dWx0OjpTdWNjZXNzOwogfQpAQCAtNDk5LDcgKzQ4NCw3IEBAIHZvaWQgUmVjb3JkZXI6OnBhaW50
RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHBsYXllci5pZGVudGlmaWVy
KCkpOwotICAgIGFwcGVuZDxQYWludEZyYW1lRm9yTWVkaWE+KHBsYXllciwgZGVzdGluYXRpb24p
OworICAgIHJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShwbGF5ZXIsIGRlc3RpbmF0aW9uKTsKIH0K
ICNlbmRpZgogCkBAIC01MDcsNyArNDkyLDcgQEAgdm9pZCBSZWNvcmRlcjo6YXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogdGhp
cyBjaGFuZ2VzIHRoZSBiYXNlQ1RNLCB3aGljaCB3aWxsIGludmFsaWRhdGUgYWxsIG9mIG91ciBj
YWNoZWQgZXh0ZW50cy4KICAgICAvLyBBc3NlcnQgdGhhdCBpdCdzIG9ubHkgY2FsbGVkIGVhcmx5
IG9uPwotICAgIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihkZXZpY2VTY2FsZUZhY3Rv
cik7CisgICAgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7
CiB9CiAKIEZsb2F0UmVjdCBSZWNvcmRlcjo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIEdyYXBoaWNzQ29udGV4dDo6Um91bmRpbmdNb2RlKQpAQCAtNTI2LDI1ICs1
MTEsNiBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZsb2F0IGJs
dXJSYWRpdXMpCiAgICAgcmV0dXJuIGNlaWxmKGJsdXJSYWRpdXMgKiByYWRpdXNFeHRlbnRNdWx0
aXBsaWVyKTsKIH0KIAotRmxvYXRSZWN0IFJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAotewotICAgIEZsb2F0UmVjdCBib3VuZHMgPSBy
ZWN0OwotICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKLQot
ICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAg
IENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgewotICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50
ID0gYm91bmRzOwotICAgICAgICBzaGFkb3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOwotICAg
ICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRp
dXMpKTsKLSAgICAgICAgYm91bmRzLnVuaXRlKHNoYWRvd0V4dGVudCk7Ci0gICAgfQotICAgIAot
ICAgIEZsb2F0UmVjdCBjbGlwcGVkRXh0ZW50ID0gaW50ZXJzZWN0aW9uKHN0YXRlLmNsaXBCb3Vu
ZHMsIGJvdW5kcyk7Ci0gICAgcmV0dXJuIHN0YXRlLmN0bS5tYXBSZWN0KGNsaXBwZWRFeHRlbnQp
OwotfQotCiBjb25zdCBSZWNvcmRlcjo6Q29udGV4dFN0YXRlJiBSZWNvcmRlcjo6Y3VycmVudFN0
YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zdGF0ZVN0YWNrLnNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhZTk2ZjZlNzdkNjZlZDcwZDE1MjRm
M2UxYzA1YTMxMWYyY2YxOTkwLi5hYmY5YjZiYjNlMjc5OGViYjQ4ZjE2NjdjNzFkNDIyMjY5NmY2
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJEcmF3R2x5cGhzUmVjb3JkZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgor
I2luY2x1ZGUgIklubGluZVBhdGhEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTU0LDM2ICs1NSwxMzggQEAgY2xhc3MgUmVj
b3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6Ci0gICAg
Y2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoRGlzcGxheUxpc3Qm
LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENs
aXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlw
aHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVy
OjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERyYXdHbHlwaHNSZWNvcmRl
cjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5SZWNvcmRlcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwdXRQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1h
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1
c2hJZGVudGlmaWVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNv
cmRlcihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2F2ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkUmVzdG9yZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkVHJhbnNsYXRl
KGZsb2F0IHgsIGZsb2F0IHkpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUm90YXRlKGZs
b2F0IGFuZ2xlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNjYWxlKGNvbnN0IEZsb2F0
U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU2V0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ29uY2F0ZW5hdGVDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTZXRJbmxp
bmVGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
U2V0SW5saW5lU3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkU2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
U2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFNldExpbmVE
YXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkU2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkU2V0TWl0ZXJMaW1pdChmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRD
bGVhclNoYWRvdygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQ2xpcChjb25zdCBGbG9h
dFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBPdXQoY29uc3QgRmxvYXRS
ZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRDbGlw
T3V0VG9QYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZENsaXBQ
YXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBj
b25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
ZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZERyYXdMaW5lKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZERyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2Nh
dGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxvYXQgdGhpY2tuZXNzLCBjb25z
dCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IERvY3VtZW50TWFya2VyTGluZVN0eWxlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWNvcmREcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZERyYXdQYXRoKGNvbnN0IFBhdGgmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZERyYXdGb2N1c1JpbmdQYXRoKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwg
ZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
RHJhd0ZvY3VzUmluZ1JlY3RzKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZmxvYXQgd2lkdGgs
IGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29y
ZEZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
RmlsbFJlY3RXaXRoQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0IEZsb2F0UmVj
dCYsIEdyYWRpZW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsQ29tcG9zaXRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBCbGVuZE1vZGUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJikgPSAwOworI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsTGluZShj
b25zdCBMaW5lRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRmlsbEFyYyhjb25z
dCBBcmNEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRGaWxsUXVhZEN1cnZlKGNv
bnN0IFF1YWRDdXJ2ZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEZpbGxCZXpp
ZXJDdXJ2ZShjb25zdCBCZXppZXJDdXJ2ZURhdGEmKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkRmlsbFBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFB1dFBpeGVsQnVmZmVy
KGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpID0gMDsKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFU
QSkKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlTGluZShjb25zdCBMaW5lRGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkU3Ryb2tlQXJjKGNvbnN0IEFyY0RhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFN0cm9rZVF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVE
YXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJva2VCZXppZXJDdXJ2ZShjb25z
dCBCZXppZXJDdXJ2ZURhdGEmKSA9IDA7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
U3Ryb2tlUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRTdHJv
a2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3Jk
Q2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyNpZiBVU0UoQ0cpCisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEFwcGx5U3Ryb2tlUGF0dGVybigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkQXBwbHlGaWxsUGF0dGVybigpID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZFJl
c291cmNlVXNlKEltYWdlQnVmZmVyJikgPSAwOworCisgICAgLy8gRklYTUU6IE1heWJlIHJlbW92
ZSB0aGlzPworICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VC
dWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSA9IDA7CisKKyAgICBzdHJ1Y3QgQ29u
dGV4dFN0YXRlIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKKyAgICAgICAgRmxvYXRS
ZWN0IGNsaXBCb3VuZHM7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRl
Q2hhbmdlOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBsYXN0RHJhd2luZ1N0YXRlOwog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5
KCk7IH0KKyAgICAgICAgQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCkKKyAgICAgICAgICAgIDogY3RtKHRyYW5zZm9ybSkKKyAgICAgICAgICAgICwgY2xpcEJv
dW5kcyhjbGlwKQorICAgICAgICAgICAgLCBsYXN0RHJhd2luZ1N0YXRlKHN0YXRlKQorICAgICAg
ICB7CisgICAgICAgIH0KIAotICAgIGNsYXNzIERlbGVnYXRlIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BcHBl
bmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVjb3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKSB7IH0KLSAgICAgICAgdmly
dHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250
JikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1
ZmZlciYpIHsgfQotICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KKyAgICAgICAg
Q29udGV4dFN0YXRlIGNsb25lRm9yU2F2ZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IENvbnRleHRTdGF0ZSBzdGF0ZShsYXN0RHJhd2luZ1N0YXRlLCBjdG0sIGNsaXBCb3VuZHMpOwor
ICAgICAgICAgICAgc3RhdGUuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRleHRTdGF0ZSBjbG9uZUZv
clRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBz
dGF0ZSA9IGNsb25lRm9yU2F2ZSgpOworICAgICAgICAgICAgc3RhdGUubGFzdERyYXdpbmdTdGF0
ZS5hbHBoYSA9IDE7CisgICAgICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICAgICAgdm9pZCByb3Rh
dGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOworICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0
U2l6ZSYpOworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
KyAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgfTsKIAot
ICAgIHZvaWQgZmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBpZGVu
dGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qg
VmVjdG9yPENvbnRleHRTdGF0ZSwgND4mIHN0YXRlU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlU3RhY2s7IH0KIAotcHJpdmF0ZToKLSAgICBSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSk7CisgICAgY29uc3QgQ29udGV4dFN0
YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKKyAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0
ZSgpOwogCitwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAvLyBGSVhNRTogTWF5YmUgcmVtb3ZlIHRoaXM/Ci0g
ICAgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdDsKICAg
ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0IGZpbmFsOwogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBzZXRJ
c0NBTGF5ZXJDb250ZXh0KGJvb2wpIGZpbmFsIHsgfQpAQCAtOTQsMTg0ICsxOTcsOTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYsIGNvbnN0IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZv
aWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wsIGJvb2wsIFN0cm9rZVN0
eWxlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0TGluZUNhcChM
aW5lQ2FwKSBmaW5hbDsKLSAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZs
b2F0IGRhc2hPZmZzZXQpIGZpbmFsOwotICAgIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pIGZp
bmFsOwotICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCkgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRMaW5lQ2FwKExpbmVDYXApIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMaW5lSm9pbihMaW5lSm9pbikgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNaXRlckxpbWl0KGZsb2F0KSBmaW5hbDsKIAot
ICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsOwotICAgIHZvaWQgZmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxQ
YXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKLSAgICB2b2lkIGZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBsaW5lV2lkdGgpIGZpbmFsOwotICAgIHZvaWQgc3Ryb2tlUGF0aChjb25zdCBQYXRoJikgZmlu
YWw7Ci0gICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAg
IHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3Jh
ZGllbnQmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3Qm
LCBmbG9hdCBsaW5lV2lkdGgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tl
UGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAjaWYgVVNFKENHKSB8fCBVU0Uo
RElSRUNUMkQpCi0gICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKSBmaW5hbDsKLSAgICB2b2lk
IGFwcGx5RmlsbFBhdHRlcm4oKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5
U3Ryb2tlUGF0dGVybigpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbHlGaWxs
UGF0dGVybigpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0
IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21v
b3RoaW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNt
b290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0dseXBoc0Fu
ZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBm
aW5hbDsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7Ci0gICAgdm9p
ZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3UGF0
dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgZmluYWw7Ci0gICAg
dm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIGZpbmFs
OwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhp
Y2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3Vi
bGVMaW5lcywgU3Ryb2tlU3R5bGUpIGZpbmFsOwotICAgIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgZmluYWw7
Ci0gICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZShjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5l
cywgU3Ryb2tlU3R5bGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHls
ZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmKSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOwogCi0g
ICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zm
c2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOwotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
JikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBh
dGgmLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0
PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBkb3Vi
bGUgdGltZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcsIGNvbnN0IENvbG9yJikgZmluYWw7Ci0g
ICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91YmxlIHRp
bWVPZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZG91YmxlIHRpbWVP
ZmZzZXQsIGJvb2wmIG5lZWRzUmVkcmF3LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRv
dWJsZSB0aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdywgY29uc3QgQ29sb3ImKSBmaW5hbDsK
ICNlbmRpZgogCi0gICAgdm9pZCBzYXZlKCkgZmluYWw7Ci0gICAgdm9pZCByZXN0b3JlKCkgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzYXZlKCkgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXN0b3JlKCkgZmluYWw7CiAKLSAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4
LCBmbG9hdCB5KSBmaW5hbDsKLSAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykg
ZmluYWw7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsKLSAgICB2b2lk
IGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKLSAgICB2b2lkIHNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0
Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdCBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENUTShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0gZ2V0
Q1RNKEdyYXBoaWNzQ29udGV4dDo6SW5jbHVkZURldmljZVNjYWxlKSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KSBmaW5hbDsKLSAg
ICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpIGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSBmaW5hbDsKIAotICAgIHZv
aWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKLSAgICB2b2lkIGNsaXBPdXQoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7Ci0gICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBmaW5hbDsK
LSAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgZmluYWw7Ci0gICAgSW50
UmVjdCBjbGlwQm91bmRzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwotICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0JikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0IGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGlj
c0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgZmluYWw7CiAKICNpZiBF
TkFCTEUoVklERU8pCi0gICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpIGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29u
c3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZChB
cmdzJiYuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghY2FuQXBwZW5kSXRl
bU9mVHlwZShUOjppdGVtVHlwZSkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IGNvbnN0ZXhwciAoaXRlbU5lZWRzU3RhdGU8VD4oKSkKLSAgICAgICAgICAgIGFwcGVuZFN0YXRl
Q2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsKIAotICAgICAgICBtX2Rpc3BsYXlMaXN0LmFw
cGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotCi0gICAgICAgIGlmIGNvbnN0
ZXhwciAoVDo6aXNEcmF3aW5nSXRlbSkgewotICAgICAgICAgICAgaWYgKExJS0VMWSghbV9kaXNw
bGF5TGlzdC50cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBhdXRvIGl0ZW0gPSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Ci0gICAgICAgICAgICBpZiAoYXV0byByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcygqdGhp
cykpCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudChl
eHRlbnRGcm9tTG9jYWxCb3VuZHMoKnJlY3QpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8g
cmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlz
dC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudChzdGQ6Om51bGxvcHQp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BcHBlbmRJ
dGVtT2ZUeXBlKEl0ZW1UeXBlKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGl0ZW1OZWVkc1N0YXRlKCk7Ci0KLSAgICB2b2lkIHJl
Y29yZE5hdGl2ZUltYWdlVXNlKE5hdGl2ZUltYWdlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250
ZXh0OjpSb3VuZGluZ01vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0
ZW1JZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hh
bmdlRmxhZ3MpOwogCi0gICAgRmxvYXRSZWN0IGV4dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKLSAgICAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGN0bSgp
IGNvbnN0OwogCi0gICAgc3RydWN0IENvbnRleHRTdGF0ZSB7Ci0gICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBjdG07Ci0gICAgICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzOwotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGUgbGFzdERyYXdpbmdTdGF0ZTsKLSAgICAgICAgCi0gICAgICAgIENvbnRleHRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCi0gICAgICAgICAgICA6IGN0bSh0cmFu
c2Zvcm0pCi0gICAgICAgICAgICAsIGNsaXBCb3VuZHMoY2xpcCkKLSAgICAgICAgICAgICwgbGFz
dERyYXdpbmdTdGF0ZShzdGF0ZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBDb250ZXh0U3RhdGUgY2xvbmVGb3JTYXZlKCkgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgQ29udGV4dFN0YXRlIHN0YXRlKGxhc3REcmF3aW5nU3RhdGUsIGN0bSwgY2xpcEJvdW5k
cyk7Ci0gICAgICAgICAgICBzdGF0ZS5zdGF0ZUNoYW5nZSA9IHN0YXRlQ2hhbmdlOwotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRlOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29udGV4dFN0YXRlIGNs
b25lRm9yVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIHN0YXRlID0gY2xvbmVGb3JTYXZlKCk7Ci0gICAgICAgICAgICBzdGF0ZS5sYXN0RHJhd2lu
Z1N0YXRlLmFscGhhID0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwotICAgICAgICB2b2lk
IHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAgICAgIHZvaWQgc2NhbGUoY29uc3Qg
RmxvYXRTaXplJik7Ci0gICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwotICAgICAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICB9
OwotICAgIAotICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCkgY29uc3Q7Ci0g
ICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKLQotICAgIERpc3BsYXlMaXN0JiBtX2Rp
c3BsYXlMaXN0OwotICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwotICAgIGJvb2wgbV9pc05lc3Rl
ZDsKLQogICAgIFZlY3RvcjxDb250ZXh0U3RhdGUsIDQ+IG1fc3RhdGVTdGFjazsKLQogICAgIERy
YXdHbHlwaHNSZWNvcmRlciBtX2RyYXdHbHlwaHNSZWNvcmRlcjsKIH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBSZWNvcmRlcjo6aXRlbU5lZWRzU3RhdGUoKQotewot
ICAgIGlmIChUOjppc0RyYXdpbmdJdGVtKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIFVT
RShDRykKLSAgICBpZiAoVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm4g
fHwgVDo6aXRlbVR5cGUgPT0gSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotfQorfSAv
LyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJh
YWRhM2Q5MzAyMjNhMGZhMGQ5MGVmYzEwYzE5NTE0NDZkZmUzOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5jcHAKQEAgLTAsMCArMSw0NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGlzcGxheUxpc3RSZWNvcmRlci5oIgorCisjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKKyNpbmNs
dWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RJ
dGVtcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKKworUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoRGlz
cGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5p
dGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgOiBSZWNvcmRl
cihzdGF0ZSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0sIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bikKKyAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCisgICAgLCBtX2RlbGVnYXRlKGRl
bGVnYXRlKQoreworICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
XG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOworfQorCitSZWNvcmRlcklt
cGw6OlJlY29yZGVySW1wbChSZWNvcmRlckltcGwmIHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCisgICAgOiBSZWNvcmRlcihwYXJlbnQsIHN0YXRlLCBp
bml0aWFsQ2xpcCwgaW5pdGlhbENUTSkKKyAgICAsIG1fZGlzcGxheUxpc3QocGFyZW50Lm1fZGlz
cGxheUxpc3QpCisgICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQorICAgICwgbV9p
c05lc3RlZCh0cnVlKQoreworfQorCitSZWNvcmRlckltcGw6On5SZWNvcmRlckltcGwoKQorewor
ICAgIEFTU0VSVChzdGF0ZVN0YWNrKCkuc2l6ZSgpID09IDEpOyAvLyBJZiB0aGlzIGZpcmVzLCBp
dCBpbmRpY2F0ZXMgbWlzbWF0Y2hlZCBzYXZlL3Jlc3RvcmUuCisgICAgaWYgKCFtX2lzTmVzdGVk
KQorICAgICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3JkZWQgZGlzcGxheSBsaXN0OlxuJXMi
LCBtX2Rpc3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgpKTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgYXBwZW5kPEdldFBpeGVsQnVm
ZmVyPihvdXRwdXRGb3JtYXQsIHNvdXJjZVJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6
cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGRlc3RGb3JtYXQpCit7CisgICAgYXBwZW5kPFB1dFBpeGVsQnVmZmVyPihwaXhlbEJ1
ZmZlciwgc3JjUmVjdCwgZGVzdFBvaW50LCBkZXN0Rm9ybWF0KTsKK30KKworYm9vbCBSZWNvcmRl
ckltcGw6OmNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW1fZGVsZWdhdGUgfHwgbV9kZWxlZ2F0ZS0+Y2FuQXBwZW5kSXRlbU9mVHlwZSh0eXBl
KTsKK30KKworYm9vbCBSZWNvcmRlckltcGw6OmNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8
IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworfQorCitSZW5k
ZXJpbmdNb2RlIFJlY29yZGVySW1wbDo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fZGVsZWdhdGUgPyBtX2RlbGVnYXRlLT5yZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiBSZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQoreworICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlY29yZGVySW1wbD4oKnRoaXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsg
fSwgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkU2F2ZSgpCit7CisgICAgYXBwZW5kPFNhdmU+KCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBs
OjpyZWNvcmRSZXN0b3JlKCkKK3sKKyAgICBhcHBlbmQ8UmVzdG9yZT4oKTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIGFw
cGVuZDxUcmFuc2xhdGU+KHgsIHkpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkUm90
YXRlKGZsb2F0IGFuZ2xlKQoreworICAgIGFwcGVuZDxSb3RhdGU+KGFuZ2xlKTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZFNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7Cisg
ICAgYXBwZW5kPFNjYWxlPihzY2FsZSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRT
ZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgYXBwZW5kPFNl
dENUTT4odHJhbnNmb3JtKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENvbmNhdGVu
YXRlQ1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIGFwcGVuZDxD
b25jYXRlbmF0ZUNUTT4odHJhbnNmb3JtKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29y
ZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PiBpbmxpbmVDb2xvcikKK3sKKyAgICBh
cHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihpbmxpbmVDb2xvcik7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PiBpbmxpbmVD
b2xvcikKK3sKKyAgICBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGlubGluZUNvbG9yKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0
aGlja25lc3MpCit7CisgICAgYXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4odGhpY2tuZXNzKTsK
K30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3Mg
Y2hhbmdlRmxhZ3MpCit7CisgICAgYXBwZW5kPFNldFN0YXRlPihzdGF0ZSwgY2hhbmdlRmxhZ3Mp
OworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU2V0TGluZUNhcChMaW5lQ2FwIGxpbmVD
YXApCit7CisgICAgYXBwZW5kPFNldExpbmVDYXA+KGxpbmVDYXApOworfQorCit2b2lkIFJlY29y
ZGVySW1wbDo6cmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBhcnJheSwgZmxvYXQg
ZGFzaE9mZnNldCkKK3sKKyAgICBhcHBlbmQ8U2V0TGluZURhc2g+KGFycmF5LCBkYXNoT2Zmc2V0
KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFNldExpbmVKb2luKExpbmVKb2luIGpv
aW4pCit7CisgICAgYXBwZW5kPFNldExpbmVKb2luPihqb2luKTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZFNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCit7CisgICAgYXBwZW5kPFNl
dE1pdGVyTGltaXQ+KGxpbWl0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsZWFy
U2hhZG93KCkKK3sKKyAgICBhcHBlbmQ8Q2xlYXJTaGFkb3c+KCk7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRDbGlwKGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCit7CisgICAgYXBw
ZW5kPENsaXA+KGNsaXBSZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZENsaXBP
dXQoY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBhcHBlbmQ8Q2xpcE91dD4oY2xp
cFJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQ2xpcFRvSW1hZ2VCdWZmZXIo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCit7CisgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVm
ZmVyPihpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGRlc3RpbmF0aW9uUmVjdCk7Cit9CisKK3ZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRDbGlwT3V0VG9QYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7Cisg
ICAgYXBwZW5kPENsaXBPdXRUb1BhdGg+KHBhdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkQ2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKK3sKKyAgICBh
cHBlbmQ8Q2xpcFBhdGg+KHBhdGgsIHJ1bGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgYXBwZW5kPEJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPihkZXN0aW5hdGlvbik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBtb2RlKQoreworICAgIGFw
cGVuZDxEcmF3R2x5cGhzPihmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNo
b3IsIG1vZGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZl
cj4oaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9
CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmREcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXBwZW5kPERyYXdO
YXRpdmVJbWFnZT4oaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZERyYXdQYXR0ZXJuKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgYXBwZW5kPERyYXdQYXR0ZXJuPihpbWFnZUlkZW50
aWZpZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcHRpb25zKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBhcHBlbmQ8QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcj4ob3BhY2l0eSk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRFbmRU
cmFuc3BhcmVuY3lMYXllcigpCit7CisgICAgYXBwZW5kPEVuZFRyYW5zcGFyZW5jeUxheWVyPigp
OworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCit7CisgICAgYXBwZW5kPERyYXdSZWN0PihyZWN0LCBs
aW5lV2lkdGgpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCit7CisgICAgYXBw
ZW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Mik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmREcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNv
bnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFy
cmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpCit7CisgICAgYXBw
ZW5kPERyYXdMaW5lc0ZvclRleHQ+KGJsb2NrTG9jYXRpb24sIGxvY2FsQW5jaG9yLCB0aGlja25l
c3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzKTsKK30KKwordm9pZCBSZWNvcmRlcklt
cGw6OnJlY29yZERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSYgc3R5bGUpCit7CisgICAgYXBwZW5kPERy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KHJlY3QsIHN0eWxlKTsKK30KKwordm9pZCBSZWNvcmRl
ckltcGw6OnJlY29yZERyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBh
cHBlbmQ8RHJhd0VsbGlwc2U+KHJlY3QpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3Jk
RHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8RHJhd1BhdGg+KHBhdGgp
OworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgoY29uc3Qg
UGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9y
KQoreworICAgIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUGF0aD4ocGF0aCwgd2lkdGgsIG9mZnNldCwg
Y29sb3IpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0ZvY3VzUmluZ1JlY3Rz
KGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+
KHJlY3RzLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRGaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPEZpbGxS
ZWN0PihyZWN0KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxSZWN0V2l0aENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGFw
cGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4ocmVjdCwgY29sb3IpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBH
cmFkaWVudCYgZ3JhZGllbnQpCit7CisgICAgYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50Pihy
ZWN0LCBncmFkaWVudCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsQ29tcG9z
aXRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9kZSkKK3sKKyAgICBhcHBlbmQ8RmlsbENvbXBv
c2l0ZWRSZWN0PihyZWN0LCBjb2xvciwgb3AsIG1vZGUpOworfQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvciwgQmxlbmRNb2RlIG1vZGUpCit7CisgICAgYXBwZW5kPEZpbGxSb3Vu
ZGVkUmVjdD4ocmVjdCwgY29sb3IsIG1vZGUpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVj
b3JkRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IGFwcGVuZDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4ocmVjdCwgcm91bmRlZFJlY3QsIGNvbG9y
KTsKK30KKworI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorCit2b2lkIFJlY29yZGVySW1w
bDo6cmVjb3JkRmlsbExpbmUoY29uc3QgTGluZURhdGEmIGxpbmUpCit7CisgICAgYXBwZW5kPEZp
bGxMaW5lPihsaW5lKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEZpbGxBcmMoY29u
c3QgQXJjRGF0YSYgYXJjKQoreworICAgIGFwcGVuZDxGaWxsQXJjPihhcmMpOworfQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkRmlsbFF1YWRDdXJ2ZShjb25zdCBRdWFkQ3VydmVEYXRhJiBj
dXJ2ZSkKK3sKKyAgICBhcHBlbmQ8RmlsbFF1YWRDdXJ2ZT4oY3VydmUpOworfQorCit2b2lkIFJl
Y29yZGVySW1wbDo6cmVjb3JkRmlsbEJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYg
Y3VydmUpCit7CisgICAgYXBwZW5kPEZpbGxCZXppZXJDdXJ2ZT4oY3VydmUpOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRGaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGFwcGVuZDxGaWxsUGF0aD4ocGF0
aCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRGaWxsRWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit7CisgICAgYXBwZW5kPEZpbGxFbGxpcHNlPihyZWN0KTsKK30KKwordm9p
ZCBSZWNvcmRlckltcGw6OnJlY29yZEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9ybWF0IG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8R2V0UGl4ZWxC
dWZmZXI+KG91dHB1dEZvcm1hdCwgcmVjdCk7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRQdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIHByZW11bHRpcGxpY2F0aW9uKQoreworICAgIGFwcGVuZDxQdXRQaXhlbEJ1ZmZlcj4oYnVm
ZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIHByZW11bHRpcGxpY2F0aW9uKTsKK30KKwordm9pZCBS
ZWNvcmRlckltcGw6OnJlY29yZFBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFwcGVuZDxQYWludEZyYW1l
Rm9yTWVkaWE+KHBsYXllciwgZGVzdGluYXRpb24pOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkU3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQorewor
ICAgIGFwcGVuZDxTdHJva2VSZWN0PihyZWN0LCB3aWR0aCk7Cit9CisKKyNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9rZUxpbmUoY29u
c3QgTGluZURhdGEmIGxpbmUpCit7CisgICAgYXBwZW5kPFN0cm9rZUxpbmU+KGxpbmUpOworfQor
Cit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkU3Ryb2tlQXJjKGNvbnN0IEFyY0RhdGEmIGFyYykK
K3sKKyAgICBhcHBlbmQ8U3Ryb2tlQXJjPihhcmMpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6
cmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKQoreworICAg
IGFwcGVuZDxTdHJva2VRdWFkQ3VydmU+KGN1cnZlKTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZFN0cm9rZUJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYgY3VydmUpCit7
CisgICAgYXBwZW5kPFN0cm9rZUJlemllckN1cnZlPihjdXJ2ZSk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlUGF0aD4ocGF0aCk7
Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRTdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKK3sKKyAgICBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4ocmVjdCk7Cit9CisKK3Zv
aWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRDbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIGFwcGVuZDxDbGVhclJlY3Q+KHJlY3QpOworfQorCisjaWYgVVNFKENHKQorCit2b2lk
IFJlY29yZGVySW1wbDo6cmVjb3JkQXBwbHlTdHJva2VQYXR0ZXJuKCkKK3sKKyAgICBhcHBlbmQ8
QXBwbHlTdHJva2VQYXR0ZXJuPigpOworfQorCit2b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkQXBw
bHlGaWxsUGF0dGVybigpCit7CisgICAgYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KCk7Cit9CisK
KyNlbmRpZiAvLyBVU0UoQ0cpCisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseURldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQoreworICAgIGFwcGVuZDxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7Cit9CisKK3ZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKG1fZGVsZWdhdGUp
CisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKKyAgICBt
X2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworfQorCit2b2lkIFJlY29yZGVy
SW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK3sKKyAgICBpZiAobV9kZWxlZ2F0
ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsKKyAgICBtX2Rpc3Bs
YXlMaXN0LmNhY2hlRm9udChmb250KTsKK30KKwordm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJl
c291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBpZiAobV9kZWxlZ2F0
ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIp
OworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Cit9CisK
K0Zsb2F0UmVjdCBSZWNvcmRlckltcGw6OmV4dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IHJlY3Q7CisgICAg
YXV0byYgc3RhdGUgPSBjdXJyZW50U3RhdGUoKTsKKworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQ7CisgICAgZmxvYXQgc2hhZG93UmFkaXVzOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAg
IGlmIChnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkg
eworICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50ID0gYm91bmRzOworICAgICAgICBzaGFk
b3dFeHRlbnQubW92ZShzaGFkb3dPZmZzZXQpOworICAgICAgICBzaGFkb3dFeHRlbnQuaW5mbGF0
ZShzaGFkb3dQYWludGluZ0V4dGVudChzaGFkb3dSYWRpdXMpKTsKKyAgICAgICAgYm91bmRzLnVu
aXRlKHNoYWRvd0V4dGVudCk7CisgICAgfQorCisgICAgRmxvYXRSZWN0IGNsaXBwZWRFeHRlbnQg
PSBpbnRlcnNlY3Rpb24oc3RhdGUuY2xpcEJvdW5kcywgYm91bmRzKTsKKyAgICByZXR1cm4gc3Rh
dGUuY3RtLm1hcFJlY3QoY2xpcHBlZEV4dGVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIERpc3Bs
YXlMaXN0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZmM1ODhjZjViNjFhZjNhOTBiZmJlNGQw
MjdiNjlmN2ExYjI1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMCww
ICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CisKK2NsYXNzIFJlY29y
ZGVySW1wbCA6IHB1YmxpYyBSZWNvcmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkZXJJbXBsKTsKK3B1YmxpYzoKKyAgICBj
bGFzcyBEZWxlZ2F0ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlckltcGwoRGlzcGxheUxp
c3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdH
bHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29y
ZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBSZWNvcmRl
ckltcGwoUmVjb3JkZXJJbXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwg
Y29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVySW1wbCgpOwor
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pc0VtcHR5
KCk7IH0KKworICAgIGNsYXNzIERlbGVnYXRlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgfkRlbGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BcHBlbmRJdGVtT2ZU
eXBlKEl0ZW1UeXBlKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkTmF0aXZlSW1hZ2VVc2UoTmF0aXZlSW1hZ2UmKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRm9udFVzZShGb250JikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWNvcmRJbWFnZUJ1ZmZlclVzZShJbWFnZUJ1ZmZlciYpIHsg
fQorICAgICAgICB2aXJ0dWFsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KKyAgICB9OworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoQ29udGV4dChHcmFw
aGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgZmluYWwgeyBhcHBlbmQ8Rmx1
c2hDb250ZXh0PihpZGVudGlmaWVyKTsgfQorCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBNYXli
ZSByZW1vdmUgdGhpcz8KKyAgICBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCByZWNvcmRTYXZlKCkgZmluYWw7CisgICAgdm9pZCByZWNv
cmRSZXN0b3JlKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRUcmFuc2xhdGUoZmxvYXQgeCwgZmxv
YXQgeSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRSb3RhdGUoZmxvYXQgYW5nbGUpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkU2NhbGUoY29uc3QgRmxvYXRTaXplJikgZmluYWw7CisgICAgdm9pZCBy
ZWNvcmRTZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgZmluYWw7CisgICAgdm9pZCByZWNv
cmRDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBmaW5hbDsKKyAgICB2b2lk
IHJlY29yZFNldElubGluZUZpbGxDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRTZXRJbmxpbmVTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PikgZmluYWw7CisgICAg
dm9pZCByZWNvcmRTZXRTdHJva2VUaGlja25lc3MoZmxvYXQpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRMaW5lQ2Fw
KExpbmVDYXApIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU2V0TGluZURhc2goY29uc3QgRGFzaEFy
cmF5JiwgZmxvYXQgZGFzaE9mZnNldCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRMaW5lSm9p
bihMaW5lSm9pbikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTZXRNaXRlckxpbWl0KGZsb2F0KSBm
aW5hbDsKKyAgICB2b2lkIHJlY29yZENsZWFyU2hhZG93KCkgZmluYWw7CisgICAgdm9pZCByZWNv
cmRDbGlwKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcE91dChj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXBUb0ltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZENsaXBP
dXRUb1BhdGgoY29uc3QgUGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQ2xpcFBhdGgoY29u
c3QgUGF0aCYsIFdpbmRSdWxlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3
R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5j
aG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmREcmF3SW1hZ2VC
dWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7Cisg
ICAgdm9pZCByZWNvcmREcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIHZvaWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihmbG9hdCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXll
cigpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lk
dGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKSBmaW5hbDsKKyAgICB2b2lkIHJl
Y29yZERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZERyYXdFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd1BhdGgoY29uc3Qg
UGF0aCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkRHJhd0ZvY3VzUmluZ1BhdGgoY29uc3QgUGF0
aCYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJikgZmluYWw7CisgICAg
dm9pZCByZWNvcmREcmF3Rm9jdXNSaW5nUmVjdHMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBm
bG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkRmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRG
aWxsUmVjdFdpdGhDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpIGZpbmFsOwor
ICAgIHZvaWQgcmVjb3JkRmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiwgR3Jh
ZGllbnQmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZpbGxDb21wb3NpdGVkUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCByZWNvcmRGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKKyNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
KyAgICB2b2lkIHJlY29yZEZpbGxMaW5lKGNvbnN0IExpbmVEYXRhJikgZmluYWw7CisgICAgdm9p
ZCByZWNvcmRGaWxsQXJjKGNvbnN0IEFyY0RhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEZp
bGxRdWFkQ3VydmUoY29uc3QgUXVhZEN1cnZlRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3Jk
RmlsbEJlemllckN1cnZlKGNvbnN0IEJlemllckN1cnZlRGF0YSYpIGZpbmFsOworI2VuZGlmCisg
ICAgdm9pZCByZWNvcmRGaWxsUGF0aChjb25zdCBQYXRoJikgZmluYWw7CisgICAgdm9pZCByZWNv
cmRGaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZEdl
dFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkUHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFBhaW50RnJhbWVG
b3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIGZpbmFs
OworICAgIHZvaWQgcmVjb3JkU3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgZmlu
YWw7CisjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCisgICAgdm9pZCByZWNvcmRTdHJva2VM
aW5lKGNvbnN0IExpbmVEYXRhJikgZmluYWw7CisgICAgdm9pZCByZWNvcmRTdHJva2VBcmMoY29u
c3QgQXJjRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVjb3JkU3Ryb2tlUXVhZEN1cnZlKGNvbnN0
IFF1YWRDdXJ2ZURhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0cm9rZUJlemllckN1cnZl
KGNvbnN0IEJlemllckN1cnZlRGF0YSYpIGZpbmFsOworI2VuZGlmCisgICAgdm9pZCByZWNvcmRT
dHJva2VQYXRoKGNvbnN0IFBhdGgmKSBmaW5hbDsKKyAgICB2b2lkIHJlY29yZFN0cm9rZUVsbGlw
c2UoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CisgICAgdm9pZCByZWNvcmRDbGVhclJlY3QoY29u
c3QgRmxvYXRSZWN0JikgZmluYWw7CisjaWYgVVNFKENHKQorICAgIHZvaWQgcmVjb3JkQXBwbHlT
dHJva2VQYXR0ZXJuKCkgZmluYWw7CisgICAgdm9pZCByZWNvcmRBcHBseUZpbGxQYXR0ZXJuKCkg
ZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpIGZpbmFsOworCisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpIGZp
bmFsOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOworICAgIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBl
bmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWNhbkFwcGVu
ZEl0ZW1PZlR5cGUoVDo6aXRlbVR5cGUpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBtX2Rpc3BsYXlMaXN0LmFwcGVuZDxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoVDo6aXNEcmF3aW5nSXRlbSkgeworICAgICAgICAgICAg
aWYgKExJS0VMWSghbV9kaXNwbGF5TGlzdC50cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIGl0ZW0gPSBUKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBpZiAoYXV0byByZWN0ID0gaXRl
bS5sb2NhbEJvdW5kcygqdGhpcykpCisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGRE
cmF3aW5nSXRlbUV4dGVudChleHRlbnRGcm9tTG9jYWxCb3VuZHMoKnJlY3QpKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCisgICAgICAgICAg
ICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4
dGVudChzdGQ6Om51bGxvcHQpOworICAgICAgICB9CisgICAgfQorCisgICAgRmxvYXRSZWN0IGV4
dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGNhbkFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIGNvbnN0OworCisgICAg
RGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGUgeyBu
dWxscHRyIH07CisgICAgYm9vbCBtX2lzTmVzdGVkIHsgZmFsc2UgfTsKK307CisKK30KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNDJmYzQxOGM3OTgyMzMxNDk0ZWUyNzZiNmRh
NDk5NGExZTRjOTk2YS4uOGNlYzkyNDI2ODc1MTRjNmMyYzc3Yjc4OThjMGEzNGM5MDdkNWJjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDsKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPiBjbGFz
cyBUaHJlYWRTYWZlUmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUsIHB1YmxpYyBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2Vu
ZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdh
dGUsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQg
ewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdl
QnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU0NTQxZGZhYTFiOGYxOWQxYWY3OWNlMTk1OTYxMGIyZGRh
Y2I5N2IuLjE0OGQxYTRjMDMwOGRiNGE1YTM4MjkwODFhNWFmNDM1OWU1NjZmZjEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTcGxpdCBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgaW50byBhbiBhYnN0cmFjdCBiYXNl
IGNsYXNzIGFuZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAyMS0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYkRyaXZlcl0gVXBkYXRlIHczYyBhbmQgc2VsZW5p
dW0gdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3Bw
CmluZGV4IDhhOWJkNWQyZjIxNGU3ZmIzMDg1MDVlMjdiN2U3NzdlOWFmYzk5ZDYuLjM0OWI2NTY1
ODc4ZmE2MGExOGNjN2E1M2YxNjJmMzE4MjBlNTc2MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHND
Ry5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRl
bXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnRJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Q0cuaD4KQEAgLTU1LDcgKzU1LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0VGVzdHMsIEJhc2ljQmlmdXJjYXRlZENvbnRleHQpCiAgICAgR3JhcGhpY3NDb250
ZXh0Q0cgcHJpbWFyeUNvbnRleHQocHJpbWFyeUNHQ29udGV4dC5nZXQoKSk7CiAKICAgICBJbk1l
bW9yeURpc3BsYXlMaXN0IGRpc3BsYXlMaXN0OwotICAgIFJlY29yZGVyIHNlY29uZGFyeUNvbnRl
eHQoZGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4
dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHNlY29uZGFyeUNvbnRleHQoZGlzcGxh
eUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCks
IHsgfSk7CiAKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29udGV4
dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKQEAgLTkxLDEwICs5MSwxMCBAQCBURVNUKEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgQmFzaWNCaWZ1cmNhdGVkQ29udGV4dCkKIFRFU1QoQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkKIHsK
ICAgICBJbk1lbW9yeURpc3BsYXlMaXN0IHByaW1hcnlEaXNwbGF5TGlzdDsKLSAgICBSZWNvcmRl
ciBwcmltYXJ5Q29udGV4dChwcmltYXJ5RGlzcGxheUxpc3QsIHsgfSwgRmxvYXRSZWN0KDAsIDAs
IGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCksIHsgfSk7CisgICAgUmVjb3JkZXJJbXBsIHBy
aW1hcnlDb250ZXh0KHByaW1hcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29u
dGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEluTWVtb3J5RGlzcGxheUxp
c3Qgc2Vjb25kYXJ5RGlzcGxheUxpc3Q7Ci0gICAgUmVjb3JkZXIgc2Vjb25kYXJ5Q29udGV4dChz
ZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBj
b250ZXh0SGVpZ2h0KSwgeyB9KTsKKyAgICBSZWNvcmRlckltcGwgc2Vjb25kYXJ5Q29udGV4dChz
ZWNvbmRhcnlEaXNwbGF5TGlzdCwgeyB9LCBGbG9hdFJlY3QoMCwgMCwgY29udGV4dFdpZHRoLCBj
b250ZXh0SGVpZ2h0KSwgeyB9KTsKIAogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4
KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>