<?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>217218</bug_id>
          
          <creation_ts>2020-10-02 04:40:59 -0700</creation_ts>
          <short_desc>Refactor VideoTextureCopier to be specific to a particular GraphicsContextGL and polymorphic to it</short_desc>
          <delta_ts>2020-11-11 12:08:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694041</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-02 04:40:59 -0700</bug_when>
    <thetext>Refactor VideoTextureCopier to be specific to a particular GraphicsContextGL and polymorphic to it

VideoTextureCopierCV
VideoTextureCopierGStreamer

Solves two problems:
1) No reason to create copier per media object
 -&gt; If context is lost, media object caches stale converter?&apos;
 -&gt; Creates conversion shaders per media object, not per graphics context

2) Not possible to create remote version of this
 -&gt; Need to refactor before being able to not use GraphicsContextGLOpenGL

Should be:

GraphicsContectGL::copyImageToPlatformTexture
GraphicsContextGL::copyVideoTextureToPlatformTexture

OR

GraphicsContectGL::getVideoTextureCopier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694042</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-02 04:41:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/69876433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701428</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-26 06:26:20 -0700</bug_when>
    <thetext>This is needed for web process video drawing to web process webgl canvas after WebGL is using GraphicsContextGL interface.
This is needed for web process video drawing to remote webgl canvas (transitional feature).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702278</commentid>
    <comment_count>3</comment_count>
      <attachid>412520</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-28 05:30:01 -0700</bug_when>
    <thetext>Created attachment 412520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706369</commentid>
    <comment_count>4</comment_count>
      <attachid>413789</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-10 23:44:54 -0800</bug_when>
    <thetext>Created attachment 413789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706380</commentid>
    <comment_count>5</comment_count>
      <attachid>413789</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-11-11 01:09:41 -0800</bug_when>
    <thetext>Comment on attachment 413789
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1300
&gt; +    virtual GraphicsContextGLCV* asCV() = 0;

I wonder if we should just expose copyPixelBufferToTexture on GraphicsContextGL directly, and have the context keep the GraphicsContextGLCV class for internal use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706388</commentid>
    <comment_count>6</comment_count>
      <attachid>413789</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-11 01:25:02 -0800</bug_when>
    <thetext>Comment on attachment 413789
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1300
&gt;&gt; +    virtual GraphicsContextGLCV* asCV() = 0;
&gt; 
&gt; I wonder if we should just expose copyPixelBufferToTexture on GraphicsContextGL directly, and have the context keep the GraphicsContextGLCV class for internal use?

So the idea here is that there could be GraphicsContextGLGStreamer interface for GStreamer specific things, like GStreamer specific copyGStreamerImageToTexture(somespecificaparameters). 
Also if some day there is other platforms with other APIs, those could have their own interface.
This way we solve:
 - avoid having union of all needed parameters in the method calls. E.g. GStreamer has &quot;image orientation&quot; to be passed, where as Cocoa does not have that.
 - avoid having empty functions for platforms not needing a certain function
 - avoid having PlatformNativePixelBuffer typedef abstractions that may conflict (e.g. some platforms might have two such abstractions, other platform might have only one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706390</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-11 01:28:06 -0800</bug_when>
    <thetext>So wrt what we talked off-line about ExtensionsGL, GraphicsContextGLCV is the concept of ExtensionsGL done in a way (that I think) probably originally was sort-of envisioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706391</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-11-11 01:32:26 -0800</bug_when>
    <thetext>And to elaborate:
In case we want a generic function call, and eventually we probably should want it, we should add copyImageBufferToTexture() call, and extend the WebCore::ImageBuffer abstraction so that native video objects can be wrapped into the ImageBuffer.
Similar to eventually we should make GraphicsContextGL to draw to WebCore::ImageBuffer, so that then we can draw WebGL context to WebGL context in generic way by drawing ImageBuffer to the WebGL context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706404</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 02:44:48 -0800</bug_when>
    <thetext>Committed r269678: &lt;https://trac.webkit.org/changeset/269678&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413789.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706560</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-11-11 12:08:48 -0800</bug_when>
    <thetext>Sounds good!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412520</attachid>
            <date>2020-10-28 05:30:01 -0700</date>
            <delta_ts>2020-11-10 23:44:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217218-20201028142959.patch</filename>
            <type>text/plain</type>
            <size>130139</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uZWIyM2Y2ZTFmZDI1NzI0ODhhNDFjYjYzNjM5ZGFj
MWNiYmUyYzQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTEwLTI4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgVmlk
ZW9UZXh0dXJlQ29waWVyIHRvIGJlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBHcmFwaGljc0Nv
bnRleHRHTCBhbmQgcG9seW1vcnBoaWMgdG8gaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4
NzY0MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V29yayB0b3dhcmRzIFdlYkdMIGltcGxlbWVudGF0aW9uIHdoaWNoIHVzZXMgR3JhcGhpY3NDb250
ZXh0R0wgYWJzdHJhY3QKKyAgICAgICAgYmFzZSBjbGFzcyBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMIGNvbmNyZXRlIGNsYXNzLgorCisgICAgICAgIFJlbGF0aXZlbHkgbWluaW1h
bCBjaGFuZ2VzIHRvIG1ha2UgQVZGT1VOREFUSU9OIHZhcmlhbnRzIG9mIE1lZGlhUGxheWVyUHJp
dmF0ZQorICAgICAgICBjb21waWxlIHdoZW4gR3JhcGhpY3NDb250ZXh0R0wgaXMgcGFzc2VkIGFz
IHRoZSBjb250ZXh0IGluc3RlYWQgb2YKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
CisKKyAgICAgICAgQ2hhbmdlcyBmdW5jdGlvbmFsaXR5IHNvIHRoYXQgdGhlIGNvbnZlcnNpb24g
cmVzb3VyY2VzIChzaGFkZXJzLCBGQk8pCisgICAgICAgIGFyZSBhbGxvY2F0ZWQgcGVyIGNvbnRl
eHQgaW5zdGVhZCBvZiBwcmV2aW91c2x5IHBlciB2aWRlbyBlbGVtZW50LgorICAgICAgICBUaGlz
IGFsc28gbWVhbnMgdGhhdCBjb250ZXh0IGxvc3MgaXMgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHRo
ZSBlbGVtZW50LgorCisgICAgICAgIFJlbW92ZXMgdW51c2VkIFJHQiB0ZXh0dXJlIGNvcHlpbmcg
Y29kZSBmcm9tIHRoZSBjb3B5IGltcGxlbWVudGF0aW9uLgorICAgICAgICBUaGlzIHdhcyBsZWZ0
IHVudXNlZCB3aGVuIE9wZW5HTCBhbmQgT3BlbkdMIEVTIGJhY2tlbmRzIGZvciBBVkYgdXNlcnMK
KyAgICAgICAgd2VyZSByZW1vdmVkLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIHRvIGhh
dmUgR3JhcGhpY3NDb250ZXh0R0xSZW1vdGUgdGhhdCBpcyBhYmxlIHRvIGNvcHkKKyAgICAgICAg
Ym90aCBBVkYgbWVkaWEgdGV4dHVyZXMgYXMgd2VsbCBhcyByZW1vdGUgbWVkaWEgdGV4dHVyZXMu
CisKKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgdG8gaGF2ZSBDb2NvYSB2YXJpYW50IG9mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIHRoYXQKKyAgICAgICAgaXMgYWJsZSB0byBjb3B5IGJvdGgg
QVZGIG1lZGlhIHRleHR1cmVzIGFzIHdlbGwgYXMgcmVtb3RlIG1lZGlhCisgICAgICAgIHRleHR1
cmVzLgorCisgICAgICAgIENoYW5nZXMgb25seSB0aGUgQVZGIHZhcmlhbnRzIG9mIE1lZGlhUGxh
eWVyUHJpdmF0ZSwgbm90CisgICAgICAgIHRoZSBHU3RyZWFtZXIgdmFyaWFudHMuIFNpbWlsYXIg
aW50ZXJmYWNlIEdyYXBoaWNzQ29udGV4dEdMR1N0cmVhbWVyCisgICAgICAgIGNvdWxkIGJlIGlt
cGxlbWVudGVkIGZvciBHU3RyZWFtZXIgaWYvd2hlbiByZW1vdGUgV2ViR0wgd291bGQgc3VwcG9y
dAorICAgICAgICBHU3RyZWFtZXIuIElmIHRoaXMgaXMgbm90IGRvbmUsIGEgZG93bmNhc3QgZnJv
bSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBj
YW4gYmUgYWRkZWQgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TAorICAgICAgICB1c2VzIGluIGNvcmUgV2ViR0wgYXJlIG1vZGlmaWVkIHRvIEdyYXBoaWNzQ29u
dGV4dEdMIHVzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6On5HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmRldGFjaElPU3VyZmFj
ZUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisK
IDIwMjAtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gQWRkIGFsdGVybmF0ZSB2ZXJzaW9ucyBv
ZiBleGlzdGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBvbmx5IGNvbnRhaW4gaW5saW5lIGRh
dGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggOGQ5MjQ5MWEwODUzMGVjYTJlOTZmNGRj
MWU2MmQzMjViMTZlNDc1Yy4uY2ZlYjAzOGFlZDhlYWU1MTcxM2I4NjcwNTE3YjU2YWRjMGMzYjgy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNiw5ICszMjYsOSBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
R2x5cGhQYWdlQ29yZVRleHQuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVy
Q1YuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWI0ZTE3ZjJlNzM2ZWE4NjgxYzU2ZDIwMjUxNDkyNmI4
ZGM5OTQ1MC4uYjFlMDQwMTg1YTcyZDcwMzI3ZDNlN2E5NGZkODhkMTlkMTEyYjk2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzcsNyArMzc3LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvR2x5cGhQYWdlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1Yu
Y3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cEFsbG9jYXRvck1ldGFsLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM5NDk2ODc4
ZjdkZjEyOTNiMzdkMmNjNDgwOTk2ZjlhYWJkYmU3Ni4uNjExYTljYWQ5YWIxNDYxZWZhMDJlOWU5
MDExM2Y2OGVhMGU1ODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIxNyw2ICsyMjE3LDggQEAKIAkJN0FGOUIyMDYxOENG
QjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjAwMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdp
b25MaXN0LmggKi87IH07CiAJCTdBRjlCMjBEMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MDkxOENGQjVGMjAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggKi87IH07CiAJCTdBRjlCMjBGMThD
RkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZU
VFJlZ2lvbkxpc3QuaCAqLzsgfTsKKwkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0IxMDMz
OUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNB
MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5
RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBG
MkMgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBo
aWNzRWxlbWVudC5oICovOyB9OwpAQCAtNDIyMiw3ICs0MjI0LDYgQEAKIAkJQ0Q5NEE1REQxRjcx
RDVEODAwRjUyNUM1IC8qIENETUNsZWFyS2V5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNURCMUY3MUNCQjAwMEY1MjVDNSAvKiBDRE1DbGVh
cktleS5jcHAgKi87IH07CiAJCUNEOTRBNURFMUY3MkY1N0IwMEY1MjVDNSAvKiBDRE1DbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTRBNUM5
MUY3MUNBOUQwMEY1MjVDNSAvKiBDRE1DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDlDQzU4NTI0QzZCQkVCMDBDRDNDNjQgLyogVlA5
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDZGRTVCQTI0QkNFN0I2MDA5RkNEQTQgLyogVlA5VXRpbGl0aWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0Q5RDgyN0ExQzdCOEVFMTAw
NkZGMDY2IC8qIFZpZGVvVGV4dHVyZUNvcGllckNWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlEODI3ODFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9U
ZXh0dXJlQ29waWVyQ1YuaCAqLzsgfTsKIAkJQ0Q5REUxNzUxN0FBQzc0QzAwRUEzODZEIC8qIEpT
TWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOURFMTczMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmggKi87IH07CiAJ
CUNEOURFMTdCMTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5REUxNzcxN0FBQzc1QjAwRUEz
ODZEIC8qIEpTU291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEOURFMTdEMTdBQUM3NUIwMEVBMzg2
RCAvKiBKU1NvdXJjZUJ1ZmZlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOURFMTc5MTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZl
ckxpc3QuaCAqLzsgfTsKQEAgLTEwMDg3LDYgKzEwMDg4LDkgQEAKIAkJN0FGOUIyMDkxOENGQjVG
MjAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVlRUUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRjlCMjBB
MThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNWVFRSZWdpb25MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZUVFJlZ2lvbkxpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IxMDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjEw
MzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xD
Vi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlE
MDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NTQyLDggKzE0NTQ2LDYgQEAKIAkJQ0Q5QTg3RjkyMTVENkNGMzAw
NkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWlya3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVp
cmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1aXJrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDlEMzc1QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENETUluc3RhbmNlU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlDRDlEODI3NzFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UZXh0dXJlQ29w
aWVyQ1YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDlEODI3ODFDN0I4RUUx
MDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlkZW9UZXh0dXJlQ29waWVyQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q5REUxNzIxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOURFMTczMTdBQUM3NEMwMEVBMzg2RCAvKiBK
U01lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFT
b3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzYxN0FBQzc1QjAw
RUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU291cmNlQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI3NjAyLDE0ICsyNzYwNCwxNSBAQAogCQlDRDlEODI3QzFDN0JCMkVEMDA2RkYwNjYgLyog
Y3YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdCMTAz
MzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8sCisJCQkJN0Ix
MDMzOUEyNTQ5NzIwMDAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgKi8s
CisJCQkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oICovLAogCQkJCUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmggKi8sCiAJCQkJQ0QyN0FFNEYyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRp
b25TZXNzaW9uVlQubW0gKi8sCiAJCQkJMDc0NkQzMEMyMTQ2RUEzODAwM0RERjg0IC8qIEltYWdl
VHJhbnNmZXJTZXNzaW9uVlQuaCAqLywKIAkJCQkwNzQ2RDMwQTIxNDZFQTM3MDAzRERGODQgLyog
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbSAqLywKIAkJCQlDRDdEMzM0MTFDN0ExMjNGMDAwNDEy
OTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDIxQzdBMTIz
RjAwMDQxMjkzIC8qIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCAqLywKLQkJCQlDRDlEODI3NzFD
N0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwICovLAotCQkJCUNEOUQ4
Mjc4MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBjdjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTgxMiw2ICsz
MTgxNSw4IEBACiAJCQkJMzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdyYXBoaWNzQ29udGV4
dEdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMzBB
MDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1YuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBH
cmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCQjM0QTQ4MjUz
Nzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUM3QjlGQzEwNDJEMzY1MDAwOUQ0NDcgLyogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOUE3Mjg4MjNDMjY3RkUwMDg1MzUzQyAv
KiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ3
MTMsNyArMzQ3MTgsNiBAQAogCQkJCUNERTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1Bs
YXliYWNrUXVhbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcw
Q0UzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc1N0IxM0UyMTRBRTc5OTAwNzk0QjBEIC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywK
LQkJCQlDRDlEODI3QTFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEQzkzOUE4MUU5QkRGQjEwMEJCNzY4RCAvKiBWaWRlb1Rvb2xi
b3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4
IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJFODhFMEUyMTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBjMDMy
ZTA0YjFkYmQ4YjQzNmE0YTJiODg0NDBmMzQ2NjU3OWQ1NTI4Li4wMDdjOTNjMTBkMTdmNjgyYzJh
NTg2YmY3MTAxMTlhYWVjYzE0ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNz
IEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsKIAorI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ1Y7CisjZW5kaWYKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgUmVmQ291
bnRlZDxHcmFwaGljc0NvbnRleHRHTD4gewogcHVibGljOgogICAgIGVudW0gewpAQCAtNzc4LDYg
Kzc4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIERPTVNvdXJjZU5vbmUsCiAgICAgfTsKIAorICAg
IGVudW0gY2xhc3MgRmxpcFkgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAg
IH07CisKICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtR0xPYmplY3Qg
cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKQEAgLTEyODYsNiArMTI5NSwxMSBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKKyNpZiBFTkFC
TEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgLy8gUmV0dXJucyBpbnRlcmZhY2Ug
Zm9yIENWIGludGVyYWN0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCisgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgPSAwOworI2VuZGlmCisKICNpZiAh
VVNFKEFOR0xFKQogICAgIC8vIEhlbHBlciB0byB0ZXhJbWFnZTJEIHdpdGggcGl4ZWw9PTAgY2Fz
ZTogcGl4ZWxzIGFyZSBpbml0aWFsaXplZCB0byAwLgogICAgIC8vIFJldHVybiB0cnVlIGlmIG5v
IEdMIGVycm9yIGlzIHN5bnRoZXNpemVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAppbmRleCBkMjZkNGVmODFlNmIzMzQzN2MxMTUzZTg4ZWIzMTk2MGZiODc3YTdmLi40YzIyNDIy
MTU4MTc2NmE3YzRhZTdhNmU2N2Y3Y2U2ZTRiYWYxZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcApAQCAtNDksNiArNDksMTAgQEAKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0Fj
Y2VsZXJhdGUuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIgorI2VuZGlmCisKIC8v
IFNraXAgdGhlIGluY2x1c2lvbiBvZiBBTkdMRSdzIGV4cGxpY2l0IGNvbnRleHQgZW50cnkgcG9p
bnRzIGZvciBub3cuCiAjZGVmaW5lIEdMX0FOR0xFX2V4cGxpY2l0X2NvbnRleHQKICNkZWZpbmUg
R0xfQU5HTEVfZXhwbGljaXRfY29udGV4dF9nbGVzMQpAQCAtMjU4NSw2ICsyNTg5LDE0IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICBVTlVTRURfUEFSQU0oZHN0T2Zmc2V0KTsKIH0KIAor
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzQ29udGV4dEdM
Q1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKK3sKKyAgICBpZiAoIW1fY3YpCisg
ICAgICAgIG1fY3YgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRT4oKnRoaXMp
OworICAgIHJldHVybiBtX2N2LmdldCgpOworfQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CmluZGV4IDZhNmZkNzE4M2FlODlkMzg1ODJiNjExZGQ3MDE2YTUzYWU5YzFlYTYuLjM4ZmM5ZjA5
Y2FlYWJkNjRkNTZkNDUxNmU0YmQ5Yzk5MmUyMmU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBA
IC02NCw3ICs2NCw2IEBAIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3Mg
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKLWNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWOwogY2xhc3MgVmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwog
CkBAIC0zNDUsNyArMzQ0LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fbGFz
dEltYWdlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2lt
YWdlUm90YXRpb25TZXNzaW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3Bp
ZXJDVj4gbV92aWRlb1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAKICAgICBmcmllbmQgY2xh
c3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
ZjI5NDg4MTZlZGRlNzllNzhhMTkzMWQ1YmM2ZDNlY2VlYjVkODQ3Zi4uZjA1NzYwZTFjOTZkOGZm
OWRkY2IxYmVkMTExYWRjNzM2MTFiZGFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00
Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMQ1YuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAjaW1wb3J0ICJJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCIKQEAgLTYwLDcgKzYxLDYgQEAKICNpbXBvcnQgIlRl
eHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBv
cnQgIlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIgotI2ltcG9ydCAiVmlkZW9UZXh0dXJlQ29waWVy
Q1YuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5o
IgpAQCAtMjMzMiwxMyArMjMzMiwxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIGlm
ICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVf
dCB3aWR0aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7
Ci0gICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOwotCi0gICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAg
bV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigq
Y29udGV4dCk7Ci0KLSAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRv
UGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBv
dXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CisgICAgYXV0byBjb250ZXh0Q1YgPSBj
b250ZXh0LT5hc0NWKCk7CisgICAgaWYgKCFjb250ZXh0Q1YpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgQVNTRVJUX1VO
VVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV8yRCk7CisgICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJl
KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxG
b3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSk7CiB9
CiAKIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBl
N2JmN2E3NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFiLi43MmZhMGZkYjJiODg4ZGNh
MTJhNjhlYmZhOGIzNGRjM2MxZDM3ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
NTYsNyArNTYsNiBAQCBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOwogY2xhc3MgUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVjsKIGNsYXNzIFBsYXRmb3JtQ2xvY2tDTTsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKLWNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWOwogY2xhc3MgV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiAKQEAgLTMyMyw3ICszMjIsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBdmFpbGFibGVWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKICAgICBib29s
IG1fYWxsUmVuZGVyZXJzSGF2ZUF2YWlsYWJsZVNhbXBsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV92aXNpYmxlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29w
aWVyQ1Y+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogICAgIFJldGFpblB0cjxDVk9wZW5HTFRleHR1
cmVSZWY+IG1fbGFzdFRleHR1cmU7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKICAgICBSZWZQdHI8TWVkaWFQbGF5YmFja1RhcmdldD4gbV9wbGF5YmFja1RhcmdldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA5MjViZjRlMWY5MGI1NGM0Mjg2NmMyNjU4MDU5
YzYxMWFjYzFiYjBlLi5lN2I0NTU4YTk4MzFmY2UxMGI5OTFiNTZhZmY0YWY4MjQ2ZmQ5YTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTQgQEAKICNpbXBvcnQg
IkFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCIKICNpbXBvcnQgIkNETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTENWLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgiCiAjaW1wb3J0ICJQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bi5oIgogI2ltcG9ydCAiVmlkZW9MYXllck1hbmFnZXJPYmpDLmgiCi0jaW1wb3J0ICJWaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oIgogI2ltcG9ydCAiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgi
CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldC5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWVGltZS5oPgpAQCAtNjQ2LDE0ICs2NDcsMTIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEK
ICAgICAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0KLSAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgobV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKLQotICAgIGlmICghbV92aWRlb1Rl
eHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxW
aWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwotCi0gICAgcmV0dXJuIG1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwor
ICAgIGF1dG8gY29udGV4dENWID0gY29udGV4dC0+YXNDVigpOworICAgIGlmIChjb250ZXh0Q1Yp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlB
bHBoYSk7CisgICAgQVNTRVJUX1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7CisgICAgcmV0dXJuIGNvbnRleHRDVi0+Y29w
eVBpeGVsQnVmZmVyVG9UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0
dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0
R0xDVjo6RmxpcFkoZmxpcFkpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMzQ0ZmU4NDlhMzcwNDJjMmZkNGYw
MDE1Yzg5MWZlMDg5YzJkNWRlMS4uODkyMjMzOTg3YzhmZWYwMjU1YTEwNzAzNDI1NGZjODc3MDA5
MGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC00
Niw2ICs0NiwxMCBAQAogI2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEFT
U0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxMDU5NjZiOTljOGU5
YWI1Y2Y0MTc2YjQ3NmNmZmM5ZDE3ZDMyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1YuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFWRk9V
TkRBVElPTikKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKK3R5cGVkZWYgc3Ry
dWN0IF9fQ1ZCdWZmZXIqIENWUGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gSW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggQ1Ygb2JqZWN0cyBhbmQgR3JhcGhpY3ND
b250ZXh0R0wuCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5HcmFwaGljc0NvbnRleHRHTENWKCkgPSBkZWZhdWx0OworCisgICAgdXNpbmcgRmxpcFkg
PSBHcmFwaGljc0NvbnRleHRHTDo6RmxpcFk7CisgICAgLy8gQ29waWVzIENWIHBpeGVsIGJ1ZmZl
ciB0byBHcmFwaGljc0NvbnRleHRHTCBURVhUVVJFXzJEIHRleHR1cmUgb2YgdGhlIHNhbWUgc2l6
ZSBhcyB0aGUgcGl4ZWwgYnVmZmVyLgorICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgor
ICAgIHZpcnR1YWwgYm9vbCBjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJl
ZiwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSkg
PSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZkNTAzYmNiYTc1YWZiOGM1MDc5MGIxYzI0ZTI4MjgzNmM1NWQ5NDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0wLDAgKzEsNjk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIK
KworI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJGb3VyQ0MuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAw
CisjaW5jbHVkZSA8QU5HTEUvZWdsLmg+IC8vIE5PTElOVAorI2luY2x1ZGUgPEFOR0xFL2VnbGV4
dC5oPgorI2luY2x1ZGUgPEFOR0xFL2VnbGV4dF9hbmdsZS5oPgorI2luY2x1ZGUgPEFOR0xFL2Vu
dHJ5X3BvaW50c19lZ2wuaD4KKyNpbmNsdWRlIDxBTkdMRS9lbnRyeV9wb2ludHNfZ2xlc18yXzBf
YXV0b2dlbi5oPgorLy8gU2tpcCB0aGUgaW5jbHVzaW9uIG9mIEFOR0xFJ3MgZXhwbGljaXQgY29u
dGV4dCBlbnRyeSBwb2ludHMgZm9yIG5vdy4KKyNkZWZpbmUgR0xfQU5HTEVfZXhwbGljaXRfY29u
dGV4dAorI2luY2x1ZGUgPEFOR0xFL2dsMmV4dC5oPgorI2luY2x1ZGUgPEFOR0xFL2dsMmV4dF9h
bmdsZS5oPgorCisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgY29uc3RleHByIGF1dG8gc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJl
MkQgeworICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyIKKyAgICAidW5pZm9ybSB2ZWMy
IHVfeVRleHR1cmVTaXplOyIKKyAgICAidW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6ZTsiCisg
ICAgInVuaWZvcm0gaW50IHVfZmxpcFk7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNv
b3JkaW5hdGU7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOyIKKyAg
ICAidm9pZCBtYWluKCkiCisgICAgInsiCisgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9w
b3NpdGlvbiwgMCwgMS4wKTsiCisgICAgIiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlvbiA9IGFf
cG9zaXRpb24gKiAuNSArIC41OyIKKyAgICAiICAgIGlmICh1X2ZsaXBZID09IDEpIgorICAgICIg
ICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0aW9uLnk7
IgorICAgICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRpb247Igor
ICAgICIgICAgdl91dlRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKKyAg
ICAifSJfcworfTsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNfeXV2VmVydGV4U2hhZGVyVGV4
dHVyZVJlY3RhbmdsZSB7CisgICAgImF0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247IgorICAgICJ1
bmlmb3JtIHZlYzIgdV95VGV4dHVyZVNpemU7IgorICAgICJ1bmlmb3JtIHZlYzIgdV91dlRleHR1
cmVTaXplOyIKKyAgICAidW5pZm9ybSBpbnQgdV9mbGlwWTsiCisgICAgInZhcnlpbmcgdmVjMiB2
X3lUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3Jk
aW5hdGU7IgorICAgICJ2b2lkIG1haW4oKSIKKyAgICAieyIKKyAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gdmVjNChhX3Bvc2l0aW9uLCAwLCAxLjApOyIKKyAgICAiICAgIHZlYzIgbm9ybWFsaXplZFBv
c2l0aW9uID0gYV9wb3NpdGlvbiAqIC41ICsgLjU7IgorICAgICIgICAgaWYgKHVfZmxpcFkgPT0g
MSkiCisgICAgIiAgICAgICAgbm9ybWFsaXplZFBvc2l0aW9uLnkgPSAxLjAgLSBub3JtYWxpemVk
UG9zaXRpb24ueTsiCisgICAgIiAgICB2X3lUZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQ
b3NpdGlvbiAqIHVfeVRleHR1cmVTaXplOyIKKyAgICAiICAgIHZfdXZUZXh0dXJlQ29vcmRpbmF0
ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbiAqIHVfdXZUZXh0dXJlU2l6ZTsiCisgICAgIn0iX3MKK307
CisKK2NvbnN0ZXhwciBhdXRvIHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlMkQgeworICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsiCisgICAgInVuaWZvcm0gc2FtcGxlcjJEIHVfeVRleHR1
cmU7IgorICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3V2VGV4dHVyZTsiCisgICAgInVuaWZvcm0g
bWF0NCB1X2NvbG9yTWF0cml4OyIKKyAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGlu
YXRlOyIKKyAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZv
aWQgbWFpbigpIgorICAgICJ7IgorICAgICIgICAgdmVjNCB5dXY7IgorICAgICIgICAgeXV2LnIg
PSB0ZXh0dXJlMkQodV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7IgorICAgICIg
ICAgeXV2LmdiID0gdGV4dHVyZTJEKHVfdXZUZXh0dXJlLCB2X3V2VGV4dHVyZUNvb3JkaW5hdGUp
LnJnOyIKKyAgICAiICAgIHl1di5hID0gMS4wOyIKKyAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHl1
diAqIHVfY29sb3JNYXRyaXg7IgorICAgICJ9Il9zCit9OworCitzdGF0aWMgY29uc3RleHByIGF1
dG8gc195dXZGcmFnbWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUgeworICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsiCisgICAgInVuaWZvcm0gc2FtcGxlcjJEUmVjdCB1X3lUZXh0dXJlOyIK
KyAgICAidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHVfdXZUZXh0dXJlOyIKKyAgICAidW5pZm9ybSBt
YXQ0IHVfY29sb3JNYXRyaXg7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5h
dGU7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOyIKKyAgICAidm9p
ZCBtYWluKCkiCisgICAgInsiCisgICAgIiAgICB2ZWM0IHl1djsiCisgICAgIiAgICB5dXYuciA9
IHRleHR1cmUyRFJlY3QodV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7IgorICAg
ICIgICAgeXV2LmdiID0gdGV4dHVyZTJEUmVjdCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29y
ZGluYXRlKS5yZzsiCisgICAgIiAgICB5dXYuYSA9IDEuMDsiCisgICAgIiAgICBnbF9GcmFnQ29s
b3IgPSB5dXYgKiB1X2NvbG9yTWF0cml4OyIKKyAgICAifSJfcworfTsKKworZW51bSBjbGFzcyBQ
aXhlbFJhbmdlIHsKKyAgICBVbmtub3duLAorICAgIFZpZGVvLAorICAgIEZ1bGwsCit9OworCitl
bnVtIGNsYXNzIFRyYW5zZmVyRnVuY3Rpb25DViB7CisgICAgVW5rbm93biwKKyAgICBrSVRVX1Jf
NzA5XzIsCisgICAga0lUVV9SXzYwMV80LAorICAgIGtTTVBURV8yNDBNXzE5OTUsCisgICAga0RD
SV9QMywKKyAgICBrUDNfRDY1LAorICAgIGtJVFVfUl8yMDIwLAorfTsKKworc3RhdGljIFBpeGVs
UmFuZ2UgcGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChPU1R5cGUgcGl4ZWxGb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQ0
NDRBWXBDYkNyODoKKyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDQ0QVlwQ2JDcjE2Ogor
ICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcl80QV84QmlQbGFuYXI6CisgICAg
Y2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZToKKyAg
ICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZToK
KyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5n
ZToKKyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDRZcENiQ3IxMEJpUGxhbmFyVmlkZW9S
YW5nZToKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFuZ2U6OlZpZGVvOworICAgIGNhc2Uga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFuYXJGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOgorICAgIGNhc2Uga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjhGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhlbEZvcm1h
dFR5cGVfQVJHQjIxMDEwMTBMRVBhY2tlZDoKKyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOgorICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBl
XzQyMllwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5
cGVfNDQ0WXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZToKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFu
Z2U6OkZ1bGw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFuZ2U6OlVua25v
d247CisgICAgfQorfQorCitzdGF0aWMgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rp
b25Gcm9tU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICBpZiAoIXN0cmluZyB8fCBD
RkdldFR5cGVJRChzdHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVy
biBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OlVua25vd247CisgICAgaWYgKENGRXF1YWwoc3RyaW5nLCBr
Q1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yKSkKKyAgICAgICAgcmV0dXJuIFRy
YW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzcwOV8yOworICAgIGlmIChDRkVxdWFsKHN0cmluZywg
a0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl82MDFfNCkpCisgICAgICAgIHJldHVybiBU
cmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl82MDFfNDsKKyAgICBpZiAoQ0ZFcXVhbChzdHJpbmcs
IGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8xOTk1KSkKKyAgICAgICAgcmV0
dXJuIFRyYW5zZmVyRnVuY3Rpb25DVjo6a1NNUFRFXzI0ME1fMTk5NTsKKyAgICBpZiAoY2FuTG9h
ZF9Db3JlVmlkZW9fa0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9EQ0lfUDMoKSAmJiBDRkVxdWFs
KHN0cmluZywga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9EQ0lfUDMpKQorICAgICAgICByZXR1
cm4gVHJhbnNmZXJGdW5jdGlvbkNWOjprRENJX1AzOworICAgIGlmIChjYW5Mb2FkX0NvcmVWaWRl
b19rQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X1AzX0Q2NSgpICYmIENGRXF1YWwoc3RyaW5nLCBr
Q1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X1AzX0Q2NSkpCisgICAgICAgIHJldHVybiBUcmFuc2Zl
ckZ1bmN0aW9uQ1Y6OmtQM19ENjU7CisgICAgaWYgKGNhbkxvYWRfQ29yZVZpZGVvX2tDVkltYWdl
QnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMCgpICYmIENGRXF1YWwoc3RyaW5nLCBrQ1ZJbWFn
ZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjApKQorICAgICAgICByZXR1cm4gVHJhbnNmZXJG
dW5jdGlvbkNWOjprSVRVX1JfMjAyMDsKKyAgICByZXR1cm4gVHJhbnNmZXJGdW5jdGlvbkNWOjpV
bmtub3duOworfQorCitzdHJ1Y3QgR0xmbG9hdENvbG9yIHsKKyAgICB1bmlvbiB7CisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICBHTGZsb2F0IHI7CisgICAgICAgICAgICBHTGZsb2F0IGc7
CisgICAgICAgICAgICBHTGZsb2F0IGI7CisgICAgICAgIH0gcmdiOworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgR0xmbG9hdCB5OworICAgICAgICAgICAgR0xmbG9hdCBjYjsKKyAgICAg
ICAgICAgIEdMZmxvYXQgY3I7CisgICAgICAgIH0geWNiY3I7CisgICAgfTsKKworICAgIGNvbnN0
ZXhwciBHTGZsb2F0Q29sb3IoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYikKKyAgICAg
ICAgOiByZ2IgeyByLCBnLCBiIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEdMZmxv
YXRDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBHTGZsb2F0IHNjYWxlKQorICAgICAgICA6IHJn
YiB7IHIgLyBzY2FsZSwgZyAvIHNjYWxlLCBiIC8gc2NhbGV9CisgICAgeworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdCBhYnMoR0xmbG9hdCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2YWx1ZSA+PSAwID8gdmFsdWUgOiAtdmFsdWU7CisgICAgfQorCisgICAgY29u
c3RleHByIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBHTGZsb2F0Q29sb3ImIGNv
bG9yLCBHTGZsb2F0IG1heERlbHRhKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFicyhy
Z2IuciAtIGNvbG9yLnJnYi5yKSA8IGFicyhtYXhEZWx0YSkKKyAgICAgICAgICAgICYmIGFicyhy
Z2IuZyAtIGNvbG9yLnJnYi5nKSA8IGFicyhtYXhEZWx0YSkKKyAgICAgICAgICAgICYmIGFicyhy
Z2IuYiAtIGNvbG9yLnJnYi5iKSA8IGFicyhtYXhEZWx0YSk7CisgICAgfQorfTsKKworc3RydWN0
IEdMZmxvYXRDb2xvcnMgeworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGJsYWNr
ICAgezAsIDAsIDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHdoaXRlICAg
ezEsIDEsIDF9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHJlZCAgICAgezEs
IDAsIDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGdyZWVuICAgezAsIDEs
IDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGJsdWUgICAgezAsIDAsIDF9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGN5YW4gICAgezAsIDEsIDF9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIG1hZ2VudGEgezEsIDAsIDF9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHllbGxvdyAgezEsIDEsIDB9OworfTsKKwor
c3RydWN0IFlDYkNyTWF0cml4IHsKKyAgICB1bmlvbiB7CisgICAgICAgIEdMZmxvYXQgcm93c1s0
XVs0XTsKKyAgICAgICAgR0xmbG9hdCBkYXRhWzE2XTsKKyAgICB9OworCisgICAgY29uc3RleHBy
IFlDYkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBj
ckNvZWZmaWNpZW50KTsKKworICAgIG9wZXJhdG9yIFZlY3RvcjxHTGZsb2F0PigpIGNvbnN0Cisg
ICAgeworICAgICAgICBWZWN0b3I8R0xmbG9hdD4gdmVjdG9yOworICAgICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIDE2KTsKKyAgICAgICAgcmV0dXJuIHZlY3RvcjsKKyAgICB9CisKKyAgICBjb25z
dGV4cHIgR0xmbG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsK
K307CisKK2NvbnN0ZXhwciBZQ2JDck1hdHJpeDo6WUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSByYW5n
ZSwgR0xmbG9hdCBjYkNvZWZmaWNpZW50LCBHTGZsb2F0IGNyQ29lZmZpY2llbnQpCisgICAgOiBy
b3dzIHsgfQoreworICAgIC8vIFRoZSBjb252ZXJzaW9uIGZyb20gWUNiQ3IgLT4gUkdCIGdlbmVy
YWxseSB0YWtlcyB0aGUgZm9ybToKKyAgICAvLyBZID0gS3IgKiBSICsgS2cgKiBHICsgS2IgKiBC
CisgICAgLy8gQ2IgPSAoQiAtIFkpIC8gKDIgKiAoMSAtIEtiKSkKKyAgICAvLyBDciA9IChSIC0g
WSkgLyAoMiAqICgxIC0gS3IpKQorICAgIC8vIFdoZXJlIHRoZSB2YWx1ZXMgb2YgS2IgYW5kIEty
IGFyZSBkZWZpbmVkIGluIGEgc3BlY2lmaWNhdGlvbiBhbmQgS2cgaXMgZGVyaXZlZCBmcm9tOiBL
ciArIEtnICsgS2IgPSAxCisgICAgLy8KKyAgICAvLyBTb2x2aW5nIHRoZSBhYm92ZSBlcXVhdGlv
bnMgZm9yIFIsIEIsIGFuZCBHIGRlcml2ZXMgdGhlIGZvbGxvd2luZzoKKyAgICAvLyBSID0gWSAr
ICgyICogKDEgLSBLcikpICogQ3IKKyAgICAvLyBCID0gWSArICgyICogKDEgLSBLYikpICogQ2IK
KyAgICAvLyBHID0gWSAtICgyICogKDEgLSBLYikpICogKEtiIC8gS2cpICogQ2IgLSAoKDEgLSBL
cikgKiAyKSAqIChLciAvIEtnKSAqIENyCisgICAgLy8KKyAgICAvLyBXaGVuIHRoZSBjb2xvciB2
YWx1ZXMgYXJlIFZpZGVvIHJhbmdlLCBZIGhhcyBhIHJhbmdlIG9mIFsxNiwgMjM1XSB3aXRoIGEg
d2lkdGggb2YgMjE5LCBhbmQgQ2IgJiBDciBoYXZlCisgICAgLy8gYSByYW5nZSBvZiBbMTYsIDI0
MF0gd2l0aCBhIHdpZHRoIG9mIDIyNC4gV2hlbiB0aGUgY29sb3IgdmFsdWVzIGFyZSBGdWxsIHJh
bmdlLCBZLCBDYiwgYW5kIENyIGFsbCBoYXZlCisgICAgLy8gYSByYW5nZSBvZiBbMCwgMjU1XSB3
aXRoIGEgd2lkdGggb2YgMjU2LgorCisgICAgR0xmbG9hdCBjZ0NvZWZmaWNpZW50ID0gMSAtIGNi
Q29lZmZpY2llbnQgLSBjckNvZWZmaWNpZW50OworICAgIEdMZmxvYXQgeVNjYWxpbmdGYWN0b3Ig
PSByYW5nZSA9PSBQaXhlbFJhbmdlOjpGdWxsID8gMS5mIDogMjU1LmYgLyAyMTkuZjsKKyAgICBH
TGZsb2F0IGNiY3JTY2FsaW5nRmFjdG9yID0gcmFuZ2UgPT0gUGl4ZWxSYW5nZTo6RnVsbCA/IDEu
ZiA6IDI1NS5mIC8gMjI0LmY7CisKKyAgICByb3dzWzBdWzBdID0geVNjYWxpbmdGYWN0b3I7Cisg
ICAgcm93c1swXVsxXSA9IDA7CisgICAgcm93c1swXVsyXSA9IGNiY3JTY2FsaW5nRmFjdG9yICog
MiAqICgxIC0gY3JDb2VmZmljaWVudCk7CisgICAgcm93c1swXVszXSA9IDA7CisKKyAgICByb3dz
WzFdWzBdID0geVNjYWxpbmdGYWN0b3I7CisgICAgcm93c1sxXVsxXSA9IC1jYmNyU2NhbGluZ0Zh
Y3RvciAqIDIgKiAoMSAtIGNiQ29lZmZpY2llbnQpICogKGNiQ29lZmZpY2llbnQgLyBjZ0NvZWZm
aWNpZW50KTsKKyAgICByb3dzWzFdWzJdID0gLWNiY3JTY2FsaW5nRmFjdG9yICogMiAqICgxIC0g
Y3JDb2VmZmljaWVudCkgKiAoY3JDb2VmZmljaWVudCAvIGNnQ29lZmZpY2llbnQpOworICAgIHJv
d3NbMV1bM10gPSAwOworCisgICAgcm93c1syXVswXSA9IHlTY2FsaW5nRmFjdG9yOworICAgIHJv
d3NbMl1bMV0gPSBjYmNyU2NhbGluZ0ZhY3RvciAqIDIgKiAoMSAtIGNiQ29lZmZpY2llbnQpOwor
ICAgIHJvd3NbMl1bMl0gPSAwOworICAgIHJvd3NbMl1bM10gPSAwOworCisgICAgcm93c1szXVsw
XSA9IDA7CisgICAgcm93c1szXVsxXSA9IDA7CisgICAgcm93c1szXVsyXSA9IDA7CisgICAgcm93
c1szXVszXSA9IDE7CisKKyAgICAvLyBDb25maWd1cmUgdGhlIGZpbmFsIGNvbHVtbiBvZiB0aGUg
bWF0cml4IHRvIGNvbnZlcnQgQ2IgYW5kIENyIHRvIFstMTI4LCAxMjhdCisgICAgLy8gYW5kLCBp
biB0aGUgY2FzZSBvZiB2aWRlby1yYW5nZSwgdG8gY29udmVydCBZIHRvIFsxNiwgMjQwXToKKyAg
ICBmb3IgKGF1dG8gcm93TnVtYmVyID0gMDsgcm93TnVtYmVyIDwgMzsgKytyb3dOdW1iZXIpIHsK
KyAgICAgICAgYXV0byYgcm93ID0gcm93c1tyb3dOdW1iZXJdOworICAgICAgICBhdXRvJiB4ID0g
cm93WzBdOworICAgICAgICBhdXRvJiB5ID0gcm93WzFdOworICAgICAgICBhdXRvJiB6ID0gcm93
WzJdOworICAgICAgICBhdXRvJiB3ID0gcm93WzNdOworCisgICAgICAgIHcgLT0gKHkgKyB6KSAq
IDEyOCAvIDI1NTsKKyAgICAgICAgaWYgKHJhbmdlID09IFBpeGVsUmFuZ2U6OlZpZGVvKQorICAg
ICAgICAgICAgdyAtPSB4ICogMTYgLyAyNTU7CisgICAgfQorfQorCitjb25zdGV4cHIgR0xmbG9h
dENvbG9yIFlDYkNyTWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gR0xmbG9hdENvbG9yKAorICAgICAgICByb3dzWzBdWzBdICog
Y29sb3IucmdiLnIgKyByb3dzWzBdWzFdICogY29sb3IucmdiLmcgKyByb3dzWzBdWzJdICogY29s
b3IucmdiLmIgKyByb3dzWzBdWzNdLAorICAgICAgICByb3dzWzFdWzBdICogY29sb3IucmdiLnIg
KyByb3dzWzFdWzFdICogY29sb3IucmdiLmcgKyByb3dzWzFdWzJdICogY29sb3IucmdiLmIgKyBy
b3dzWzFdWzNdLAorICAgICAgICByb3dzWzJdWzBdICogY29sb3IucmdiLnIgKyByb3dzWzJdWzFd
ICogY29sb3IucmdiLmcgKyByb3dzWzJdWzJdICogY29sb3IucmdiLmIgKyByb3dzWzJdWzNdCisg
ICAgKTsKK30KKworc3RhdGljIGNvbnN0IFZlY3RvcjxHTGZsb2F0PiBZQ2JDclRvUkdCTWF0cml4
Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKFBpeGVsUmFuZ2UgcmFuZ2UsIFRyYW5zZmVyRnVu
Y3Rpb25DViB0cmFuc2ZlckZ1bmN0aW9uKQoreworICAgIHVzaW5nIE1hcEtleSA9IHN0ZDo6cGFp
cjxQaXhlbFJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9
IFN0ZE1hcDxNYXBLZXksIFZlY3RvcjxHTGZsb2F0Pj47CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKworICAgIC8vIE1hdHJpY2VzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVu
dHMgaW4gdGhlIElUVSBSLjYwMSByZXYgNCBzcGVjaWZpY2F0aW9uCisgICAgLy8gaHR0cHM6Ly93
d3cuaXR1LmludC9yZWMvUi1SRUMtQlQuNjAxCisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1h
dHJpeCByNjAxVmlkZW9NYXRyaXggeyBQaXhlbFJhbmdlOjpWaWRlbywgMC4xMTRmLCAwLjI5OWYg
fTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0cml4IHI2MDFGdWxsTWF0cml4IHsgUGl4
ZWxSYW5nZTo6RnVsbCwgMC4xMTRmLCAwLjI5OWYgfTsKKworICAgIHN0YXRpY19hc3NlcnQoKHI2
MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJy
LjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOworICAgIHN0
YXRpY19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzUsIDEyOCwgMTI4
LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEu
NWYgLyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBj
b2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xv
cig4MSwgIDkwLCAgMjQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3Qg
cHJvZHVjZSByZWQgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMTQ1LCA1NCwgIDM0LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0
cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChy
NjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNDEsICAyNDAsIDExMCwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAi
ci42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0
YXRpY19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMTAsIDE2LCAgMTQ2
LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEu
NWYgLyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cg
Y29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29s
b3IoMTA2LCAyMDIsIDIyMiwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29s
b3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFWaWRlb01h
dHJpeCAqIEdMZmxvYXRDb2xvcigxNzAsIDE2NiwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlF
cXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4sICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCB2aWRl
byBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAgICBzdGF0aWNfYXNz
ZXJ0KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigwLCAgIDEyOCwgMTI4LCAyNTUpKS5p
c0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUu
ZiksICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7Cisg
ICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgs
IDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwg
ICAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0
ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENv
bG9yKDc2LCAgODUsICAyNTUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENv
bG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgcmVkIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMTUwLCA0NCwgIDIxLCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRy
aXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2
MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI5LCAgMjU1LCAxMDcsIDI1NSkpLmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIu
NjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRp
Y19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIyNiwgMCwgICAxNDksIDI1
NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAv
IDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9y
Iik7CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMTA1
LCAyMTIsIDIzNSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpt
YWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBH
TGZsb2F0Q29sb3IoMTc5LCAxNzEsIDEsICAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXgg
ZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAgICAvLyBNYXRyaWNlcyBhcmUgZGVy
aXZlZCBmcm9tIHRoZSBjb21wb25lbnRzIGluIHRoZSBJVFUgUi43MDkgcmV2IDIgc3BlY2lmaWNh
dGlvbgorICAgIC8vIGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVjL1ItUkVDLUJULjcwOS0yLTE5OTUx
MC1TCisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCByNzA5VmlkZW9NYXRyaXggeyBQ
aXhlbFJhbmdlOjpWaWRlbywgMC4wNzIyLCAwLjIxMjYgfTsKKyAgICBjb25zdGV4cHIgc3RhdGlj
IFlDYkNyTWF0cml4IHI3MDlGdWxsTWF0cml4IHsgUGl4ZWxSYW5nZTo6RnVsbCwgMC4wNzIyLCAw
LjIxMjYgfTsKKworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRD
b2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRD
b2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBu
b3QgcHJvZHVjZSBibGFjayBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01h
dHJpeCAqIEdMZmxvYXRDb2xvcigyMzUsIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlF
cXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRl
byBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3Nl
cnQoKHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcig2MywgIDEwMiwgMjQwLCAyNTUpKS5p
c0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUu
ZiksICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSByZWQgY29sb3IiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTczLCA0Miwg
IDI2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwg
ICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3Jl
ZW4gY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0
Q29sb3IoMzIsICAyNDAsIDExOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0
Q29sb3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMg
bm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01h
dHJpeCAqIEdMZmxvYXRDb2xvcigyMTksIDE2LCAgMTM4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlF
cXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRl
byBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNzgsICAyMTQsIDIzMCwgMjU1KSku
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1
LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIp
OworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxODgs
IDE1NCwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5
YW4sICAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSBjeWFuIGNvbG9yIik7CisKKyAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdM
ZmxvYXRDb2xvcigwLCAgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdM
ZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJpeCBk
b2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjcwOUZ1
bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0
ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAici43MDkg
ZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19h
c3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDU0LCAgOTksICAyNTYsIDI1NSkp
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1
NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7Cisg
ICAgc3RhdGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMTgyLCAzMCwg
IDEyLCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwg
ICAxLjVmIC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVl
biBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENv
bG9yKDE4LCAgMjU2LCAxMTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENv
bG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4
ICogR0xmbG9hdENvbG9yKDIzNywgMSwgICAxNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFs
VG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0
cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgo
cjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoNzMsICAyMjYsIDI0NCwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAi
ci43MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAg
c3RhdGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjAxLCAxNTcsIDEs
ICAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAx
LjVmIC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNv
bG9yIik7CisKKyAgICAvLyBNYXRyaWNlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnRz
IGluIHRoZSBJVFUtUiBCVC4yMDIwLTIgc3BlY2lmaWNhdGlvbgorICAgIC8vIGh0dHBzOi8vd3d3
Lml0dS5pbnQvcmVjL1ItUkVDLUJULjIwMjAKKyAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0
cml4IGJ0MjAyMFZpZGVvTWF0cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMDU5MywgMC4yNjI3
IH07CisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCBidDIwMjBGdWxsTWF0cml4IHsg
UGl4ZWxSYW5nZTo6RnVsbCwgMC4wNTkzLCAwLjI2MjcgfTsKKworICAgIHN0YXRpY19hc3NlcnQo
KGJ0MjAyMFZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE2LCAgMTI4LCAxMjgsIDI1NSkpLmlz
QXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6YmxhY2ssICAgMS41ZiAvIDI1NS5m
KSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmxhY2sgY29sb3IiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzUs
IDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6Ondo
aXRlLCAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9k
dWNlIHdoaXRlIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXgg
KiBHTGZsb2F0Q29sb3IoNzQsICA5NywgIDI0MCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBt
YXRyaXggZG9lcyBub3QgcHJvZHVjZSByZWQgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChi
dDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNjQsIDQ3LCAgMjUsICAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiks
ICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7Cisg
ICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjksICAy
NDAsIDExOSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVl
LCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSBibHVlIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBH
TGZsb2F0Q29sb3IoMjIyLCAxNiwgIDEzNywgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjp5ZWxsb3csICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRy
aXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChi
dDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcig4NywgIDIwOSwgMjMxLCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6Om1hZ2VudGEsIDEuNWYgLyAyNTUuZiks
ICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNzcs
IDE1OSwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5
YW4sICAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9k
dWNlIGN5YW4gY29sb3IiKTsKKworICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1bGxNYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCBmdWxsIG1h
dHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgo
YnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyNTUsIDEyOCwgMTI4LCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEuNWYgLyAyNTUuZiks
ICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDY3LCAgOTIs
ICAyNTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6cmVkLCAg
ICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBy
ZWQgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9h
dENvbG9yKDE3MywgMzYsICAxMSwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9h
dENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9l
cyBub3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1
bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMTUsICAyNTYsIDExOCwgMjU1KSkuaXNBcHByb3hpbWF0
ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAy
MCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI0MCwgMCwgICAxMzgsIDI1
NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAv
IDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29s
b3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9y
KDgyLCAgMjIwLCAyNDUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9y
czo6bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3Qg
cHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1h
dHJpeCAqIEdMZmxvYXRDb2xvcigxODgsIDE2NCwgMSwgICAyNTUpKS5pc0FwcHJveGltYXRlbHlF
cXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4sICAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1
bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOworCisgICAgLy8gTWF0cmlj
ZXMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgY29tcG9uZW50cyBpbiB0aGUgU01QVEUgMjQwTS0xOTk5
IHNwZWNpZmljYXRpb24KKyAgICAvLyBodHRwOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVu
dC83MjkxNDYxLworICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggc21wdGUyNDBNVmlk
ZW9NYXRyaXggeyBQaXhlbFJhbmdlOjpWaWRlbywgMC4wODcsIDAuMjEyIH07CisgICAgY29uc3Rl
eHByIHN0YXRpYyBZQ2JDck1hdHJpeCBzbXB0ZTI0ME1GdWxsTWF0cml4IHsgUGl4ZWxSYW5nZTo6
RnVsbCwgMC4wODcsIDAuMjEyIH07CisKKyAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRl
b01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRl
bHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAy
NDBNIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3Rh
dGljX2Fzc2VydCgoc21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgs
IDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwg
ICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSB3aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4
ICogR0xmbG9hdENvbG9yKDYyLCAgMTAyLCAyNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFs
VG8oR0xmbG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlk
ZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2Vy
dCgoc21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTcwLCA0MiwgIDI4LCAgMjU1
KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8g
MjU1LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBj
b2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9h
dENvbG9yKDM1LCAgMjQwLCAxMTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9h
dENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRl
MjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDIxNiwgMTYsICAxNDAsIDI1NSkpLmlzQXBw
cm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwg
IlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7
CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3Io
ODEsICAyMTQsIDIyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3Jz
OjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBu
b3QgcHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBN
VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTg5LCAxNTQsIDE2LCAgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAiU01Q
VEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAg
ICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1GdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDAsICAg
MTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymxh
Y2ssICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJv
ZHVjZSBibGFjayBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRy
aXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBm
dWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHdoaXRlIGNvbG9yIik7CisgICAgc3RhdGljX2Fz
c2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig1NCwgIDk4LCAgMjU2LCAy
NTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYg
LyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNv
bG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRD
b2xvcigxNzksIDMwLCAgMTUsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRD
b2xvcnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRv
ZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0
ME1GdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIyLCAgMjU2LCAxMTQsIDI1NSkpLmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgIlNN
UFRFIDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibHVlIGNvbG9yIik7CisgICAg
c3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzMsIDEs
ICAgMTQyLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxv
dywgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1
Y2UgeWVsbG93IGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJp
eCAqIEdMZmxvYXRDb2xvcig3NiwgIDIyNiwgMjQxLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVh
bFRvKEdMZmxvYXRDb2xvcnM6Om1hZ2VudGEsIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1
bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOworICAgIHN0YXRpY19h
c3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjAxLCAxNTgsIDEsICAg
MjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVm
IC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGN5YW4g
Y29sb3IiKTsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgbWF0
cmljZXMuZ2V0KCkuZW1wbGFjZShNYXBLZXkoUGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVu
Y3Rpb25DVjo6a0lUVV9SXzYwMV80KSwgcjYwMVZpZGVvTWF0cml4KTsKKyAgICAgICAgbWF0cmlj
ZXMuZ2V0KCkuZW1wbGFjZShNYXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlv
bkNWOjprSVRVX1JfNjAxXzQpLCByNjAxRnVsbE1hdHJpeCk7CisgICAgICAgIG1hdHJpY2VzLmdl
dCgpLmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OlZpZGVvLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6
OmtJVFVfUl83MDlfMiksIHI3MDlWaWRlb01hdHJpeCk7CisgICAgICAgIG1hdHJpY2VzLmdldCgp
LmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lU
VV9SXzcwOV8yKSwgcjcwOUZ1bGxNYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBs
YWNlKE1hcEtleShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjprSVRVX1Jf
MjAyMCksIGJ0MjAyMFZpZGVvTWF0cml4KTsKKyAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFj
ZShNYXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlvbkNWOjprSVRVX1JfMjAy
MCksIGJ0MjAyMEZ1bGxNYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBsYWNlKE1h
cEtleShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjprU01QVEVfMjQwTV8x
OTk1KSwgc21wdGUyNDBNVmlkZW9NYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBs
YWNlKE1hcEtleShQaXhlbFJhbmdlOjpGdWxsLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtTTVBURV8y
NDBNXzE5OTUpLCBzbXB0ZTI0ME1GdWxsTWF0cml4KTsKKyAgICB9KTsKKworICAgIC8vIFdlIHNo
b3VsZCBuZXZlciBiZSBhc2tlZCB0byBoYW5kbGUgYSBQaXhlbCBGb3JtYXQgd2hvc2UgcmFuZ2Ug
dmFsdWUgaXMgdW5rbm93bi4KKyAgICBBU1NFUlQocmFuZ2UgIT0gUGl4ZWxSYW5nZTo6VW5rbm93
bik7CisgICAgaWYgKHJhbmdlID09IFBpeGVsUmFuZ2U6OlVua25vd24pCisgICAgICAgIHJhbmdl
ID0gUGl4ZWxSYW5nZTo6RnVsbDsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtYXRyaWNlcy5nZXQo
KS5maW5kKHtyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbn0pOworCisgICAgLy8gQXNzdW1lIHVua25v
d24gdHJhbnNmZXIgZnVuY3Rpb25zIGFyZSByLjYwMToKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWF0
cmljZXMuZ2V0KCkuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yID0gbWF0cmljZXMuZ2V0KCkuZmlu
ZCh7cmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzYwMV80fSk7CisKKyAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbWF0cmljZXMuZ2V0KCkuZW5kKCkpOworICAgIHJldHVybiBpdGVyYXRv
ci0+c2Vjb25kOworfQorCitHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OkdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKGNvbnRleHQpKQorICAg
ICwgbV9mcmFtZWJ1ZmZlcihtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCit7Cit9CisK
K0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRSgpCit7
CisgICAgaWYgKG1feXV2VmVydGV4QnVmZmVyKQorICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1
ZmZlcihtX3l1dlZlcnRleEJ1ZmZlcik7CisgICAgaWYgKG1feXV2UHJvZ3JhbSkKKyAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CisgICAgbV9jb250ZXh0LT5k
ZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKK3sKKyAgICBjb25zdCBi
b29sIHVzZVRleHR1cmUyRCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0
dXJlVGFyZ2V0KCkgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQ7CisKKyAgICBQbGF0
Zm9ybUdMT2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdyYXBo
aWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVSKTsKKyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAg
ICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHNfeXV2VmVydGV4U2hh
ZGVyVGV4dHVyZTJEKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNl
KHZlcnRleFNoYWRlciwgc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlKTsKKworICAg
IG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOworCisgICAgR0NH
TGludCBzdGF0dXMgPSAwOworICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVy
LCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIGlmICgh
c3RhdHVzKSB7CisgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6
aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8g
Y29tcGlsZS4iLCB0aGlzKTsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4
U2hhZGVyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFBsYXRmb3JtR0xP
YmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKTsKKyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAgICAg
ICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgc195dXZGcmFnbWVudFNo
YWRlclRleHR1cmUyRCk7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJj
ZShmcmFnbWVudFNoYWRlciwgc195dXZGcmFnbWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOwor
CisgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKKwor
ICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4
dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAgICAg
ICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250
ZXh0T2JqZWN0cyglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhp
cyk7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIG1feXV2UHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRl
UHJvZ3JhbSgpOworICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgdmVy
dGV4U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3l1dlByb2dyYW0sIGZy
YWdtZW50U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1feXV2UHJvZ3JhbSk7
CisKKyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29u
dGV4dEdMOjpMSU5LX1NUQVRVUywgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAgICAg
ICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250
ZXh0T2JqZWN0cyglcCkgLSBQcm9ncmFtIGZhaWxlZCB0byBsaW5rLiIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShtX3l1dlByb2dyYW0pOworICAgICAgICBtX3l1dlByb2dyYW0gPSAwOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV95VGV4dHVyZVVuaWZvcm1Mb2NhdGlv
biA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwgInVfeVRleHR1
cmUiX3MpOworICAgIG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRV
bmlmb3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV91dlRleHR1cmUiX3MpOworICAgIG1fY29s
b3JNYXRyaXhVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3l1dlByb2dyYW0sICJ1X2NvbG9yTWF0cml4Il9zKTsKKyAgICBtX3l1dkZsaXBZVW5pZm9ybUxv
Y2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV9m
bGlwWSJfcyk7CisgICAgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X3lUZXh0dXJlU2l6ZSJfcyk7Cisg
ICAgbV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24obV95dXZQcm9ncmFtLCAidV91dlRleHR1cmVTaXplIl9zKTsKKyAgICBtX3l1dlBv
c2l0aW9uQXR0cmlidXRlTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uRGly
ZWN0KG1feXV2UHJvZ3JhbSwgImFfcG9zaXRpb24iX3MpOworCisgICAgbV9jb250ZXh0LT5kZXRh
Y2hTaGFkZXIobV95dXZQcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGV0
YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgIG1fY29udGV4dC0+
ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpOworCisgICAgbV95dXZWZXJ0ZXhCdWZmZXIgPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGZsb2F0IHZlcnRpY2VzWzEyXSA9IHsgLTEsIC0xLCAxLCAtMSwg
MSwgMSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVy
KEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1feXV2VmVydGV4QnVmZmVyKTsKKyAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwg
c2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJB
Vyk7CisgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9u
QXR0cmlidXRlTG9jYXRpb24pOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlciht
X3l1dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VCwgZmFsc2UsIDAsIDApOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQqIEdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTo6YXR0YWNoSU9TdXJmYWNlVG9UZXh0dXJlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gdHlwZSwgSU9TdXJmYWNlUmVmIHN1cmZhY2UsIEdDR0x1aW50IHBsYW5l
KQoreworICAgIGF1dG8gZGlzcGxheSA9IG1fY29udGV4dC0+cGxhdGZvcm1EaXNwbGF5KCk7Cisg
ICAgRUdMaW50IGVnbFRleHR1cmVUYXJnZXQgPSAwOworCisgICAgaWYgKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCKQorICAgICAgICBlZ2xUZXh0dXJl
VGFyZ2V0ID0gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOworICAgIGVsc2UgaWYgKHRhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCkKKyAgICAgICAgZWdsVGV4dHVyZVRh
cmdldCA9IEVHTF9URVhUVVJFXzJEOworICAgIGVsc2UgeworICAgICAgICBMT0coV2ViR0wsICJV
bmtub3duIHRleHR1cmUgdGFyZ2V0ICVkLiIsIHN0YXRpY19jYXN0PGludD4odGFyZ2V0KSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoZWdsVGV4dHVyZVRhcmdldCAh
PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpKSB7
CisgICAgICAgIExPRyhXZWJHTCwgIk1pc21hdGNoIGluIEVHTCB0ZXh0dXJlIHRhcmdldCAlZC4i
LCBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBjb25zdCBFR0xpbnQgc3VyZmFjZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAg
RUdMX1dJRFRILCB3aWR0aCwKKyAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAorICAgICAgICBF
R0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KHBsYW5lKSwKKyAg
ICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGVnbFRleHR1cmVU
YXJnZXQpLAorICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIHN0YXRp
Y19jYXN0PEVHTGludD4oaW50ZXJuYWxGb3JtYXQpLAorICAgICAgICBFR0xfVEVYVFVSRV9GT1JN
QVQsIEVHTF9URVhUVVJFX1JHQkEsCisgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsIHN0
YXRpY19jYXN0PEVHTGludD4odHlwZSksCisgICAgICAgIC8vIE9ubHkgaGFzIGFuIGVmZmVjdCBv
biB0aGUgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgRUdMX0lPU1VSRkFDRV9VU0FHRV9ISU5UX0FO
R0xFLCBFR0xfSU9TVVJGQUNFX1JFQURfSElOVF9BTkdMRSwKKyAgICAgICAgRUdMX05PTkUsIEVH
TF9OT05FCisgICAgfTsKKyAgICBFR0xTdXJmYWNlIHBidWZmZXIgPSBFR0xfQ3JlYXRlUGJ1ZmZl
ckZyb21DbGllbnRCdWZmZXIoZGlzcGxheSwgRUdMX0lPU1VSRkFDRV9BTkdMRSwgc3VyZmFjZSwg
bV9jb250ZXh0LT5wbGF0Zm9ybUNvbmZpZygpLCBzdXJmYWNlQXR0cmlidXRlcyk7CisgICAgaWYg
KCFwYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIUVHTF9CaW5kVGV4
SW1hZ2UoZGlzcGxheSwgcGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKSkgeworICAgICAgICBFR0xf
RGVzdHJveVN1cmZhY2UoZGlzcGxheSwgcGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICByZXR1cm4gcGJ1ZmZlcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEU6OmRldGFjaElPU3VyZmFjZUZyb21UZXh0dXJlKHZvaWQqIGhhbmRsZSkKK3sKKyAg
ICBhdXRvIGRpc3BsYXkgPSBtX2NvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOworICAgIEVHTF9S
ZWxlYXNlVGV4SW1hZ2UoZGlzcGxheSwgaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEVH
TF9EZXN0cm95U3VyZmFjZShkaXNwbGF5LCBoYW5kbGUpOworfQorCitib29sIEdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYg
aW1hZ2UsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgRmxp
cFkgZmxpcFkpCit7CisgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMg
JzQyMHYnIGFuZCAnNDIwZicgcGl4ZWwgZm9ybWF0cy4gSW52ZXN0aWdhdGUgc3VwcG9ydGluZyBt
b3JlIHBpeGVsIGZvcm1hdHMuCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0ID0gQ1ZQaXhlbEJ1ZmZl
ckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZSk7CisgICAgaWYgKHBpeGVsRm9ybWF0ICE9IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlICYmIHBpeGVsRm9ybWF0
ICE9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpIHsKKyAg
ICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gQXNrZWQgdG8gY29weSBhbiB1bnN1cHBvcnRlZCBw
aXhlbCBmb3JtYXQgKCclcycpLiIsIHRoaXMsIEZvdXJDQyhwaXhlbEZvcm1hdCkudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBJT1N1
cmZhY2VSZWYgc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2UpOworICAg
IGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdTdXJm
YWNlU2VlZCA9IElPU3VyZmFjZUdldFNlZWQoc3VyZmFjZSk7CisgICAgaWYgKGZsaXBZID09IG1f
bGFzdEZsaXBZCisgICAgICAgICYmIHN1cmZhY2UgPT0gbV9sYXN0U3VyZmFjZSAKKyAgICAgICAg
JiYgbmV3U3VyZmFjZVNlZWQgPT0gbV9sYXN0U3VyZmFjZVNlZWQKKyAgICAgICAgJiYgbGFzdFRl
eHR1cmVTZWVkKG91dHB1dFRleHR1cmUpID09IG1fY29udGV4dC0+dGV4dHVyZVNlZWQob3V0cHV0
VGV4dHVyZSkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgaGFzbid0IGJlZW4gbW9kaWZp
ZWQgc2luY2UgdGhlIGxhc3QgdGltZSB3ZSBjb3BpZWQgdG8gaXQsIGFuZCB0aGUKKyAgICAgICAg
Ly8gaW1hZ2UgaGFzbid0IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMg
Y29waWVkLCB0aGlzIGlzIGEgbm8tb3AuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmICghbV95dXZQcm9ncmFtKSB7CisgICAgICAgIGlmICghaW5pdGlhbGl6ZVVWQ29udGV4
dE9iamVjdHMoKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xD
VkFOR0xFOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gVW5hYmxlIHRv
IGluaXRpYWxpemUgT3BlbkdMIGNvbnRleHQgb2JqZWN0cy4iLCB0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaXplX3Qgd2lkdGggPSBDVlBp
eGVsQnVmZmVyR2V0V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVm
ZmVyR2V0SGVpZ2h0KGltYWdlKTsKKworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBB
bGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBvdXRwdXQgdGV4dHVyZS4KKyAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlKTsK
KyAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4
dEdMOjpMSU5FQVIpOworICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CisgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VE
R0UpOworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3Jt
YXQsIHR5cGUsIG51bGxwdHIpOworCisgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIG91dHB1dFRleHR1
cmUsIGxldmVsKTsKKyAgICBHQ0dMZW51bSBzdGF0dXMgPSBtX2NvbnRleHQtPmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSKTsKKyAgICBpZiAoc3Rh
dHVzICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAg
ICBMT0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSglcCkgLSBVbmFibGUgdG8gY3JlYXRlIGZyYW1lYnVmZmVyIGZvciBv
dXRwdXRUZXh0dXJlLiIsIHRoaXMpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIDAp
OworCisgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CisgICAgbV9jb250
ZXh0LT52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8vIEJpbmQgYW5kIHNl
dCB1cCB0aGUgdGV4dHVyZXMgZm9yIHRoZSB2aWRlbyBzb3VyY2UuCisgICAgYXV0byB5UGxhbmVX
aWR0aCA9IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShzdXJmYWNlLCAwKTsKKyAgICBhdXRvIHlQ
bGFuZUhlaWdodCA9IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoc3VyZmFjZSwgMCk7CisgICAg
YXV0byB1dlBsYW5lV2lkdGggPSBJT1N1cmZhY2VHZXRXaWR0aE9mUGxhbmUoc3VyZmFjZSwgMSk7
CisgICAgYXV0byB1dlBsYW5lSGVpZ2h0ID0gSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQbGFuZShzdXJm
YWNlLCAxKTsKKworICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CisKKyAgICBhdXRvIHV2VGV4
dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgIG1fY29udGV4dC0+YWN0aXZl
VGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTEpOworICAgIG1fY29udGV4dC0+Ymlu
ZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB1dlRleHR1cmUpOworICAgIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOworICAgIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOworICAgIG1fY29u
dGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOworICAg
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0Up
OworICAgIGF1dG8gdXZIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9UZXh0
dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwgdXZQbGFuZUhl
aWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDEpOworICAg
IGlmICghdXZIYW5kbGUpIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4
dHVyZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIHlUZXh0dXJl
ID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFMCk7CisgICAgbV9jb250ZXh0LT5iaW5kVGV4
dHVyZSh2aWRlb1RleHR1cmVUYXJnZXQsIHlUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9N
QUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAg
ICBhdXRvIHlIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9UZXh0dXJlVGFy
Z2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkVELCB5UGxhbmVXaWR0aCwgeVBsYW5lSGVpZ2h0LCBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFjZSwgMCk7CisgICAgaWYgKCF5
SGFuZGxlKSB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7Cisg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ29uZmlndXJlIHRoZSBkcmF3aW5nIHBhcmFtZXRl
cnMuCisgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV95VGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwg
MCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV91dlRleHR1cmVVbmlmb3JtTG9jYXRpb24s
IDEpOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24s
IGZsaXBZID09IEZsaXBZOjpZZXMgPyAxIDogMCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMmYo
bV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24sIHlQbGFuZVdpZHRoLCB5UGxhbmVIZWlnaHQp
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdXZUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlv
biwgdXZQbGFuZVdpZHRoLCB1dlBsYW5lSGVpZ2h0KTsKKworICAgIGF1dG8gcmFuZ2UgPSBwaXhl
bFJhbmdlRnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKKyAgICBhdXRvIHRyYW5zZmVyRnVu
Y3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJH
ZXRBdHRhY2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsK
KyAgICBhdXRvJiBjb2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5z
ZmVyRnVuY3Rpb24ocmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDRmdihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwg
Y29sb3JNYXRyaXguZGF0YSgpKTsKKworICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KKyAg
ICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwg
Nik7CisKKyAgICAvLyBDbGVhbi11cC4KKyAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoeVRl
eHR1cmUpOworICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOworICAgIGRl
dGFjaElPU3VyZmFjZUZyb21UZXh0dXJlKHlIYW5kbGUpOworICAgIGRldGFjaElPU3VyZmFjZUZy
b21UZXh0dXJlKHV2SGFuZGxlKTsKKworICAgIG1fbGFzdFN1cmZhY2UgPSBzdXJmYWNlOworICAg
IG1fbGFzdFN1cmZhY2VTZWVkID0gbmV3U3VyZmFjZVNlZWQ7CisgICAgbV9sYXN0VGV4dHVyZVNl
ZWQuc2V0KG91dHB1dFRleHR1cmUsIG1fY29udGV4dC0+dGV4dHVyZVNlZWQob3V0cHV0VGV4dHVy
ZSkpOworICAgIG1fbGFzdEZsaXBZID0gZmxpcFk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1N2M1
ZWRlZTNkNTRlYWEzMGEwYmYyOTU5ZjYzNzQ4ZDQ3YmVkMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCisKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgiCisKKyNpbXBvcnQgPHd0Zi9VbnNhZmVQb2ludGVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gR3JhcGhpY3NDb250ZXh0R0xDViBpbXBsZW1lbnRh
dGlvbiBmb3IgQU5HTEUgZmxhdm91ciBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KK2NsYXNz
IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRH
TENWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFKCkgZmluYWw7CisKKyAgICBib29sIGNvcHlQaXhlbEJ1ZmZlclRv
VGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmLCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEZsaXBZKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBib29sIGluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKCk7CisKKyAgICB1bnNpZ25lZCBsYXN0VGV4dHVyZVNlZWQo
R0NHTHVpbnQgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2Vl
ZC5nZXQodGV4dHVyZSk7CisgICAgfQorCisgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwg
aWYgbm9uLW51bGwsIG11c3QgYmUgcmVsZWFzZWQgdmlhIHRoZQorICAgIC8vIGRldGFjaCBjYWxs
IGJlbG93LgorICAgIHZvaWQqIGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOworICAg
IHZvaWQgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUodm9pZCogaGFuZGxlKTsKKworICAgIFJl
ZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworCisgICAgUGxhdGZvcm1HTE9i
amVjdCBtX2ZyYW1lYnVmZmVyIHsgMCB9OworICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZQcm9n
cmFtIHsgMCB9OworICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZWZXJ0ZXhCdWZmZXIgeyAwIH07
CisgICAgR0NHTGludCBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKKyAgICBHQ0dM
aW50IG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKKyAgICBHQ0dMaW50IG1feXV2
RmxpcFlVbmlmb3JtTG9jYXRpb24geyAtMSB9OworICAgIEdDR0xpbnQgbV9jb2xvck1hdHJpeFVu
aWZvcm1Mb2NhdGlvbiB7IC0xIH07CisgICAgR0NHTGludCBtX3l1dlBvc2l0aW9uQXR0cmlidXRl
TG9jYXRpb24geyAtMSB9OworICAgIEdDR0xpbnQgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRp
b24geyAtMSB9OworICAgIEdDR0xpbnQgbV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uIHsg
LTEgfTsKKworICAgIEZsaXBZIG1fbGFzdEZsaXBZIHsgRmxpcFk6Ok5vIH07CisgICAgVW5zYWZl
UG9pbnRlcjxJT1N1cmZhY2VSZWY+IG1fbGFzdFN1cmZhY2U7CisgICAgdWludDMyX3QgbV9sYXN0
U3VyZmFjZVNlZWQgeyAwIH07CisKKyAgICB1c2luZyBUZXh0dXJlU2VlZE1hcCA9IEhhc2hNYXA8
R0NHTHVpbnQsIHVuc2lnbmVkLCBXVEY6OkludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj47CisgICAgVGV4dHVyZVNlZWRNYXAgbV9s
YXN0VGV4dHVyZVNlZWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjYyNTJhZWUyMmYxZWQxZWVlNjlkMDVm
Y2RiNzJkZmY4YzQzMjRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNv
cGllckNWLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWaWRlb1RleHR1cmVDb3BpZXJDVi5oIgot
Ci0jaW5jbHVkZSAiRm91ckNDLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHBh
bC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotCi0jZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAwCi0jaW5jbHVkZSA8QU5H
TEUvZWdsLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZWdsZXh0Lmg+Ci0jaW5jbHVkZSA8QU5HTEUvZWds
ZXh0X2FuZ2xlLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZW50cnlfcG9pbnRzX2VnbC5oPgotI2luY2x1
ZGUgPEFOR0xFL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmg+Ci0vLyBTa2lwIHRoZSBp
bmNsdXNpb24gb2YgQU5HTEUncyBleHBsaWNpdCBjb250ZXh0IGVudHJ5IHBvaW50cyBmb3Igbm93
LgotI2RlZmluZSBHTF9BTkdMRV9leHBsaWNpdF9jb250ZXh0Ci0jaW5jbHVkZSA8QU5HTEUvZ2wy
ZXh0Lmg+Ci0jaW5jbHVkZSA8QU5HTEUvZ2wyZXh0X2FuZ2xlLmg+Ci0KLSNpbmNsdWRlICJDb3Jl
VmlkZW9Tb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdGV4
cHIgYXV0byBzX3JnYlZlcnRleFNoYWRlciB7Ci0gICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247IgotICAgICJ1bmlmb3JtIGludCB1X2ZsaXBZOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4
dHVyZVBvc2l0aW9uOyIKLSAgICAidm9pZCBtYWluKCkiCi0gICAgInsiCi0gICAgIiAgICB2X3Rl
eHR1cmVQb3NpdGlvbiA9IHZlYzIoKGFfcG9zaXRpb24ueCArIDEuMCkgLyAyLjAsIChhX3Bvc2l0
aW9uLnkgKyAxLjApIC8gMi4wKTsiCi0gICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKLSAgICAi
ICAgICAgICB2X3RleHR1cmVQb3NpdGlvbi55ID0gMS4wIC0gdl90ZXh0dXJlUG9zaXRpb24ueTsi
Ci0gICAgIiAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IgotICAgICJ9Il9zCi19OwotCi1z
dGF0aWMgY29uc3RleHByIGF1dG8gc19yZ2JGcmFnbWVudFNoYWRlclRleHR1cmUyRCB7Ci0gICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0
dXJlOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOyIKLSAgICAidW5pZm9y
bSBpbnQgdV9wcmVtdWx0aXBseTsiCi0gICAgInVuaWZvcm0gdmVjMiB1X3RleHR1cmVEaW1lbnNp
b25zOyIKLSAgICAidW5pZm9ybSBpbnQgdV9zd2FwQ29sb3JDaGFubmVsczsiCi0gICAgInZvaWQg
bWFpbigpIgotICAgICJ7IgotICAgICIgICAgdmVjMiB0ZXhQb3MgPSB2ZWMyKHZfdGV4dHVyZVBv
c2l0aW9uLnggKiB1X3RleHR1cmVEaW1lbnNpb25zLngsIHZfdGV4dHVyZVBvc2l0aW9uLnkgKiB1
X3RleHR1cmVEaW1lbnNpb25zLnkpOyIKLSAgICAiICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkQo
dV90ZXh0dXJlLCB0ZXhQb3MpOyIKLSAgICAiICAgIGlmICh1X3N3YXBDb2xvckNoYW5uZWxzID09
IDEpIgotICAgICIgICAgICAgIGNvbG9yLnJnYmEgPSBjb2xvci5iZ3JhOyIKLSAgICAiICAgIGlm
ICh1X3ByZW11bHRpcGx5ID09IDEpIgotICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
Y29sb3IuciAqIGNvbG9yLmEsIGNvbG9yLmcgKiBjb2xvci5hLCBjb2xvci5iICogY29sb3IuYSwg
Y29sb3IuYSk7IgotICAgICIgICAgZWxzZSIKLSAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSBj
b2xvcjsiCi0gICAgIn0iX3MKLX07Ci0KLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3JnYkZyYWdt
ZW50U2hhZGVyVGV4dHVyZVJlY3RhbmdsZSB7Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OyIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHVfdGV4dHVyZTsiCi0gICAgInZhcnlpbmcg
dmVjMiB2X3RleHR1cmVQb3NpdGlvbjsiCi0gICAgInVuaWZvcm0gaW50IHVfcHJlbXVsdGlwbHk7
IgotICAgICJ1bmlmb3JtIHZlYzIgdV90ZXh0dXJlRGltZW5zaW9uczsiCi0gICAgInVuaWZvcm0g
aW50IHVfc3dhcENvbG9yQ2hhbm5lbHM7IgotICAgICJ2b2lkIG1haW4oKSIKLSAgICAieyIKLSAg
ICAiICAgIHZlYzIgdGV4UG9zID0gdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICogdV90ZXh0dXJl
RGltZW5zaW9ucy54LCB2X3RleHR1cmVQb3NpdGlvbi55ICogdV90ZXh0dXJlRGltZW5zaW9ucy55
KTsiCi0gICAgIiAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdCh1X3RleHR1cmUsIHRleFBv
cyk7IgotICAgICIgICAgaWYgKHVfc3dhcENvbG9yQ2hhbm5lbHMgPT0gMSkiCi0gICAgIiAgICAg
ICAgY29sb3IucmdiYSA9IGNvbG9yLmJncmE7IgotICAgICIgICAgaWYgKHVfcHJlbXVsdGlwbHkg
PT0gMSkiCi0gICAgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yICogY29sb3Iu
YSwgY29sb3IuZyAqIGNvbG9yLmEsIGNvbG9yLmIgKiBjb2xvci5hLCBjb2xvci5hKTsiCi0gICAg
IiAgICBlbHNlIgotICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOyIKLSAgICAifSJf
cwotfTsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNfeXV2VmVydGV4U2hhZGVyVGV4dHVyZTJE
IHsKLSAgICAiYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsiCi0gICAgInVuaWZvcm0gdmVjMiB1
X3lUZXh0dXJlU2l6ZTsiCi0gICAgInVuaWZvcm0gdmVjMiB1X3V2VGV4dHVyZVNpemU7IgotICAg
ICJ1bmlmb3JtIGludCB1X2ZsaXBZOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29y
ZGluYXRlOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCi0gICAg
InZvaWQgbWFpbigpIgotICAgICJ7IgotICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9z
aXRpb24sIDAsIDEuMCk7IgotICAgICIgICAgdmVjMiBub3JtYWxpemVkUG9zaXRpb24gPSBhX3Bv
c2l0aW9uICogLjUgKyAuNTsiCi0gICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKLSAgICAiICAg
ICAgICBub3JtYWxpemVkUG9zaXRpb24ueSA9IDEuMCAtIG5vcm1hbGl6ZWRQb3NpdGlvbi55OyIK
LSAgICAiICAgIHZfeVRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKLSAg
ICAiICAgIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbjsiCi0gICAg
In0iX3MKLX07Ci0KLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3l1dlZlcnRleFNoYWRlclRleHR1
cmVSZWN0YW5nbGUgewotICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyIKLSAgICAidW5p
Zm9ybSB2ZWMyIHVfeVRleHR1cmVTaXplOyIKLSAgICAidW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJl
U2l6ZTsiCi0gICAgInVuaWZvcm0gaW50IHVfZmxpcFk7IgotICAgICJ2YXJ5aW5nIHZlYzIgdl95
VGV4dHVyZUNvb3JkaW5hdGU7IgotICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGlu
YXRlOyIKLSAgICAidm9pZCBtYWluKCkiCi0gICAgInsiCi0gICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoYV9wb3NpdGlvbiwgMCwgMS4wKTsiCi0gICAgIiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3Np
dGlvbiA9IGFfcG9zaXRpb24gKiAuNSArIC41OyIKLSAgICAiICAgIGlmICh1X2ZsaXBZID09IDEp
IgotICAgICIgICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBv
c2l0aW9uLnk7IgotICAgICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9z
aXRpb24gKiB1X3lUZXh0dXJlU2l6ZTsiCi0gICAgIiAgICB2X3V2VGV4dHVyZUNvb3JkaW5hdGUg
PSBub3JtYWxpemVkUG9zaXRpb24gKiB1X3V2VGV4dHVyZVNpemU7IgotICAgICJ9Il9zCi19Owot
Ci1jb25zdGV4cHIgYXV0byBzX3l1dkZyYWdtZW50U2hhZGVyVGV4dHVyZTJEIHsKLSAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7IgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3lUZXh0dXJl
OyIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV91dlRleHR1cmU7IgotICAgICJ1bmlmb3JtIG1h
dDQgdV9jb2xvck1hdHJpeDsiCi0gICAgInZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0
ZTsiCi0gICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7IgotICAgICJ2b2lk
IG1haW4oKSIKLSAgICAieyIKLSAgICAiICAgIHZlYzQgeXV2OyIKLSAgICAiICAgIHl1di5yID0g
dGV4dHVyZTJEKHVfeVRleHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKLSAgICAiICAg
IHl1di5nYiA9IHRleHR1cmUyRCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29yZGluYXRlKS5y
ZzsiCi0gICAgIiAgICB5dXYuYSA9IDEuMDsiCi0gICAgIiAgICBnbF9GcmFnQ29sb3IgPSB5dXYg
KiB1X2NvbG9yTWF0cml4OyIKLSAgICAifSJfcwotfTsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlIHsKLSAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7IgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRFJlY3QgdV95VGV4dHVyZTsiCi0g
ICAgInVuaWZvcm0gc2FtcGxlcjJEUmVjdCB1X3V2VGV4dHVyZTsiCi0gICAgInVuaWZvcm0gbWF0
NCB1X2NvbG9yTWF0cml4OyIKLSAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRl
OyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCi0gICAgInZvaWQg
bWFpbigpIgotICAgICJ7IgotICAgICIgICAgdmVjNCB5dXY7IgotICAgICIgICAgeXV2LnIgPSB0
ZXh0dXJlMkRSZWN0KHVfeVRleHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKLSAgICAi
ICAgIHl1di5nYiA9IHRleHR1cmUyRFJlY3QodV91dlRleHR1cmUsIHZfdXZUZXh0dXJlQ29vcmRp
bmF0ZSkucmc7IgotICAgICIgICAgeXV2LmEgPSAxLjA7IgotICAgICIgICAgZ2xfRnJhZ0NvbG9y
ID0geXV2ICogdV9jb2xvck1hdHJpeDsiCi0gICAgIn0iX3MKLX07Ci0KLWVudW0gY2xhc3MgUGl4
ZWxSYW5nZSB7Ci0gICAgVW5rbm93biwKLSAgICBWaWRlbywKLSAgICBGdWxsLAotfTsKLQotZW51
bSBjbGFzcyBUcmFuc2ZlckZ1bmN0aW9uQ1YgewotICAgIFVua25vd24sCi0gICAga0lUVV9SXzcw
OV8yLAotICAgIGtJVFVfUl82MDFfNCwKLSAgICBrU01QVEVfMjQwTV8xOTk1LAotICAgIGtEQ0lf
UDMsCi0gICAga1AzX0Q2NSwKLSAgICBrSVRVX1JfMjAyMCwKLX07Ci0KLXN0YXRpYyBQaXhlbFJh
bmdlIHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQoT1NUeXBlIHBpeGVsRm9ybWF0KQotewotICAg
IHN3aXRjaCAocGl4ZWxGb3JtYXQpIHsKLSAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDQ0
QVlwQ2JDcjg6Ci0gICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0NEFZcENiQ3IxNjoKLSAg
ICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3JfNEFfOEJpUGxhbmFyOgotICAgIGNh
c2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U6Ci0gICAg
Y2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U6Ci0g
ICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U6
Ci0gICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0WXBDYkNyMTBCaVBsYW5hclZpZGVvUmFu
Z2U6Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdlOjpWaWRlbzsKLSAgICBjYXNlIGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyRnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZToKLSAgICBjYXNlIGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjJZcENiQ3I4RnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRU
eXBlX0FSR0IyMTAxMDEwTEVQYWNrZWQ6Ci0gICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIw
WXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZToKLSAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80
MjJZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBl
XzQ0NFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U6Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdl
OjpGdWxsOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdlOjpVbmtub3du
OwotICAgIH0KLX0KLQotc3RhdGljIFRyYW5zZmVyRnVuY3Rpb25DViB0cmFuc2ZlckZ1bmN0aW9u
RnJvbVN0cmluZyhDRlN0cmluZ1JlZiBzdHJpbmcpCi17Ci0gICAgaWYgKCFzdHJpbmcgfHwgQ0ZH
ZXRUeXBlSUQoc3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4g
VHJhbnNmZXJGdW5jdGlvbkNWOjpVbmtub3duOwotICAgIGlmIChDRkVxdWFsKHN0cmluZywga0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl83MDlfMikpCi0gICAgICAgIHJldHVybiBUcmFu
c2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl83MDlfMjsKLSAgICBpZiAoQ0ZFcXVhbChzdHJpbmcsIGtD
VkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQpKQotICAgICAgICByZXR1cm4gVHJh
bnNmZXJGdW5jdGlvbkNWOjprSVRVX1JfNjAxXzQ7Ci0gICAgaWYgKENGRXF1YWwoc3RyaW5nLCBr
Q1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NSkpCi0gICAgICAgIHJldHVy
biBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtTTVBURV8yNDBNXzE5OTU7Ci0gICAgaWYgKGNhbkxvYWRf
Q29yZVZpZGVvX2tDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzKCkgJiYgQ0ZFcXVhbChz
dHJpbmcsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzKSkKLSAgICAgICAgcmV0dXJu
IFRyYW5zZmVyRnVuY3Rpb25DVjo6a0RDSV9QMzsKLSAgICBpZiAoY2FuTG9hZF9Db3JlVmlkZW9f
a0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUoKSAmJiBDRkVxdWFsKHN0cmluZywga0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUpKQotICAgICAgICByZXR1cm4gVHJhbnNmZXJG
dW5jdGlvbkNWOjprUDNfRDY1OwotICAgIGlmIChjYW5Mb2FkX0NvcmVWaWRlb19rQ1ZJbWFnZUJ1
ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjAoKSAmJiBDRkVxdWFsKHN0cmluZywga0NWSW1hZ2VC
dWZmZXJZQ2JDck1hdHJpeF9JVFVfUl8yMDIwKSkKLSAgICAgICAgcmV0dXJuIFRyYW5zZmVyRnVu
Y3Rpb25DVjo6a0lUVV9SXzIwMjA7Ci0gICAgcmV0dXJuIFRyYW5zZmVyRnVuY3Rpb25DVjo6VW5r
bm93bjsKLX0KLQotc3RydWN0IEdMZmxvYXRDb2xvciB7Ci0gICAgdW5pb24gewotICAgICAgICBz
dHJ1Y3QgewotICAgICAgICAgICAgR0xmbG9hdCByOwotICAgICAgICAgICAgR0xmbG9hdCBnOwot
ICAgICAgICAgICAgR0xmbG9hdCBiOwotICAgICAgICB9IHJnYjsKLSAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIEdMZmxvYXQgeTsKLSAgICAgICAgICAgIEdMZmxvYXQgY2I7Ci0gICAgICAg
ICAgICBHTGZsb2F0IGNyOwotICAgICAgICB9IHljYmNyOwotICAgIH07Ci0KLSAgICBjb25zdGV4
cHIgR0xmbG9hdENvbG9yKEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIpCi0gICAgICAg
IDogcmdiIHsgciwgZywgYiB9Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBHTGZsb2F0
Q29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgR0xmbG9hdCBzY2FsZSkKLSAgICAgICAgOiByZ2Ig
eyByIC8gc2NhbGUsIGcgLyBzY2FsZSwgYiAvIHNjYWxlfQotICAgIHsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgY29uc3RleHByIEdMZmxvYXQgYWJzKEdMZmxvYXQgdmFsdWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gdmFsdWUgPj0gMCA/IHZhbHVlIDogLXZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0
ZXhwciBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgR0xmbG9hdENvbG9yJiBjb2xv
ciwgR0xmbG9hdCBtYXhEZWx0YSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhYnMocmdi
LnIgLSBjb2xvci5yZ2IucikgPCBhYnMobWF4RGVsdGEpCi0gICAgICAgICAgICAmJiBhYnMocmdi
LmcgLSBjb2xvci5yZ2IuZykgPCBhYnMobWF4RGVsdGEpCi0gICAgICAgICAgICAmJiBhYnMocmdi
LmIgLSBjb2xvci5yZ2IuYikgPCBhYnMobWF4RGVsdGEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBH
TGZsb2F0Q29sb3JzIHsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBibGFjayAg
IHswLCAwLCAwfTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciB3aGl0ZSAgIHsx
LCAxLCAxfTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciByZWQgICAgIHsxLCAw
LCAwfTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBncmVlbiAgIHswLCAxLCAw
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBibHVlICAgIHswLCAwLCAxfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBjeWFuICAgIHswLCAxLCAxfTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBtYWdlbnRhIHsxLCAwLCAxfTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciB5ZWxsb3cgIHsxLCAxLCAwfTsKLX07Ci0KLXN0
cnVjdCBZQ2JDck1hdHJpeCB7Ci0gICAgdW5pb24gewotICAgICAgICBHTGZsb2F0IHJvd3NbNF1b
NF07Ci0gICAgICAgIEdMZmxvYXQgZGF0YVsxNl07Ci0gICAgfTsKLQotICAgIGNvbnN0ZXhwciBZ
Q2JDck1hdHJpeChQaXhlbFJhbmdlLCBHTGZsb2F0IGNiQ29lZmZpY2llbnQsIEdMZmxvYXQgY3JD
b2VmZmljaWVudCk7Ci0KLSAgICBvcGVyYXRvciBWZWN0b3I8R0xmbG9hdD4oKSBjb25zdAotICAg
IHsKLSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFwcGVu
ZChkYXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7Ci0gICAgfQotCi0gICAgY29uc3Rl
eHByIEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikgY29uc3Q7Ci19
OwotCi1jb25zdGV4cHIgWUNiQ3JNYXRyaXg6OllDYkNyTWF0cml4KFBpeGVsUmFuZ2UgcmFuZ2Us
IEdMZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KQotICAgIDogcm93
cyB7IH0KLXsKLSAgICAvLyBUaGUgY29udmVyc2lvbiBmcm9tIFlDYkNyIC0+IFJHQiBnZW5lcmFs
bHkgdGFrZXMgdGhlIGZvcm06Ci0gICAgLy8gWSA9IEtyICogUiArIEtnICogRyArIEtiICogQgot
ICAgIC8vIENiID0gKEIgLSBZKSAvICgyICogKDEgLSBLYikpCi0gICAgLy8gQ3IgPSAoUiAtIFkp
IC8gKDIgKiAoMSAtIEtyKSkKLSAgICAvLyBXaGVyZSB0aGUgdmFsdWVzIG9mIEtiIGFuZCBLciBh
cmUgZGVmaW5lZCBpbiBhIHNwZWNpZmljYXRpb24gYW5kIEtnIGlzIGRlcml2ZWQgZnJvbTogS3Ig
KyBLZyArIEtiID0gMQotICAgIC8vCi0gICAgLy8gU29sdmluZyB0aGUgYWJvdmUgZXF1YXRpb25z
IGZvciBSLCBCLCBhbmQgRyBkZXJpdmVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgLy8gUiA9IFkgKyAo
MiAqICgxIC0gS3IpKSAqIENyCi0gICAgLy8gQiA9IFkgKyAoMiAqICgxIC0gS2IpKSAqIENiCi0g
ICAgLy8gRyA9IFkgLSAoMiAqICgxIC0gS2IpKSAqIChLYiAvIEtnKSAqIENiIC0gKCgxIC0gS3Ip
ICogMikgKiAoS3IgLyBLZykgKiBDcgotICAgIC8vCi0gICAgLy8gV2hlbiB0aGUgY29sb3IgdmFs
dWVzIGFyZSBWaWRlbyByYW5nZSwgWSBoYXMgYSByYW5nZSBvZiBbMTYsIDIzNV0gd2l0aCBhIHdp
ZHRoIG9mIDIxOSwgYW5kIENiICYgQ3IgaGF2ZQotICAgIC8vIGEgcmFuZ2Ugb2YgWzE2LCAyNDBd
IHdpdGggYSB3aWR0aCBvZiAyMjQuIFdoZW4gdGhlIGNvbG9yIHZhbHVlcyBhcmUgRnVsbCByYW5n
ZSwgWSwgQ2IsIGFuZCBDciBhbGwgaGF2ZQotICAgIC8vIGEgcmFuZ2Ugb2YgWzAsIDI1NV0gd2l0
aCBhIHdpZHRoIG9mIDI1Ni4KLQotICAgIEdMZmxvYXQgY2dDb2VmZmljaWVudCA9IDEgLSBjYkNv
ZWZmaWNpZW50IC0gY3JDb2VmZmljaWVudDsKLSAgICBHTGZsb2F0IHlTY2FsaW5nRmFjdG9yID0g
cmFuZ2UgPT0gUGl4ZWxSYW5nZTo6RnVsbCA/IDEuZiA6IDI1NS5mIC8gMjE5LmY7Ci0gICAgR0xm
bG9hdCBjYmNyU2NhbGluZ0ZhY3RvciA9IHJhbmdlID09IFBpeGVsUmFuZ2U6OkZ1bGwgPyAxLmYg
OiAyNTUuZiAvIDIyNC5mOwotCi0gICAgcm93c1swXVswXSA9IHlTY2FsaW5nRmFjdG9yOwotICAg
IHJvd3NbMF1bMV0gPSAwOwotICAgIHJvd3NbMF1bMl0gPSBjYmNyU2NhbGluZ0ZhY3RvciAqIDIg
KiAoMSAtIGNyQ29lZmZpY2llbnQpOwotICAgIHJvd3NbMF1bM10gPSAwOwotCi0gICAgcm93c1sx
XVswXSA9IHlTY2FsaW5nRmFjdG9yOwotICAgIHJvd3NbMV1bMV0gPSAtY2JjclNjYWxpbmdGYWN0
b3IgKiAyICogKDEgLSBjYkNvZWZmaWNpZW50KSAqIChjYkNvZWZmaWNpZW50IC8gY2dDb2VmZmlj
aWVudCk7Ci0gICAgcm93c1sxXVsyXSA9IC1jYmNyU2NhbGluZ0ZhY3RvciAqIDIgKiAoMSAtIGNy
Q29lZmZpY2llbnQpICogKGNyQ29lZmZpY2llbnQgLyBjZ0NvZWZmaWNpZW50KTsKLSAgICByb3dz
WzFdWzNdID0gMDsKLQotICAgIHJvd3NbMl1bMF0gPSB5U2NhbGluZ0ZhY3RvcjsKLSAgICByb3dz
WzJdWzFdID0gY2JjclNjYWxpbmdGYWN0b3IgKiAyICogKDEgLSBjYkNvZWZmaWNpZW50KTsKLSAg
ICByb3dzWzJdWzJdID0gMDsKLSAgICByb3dzWzJdWzNdID0gMDsKLQotICAgIHJvd3NbM11bMF0g
PSAwOwotICAgIHJvd3NbM11bMV0gPSAwOwotICAgIHJvd3NbM11bMl0gPSAwOwotICAgIHJvd3Nb
M11bM10gPSAxOwotCi0gICAgLy8gQ29uZmlndXJlIHRoZSBmaW5hbCBjb2x1bW4gb2YgdGhlIG1h
dHJpeCB0byBjb252ZXJ0IENiIGFuZCBDciB0byBbLTEyOCwgMTI4XQotICAgIC8vIGFuZCwgaW4g
dGhlIGNhc2Ugb2YgdmlkZW8tcmFuZ2UsIHRvIGNvbnZlcnQgWSB0byBbMTYsIDI0MF06Ci0gICAg
Zm9yIChhdXRvIHJvd051bWJlciA9IDA7IHJvd051bWJlciA8IDM7ICsrcm93TnVtYmVyKSB7Ci0g
ICAgICAgIGF1dG8mIHJvdyA9IHJvd3Nbcm93TnVtYmVyXTsKLSAgICAgICAgYXV0byYgeCA9IHJv
d1swXTsKLSAgICAgICAgYXV0byYgeSA9IHJvd1sxXTsKLSAgICAgICAgYXV0byYgeiA9IHJvd1sy
XTsKLSAgICAgICAgYXV0byYgdyA9IHJvd1szXTsKLQotICAgICAgICB3IC09ICh5ICsgeikgKiAx
MjggLyAyNTU7Ci0gICAgICAgIGlmIChyYW5nZSA9PSBQaXhlbFJhbmdlOjpWaWRlbykKLSAgICAg
ICAgICAgIHcgLT0geCAqIDE2IC8gMjU1OwotICAgIH0KLX0KLQotY29uc3RleHByIEdMZmxvYXRD
b2xvciBZQ2JDck1hdHJpeDo6b3BlcmF0b3IqKGNvbnN0IEdMZmxvYXRDb2xvciYgY29sb3IpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIEdMZmxvYXRDb2xvcigKLSAgICAgICAgcm93c1swXVswXSAqIGNv
bG9yLnJnYi5yICsgcm93c1swXVsxXSAqIGNvbG9yLnJnYi5nICsgcm93c1swXVsyXSAqIGNvbG9y
LnJnYi5iICsgcm93c1swXVszXSwKLSAgICAgICAgcm93c1sxXVswXSAqIGNvbG9yLnJnYi5yICsg
cm93c1sxXVsxXSAqIGNvbG9yLnJnYi5nICsgcm93c1sxXVsyXSAqIGNvbG9yLnJnYi5iICsgcm93
c1sxXVszXSwKLSAgICAgICAgcm93c1syXVswXSAqIGNvbG9yLnJnYi5yICsgcm93c1syXVsxXSAq
IGNvbG9yLnJnYi5nICsgcm93c1syXVsyXSAqIGNvbG9yLnJnYi5iICsgcm93c1syXVszXQotICAg
ICk7Ci19Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZv
clJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0
aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbikKLXsKLSAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBhaXI8
UGl4ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAgPSBT
dGRNYXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1hdHJpeE1hcD4gbWF0cmljZXM7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47Ci0KLSAgICAvLyBNYXRyaWNlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnRz
IGluIHRoZSBJVFUgUi42MDEgcmV2IDQgc3BlY2lmaWNhdGlvbgotICAgIC8vIGh0dHBzOi8vd3d3
Lml0dS5pbnQvcmVjL1ItUkVDLUJULjYwMQotICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRy
aXggcjYwMVZpZGVvTWF0cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMTE0ZiwgMC4yOTlmIH07
Ci0gICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCByNjAxRnVsbE1hdHJpeCB7IFBpeGVs
UmFuZ2U6OkZ1bGwsIDAuMTE0ZiwgMC4yOTlmIH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAx
VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici42
MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmxhY2sgY29sb3IiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgsIDEyOCwg
MjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVm
IC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29s
b3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3Io
ODEsICA5MCwgIDI0MCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3Jz
OjpyZWQsICAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgcmVkIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYwMVZpZGVvTWF0cml4ICog
R0xmbG9hdENvbG9yKDE0NSwgNTQsICAzNCwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIHZpZGVvIG1hdHJp
eCBkb2VzIG5vdCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYw
MVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDQxLCAgMjQwLCAxMTAsIDI1NSkpLmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIu
NjEwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjEwLCAxNiwgIDE0Niwg
MjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp5ZWxsb3csICAxLjVm
IC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNv
bG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYwMVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9y
KDEwNiwgMjAyLCAyMjIsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9y
czo6bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgInIuNjEwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBw
cm9kdWNlIG1hZ2VudGEgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRy
aXggKiBHTGZsb2F0Q29sb3IoMTcwLCAxNjYsIDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8g
bWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAgc3RhdGljX2Fzc2Vy
dCgocjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNB
cHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYp
LCAici42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAg
IHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI1NSwgMTI4LCAx
MjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAg
MS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUg
Y29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xv
cig3NiwgIDg1LCAgMjU1LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBw
cm9kdWNlIHJlZCBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICog
R0xmbG9hdENvbG9yKDE1MCwgNDQsICAyMSwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAx
RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyOSwgIDI1NSwgMTA3LCAyNTUpKS5pc0FwcHJveGlt
YXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJyLjYx
MCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMjYsIDAsICAgMTQ5LCAyNTUp
KS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAy
NTUuZiksICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIp
OwotICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDEwNSwg
MjEyLCAyMzUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFn
ZW50YSwgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
bWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xm
bG9hdENvbG9yKDE3OSwgMTcxLCAxLCAgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRv
ZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAgLy8gTWF0cmljZXMgYXJlIGRlcml2
ZWQgZnJvbSB0aGUgY29tcG9uZW50cyBpbiB0aGUgSVRVIFIuNzA5IHJldiAyIHNwZWNpZmljYXRp
b24KLSAgICAvLyBodHRwczovL3d3dy5pdHUuaW50L3JlYy9SLVJFQy1CVC43MDktMi0xOTk1MTAt
UwotICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggcjcwOVZpZGVvTWF0cml4IHsgUGl4
ZWxSYW5nZTo6VmlkZW8sIDAuMDcyMiwgMC4yMTI2IH07Ci0gICAgY29uc3RleHByIHN0YXRpYyBZ
Q2JDck1hdHJpeCByNzA5RnVsbE1hdHJpeCB7IFBpeGVsUmFuZ2U6OkZ1bGwsIDAuMDcyMiwgMC4y
MTI2IH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29s
b3IoMTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29s
b3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgYmxhY2sgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRy
aXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8g
bWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNjMsICAxMDIsIDI0MCwgMjU1KSkuaXNB
cHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8gMjU1LmYp
LCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7Ci0gICAg
c3RhdGljX2Fzc2VydCgocjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE3MywgNDIsICAy
NiwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAg
MS41ZiAvIDI1NS5mKSwgInIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGdyZWVu
IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENv
bG9yKDMyLCAgMjQwLCAxMTgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENv
bG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5v
dCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRy
aXggKiBHTGZsb2F0Q29sb3IoMjE5LCAxNiwgIDEzOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjp5ZWxsb3csICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8g
bWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dCgocjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDc4LCAgMjE0LCAyMzAsIDI1NSkpLmlz
QXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFnZW50YSwgMS41ZiAvIDI1NS5m
KSwgInIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTg4LCAx
NTQsIDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFu
LCAgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
Y3lhbiBjb2xvciIpOwotCi0gICAgc3RhdGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZs
b2F0Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZs
b2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9l
cyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxs
TWF0cml4ICogR0xmbG9hdENvbG9yKDI1NSwgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVs
eUVxdWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1
bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig1NCwgIDk5LCAgMjU2LCAyNTUpKS5p
c0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUu
ZiksICJyLjcwOSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xvciIpOwotICAg
IHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDE4MiwgMzAsICAx
MiwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAg
MS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4g
Y29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xv
cigxOCwgIDI1NiwgMTE2LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBw
cm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAq
IEdMZmxvYXRDb2xvcigyMzcsIDEsICAgMTQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRv
KEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJp
eCBkb2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI3
MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDczLCAgMjI2LCAyNDQsIDI1NSkpLmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgInIu
NzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0
YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIwMSwgMTU3LCAxLCAg
IDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41
ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xv
ciIpOwotCi0gICAgLy8gTWF0cmljZXMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgY29tcG9uZW50cyBp
biB0aGUgSVRVLVIgQlQuMjAyMC0yIHNwZWNpZmljYXRpb24KLSAgICAvLyBodHRwczovL3d3dy5p
dHUuaW50L3JlYy9SLVJFQy1CVC4yMDIwCi0gICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJp
eCBidDIwMjBWaWRlb01hdHJpeCB7IFBpeGVsUmFuZ2U6OlZpZGVvLCAwLjA1OTMsIDAuMjYyNyB9
OwotICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggYnQyMDIwRnVsbE1hdHJpeCB7IFBp
eGVsUmFuZ2U6OkZ1bGwsIDAuMDU5MywgMC4yNjI3IH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChi
dDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiks
ICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7Ci0g
ICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAx
MjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0
ZSwgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSB3aGl0ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICog
R0xmbG9hdENvbG9yKDc0LCAgOTcsICAyNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0
cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQy
MDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTY0LCA0NywgIDI1LCAgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAi
YnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOwotICAg
IHN0YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDI5LCAgMjQw
LCAxMTksIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwg
ICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
Ymx1ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICogR0xm
bG9hdENvbG9yKDIyMiwgMTYsICAxMzcsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQy
MDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoODcsICAyMDksIDIzMSwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAi
YnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7Ci0g
ICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTc3LCAx
NTksIDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFu
LCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSBjeWFuIGNvbG9yIik7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICog
R0xmbG9hdENvbG9yKDAsICAgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6YmxhY2ssICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRy
aXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0
MjAyMEZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAi
YnQuMjAyMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHdoaXRlIGNvbG9yIik7Ci0gICAg
c3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig2NywgIDkyLCAg
MjU2LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAg
IDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVk
IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRD
b2xvcigxNzMsIDM2LCAgMTEsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRD
b2xvcnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMg
bm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxs
TWF0cml4ICogR0xmbG9hdENvbG9yKDE1LCAgMjU2LCAxMTgsIDI1NSkpLmlzQXBwcm94aW1hdGVs
eUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAg
ZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibHVlIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fz
c2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyNDAsIDAsICAgMTM4LCAyNTUp
KS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAy
NTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9y
Iik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig4
MiwgIDIyMCwgMjQ1LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6
Om1hZ2VudGEsIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1bGxNYXRy
aXggKiBHTGZsb2F0Q29sb3IoMTg4LCAxNjQsIDEsICAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCBmdWxs
IG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGN5YW4gY29sb3IiKTsKLQotICAgIC8vIE1hdHJpY2Vz
IGFyZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudHMgaW4gdGhlIFNNUFRFIDI0ME0tMTk5OSBz
cGVjaWZpY2F0aW9uCi0gICAgLy8gaHR0cDovL2llZWV4cGxvcmUuaWVlZS5vcmcvZG9jdW1lbnQv
NzI5MTQ2MS8KLSAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0cml4IHNtcHRlMjQwTVZpZGVv
TWF0cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMDg3LCAwLjIxMiB9OwotICAgIGNvbnN0ZXhw
ciBzdGF0aWMgWUNiQ3JNYXRyaXggc21wdGUyNDBNRnVsbE1hdHJpeCB7IFBpeGVsUmFuZ2U6OkZ1
bGwsIDAuMDg3LCAwLjIxMiB9OwotCi0gICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNVmlkZW9N
YXRyaXggKiBHTGZsb2F0Q29sb3IoMTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQw
TSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRp
Y19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDIzNSwgMTI4LCAx
MjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAg
MS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
d2hpdGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRlb01hdHJpeCAq
IEdMZmxvYXRDb2xvcig2MiwgIDEwMiwgMjQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRv
KEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIHZpZGVv
IG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQo
KHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE3MCwgNDIsICAyOCwgIDI1NSkp
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1
NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29s
b3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRlb01hdHJpeCAqIEdMZmxvYXRD
b2xvcigzNSwgIDI0MCwgMTE2LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRD
b2xvcnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIHZpZGVvIG1hdHJpeCBk
b2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0
ME1WaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMTYsIDE2LCAgMTQwLCAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJT
TVBURSAyNDBNIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIpOwot
ICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDgx
LCAgMjE0LCAyMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6
bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZp
ZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE4OSwgMTU0LCAxNiwgIDI1NSkpLmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRF
IDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAg
c3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigwLCAgIDEy
OCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNr
LCAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1
Y2UgYmxhY2sgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1GdWxsTWF0cml4
ICogR0xmbG9hdENvbG9yKDI1NSwgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFs
VG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gZnVs
bCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3Nl
cnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoNTQsICA5OCwgIDI1NiwgMjU1
KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8g
MjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xv
ciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29s
b3IoMTc5LCAzMCwgIDE1LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29s
b3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2Vz
IG5vdCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBN
RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMiwgIDI1NiwgMTE0LCAyNTUpKS5pc0FwcHJveGlt
YXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJTTVBU
RSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOwotICAgIHN0
YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjMzLCAxLCAg
IDE0MiwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp5ZWxsb3cs
ICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNl
IHllbGxvdyBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXgg
KiBHTGZsb2F0Q29sb3IoNzYsICAyMjYsIDI0MSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxs
IG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KChzbXB0ZTI0ME1GdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIwMSwgMTU4LCAxLCAgIDI1
NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAv
IDI1NS5mKSwgIlNNUFRFIDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNv
bG9yIik7Ci0KLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIG1hdHJp
Y2VzLmdldCgpLmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OlZpZGVvLCBUcmFuc2ZlckZ1bmN0
aW9uQ1Y6OmtJVFVfUl82MDFfNCksIHI2MDFWaWRlb01hdHJpeCk7Ci0gICAgICAgIG1hdHJpY2Vz
LmdldCgpLmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25D
Vjo6a0lUVV9SXzYwMV80KSwgcjYwMUZ1bGxNYXRyaXgpOwotICAgICAgICBtYXRyaWNlcy5nZXQo
KS5lbXBsYWNlKE1hcEtleShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjpr
SVRVX1JfNzA5XzIpLCByNzA5VmlkZW9NYXRyaXgpOwotICAgICAgICBtYXRyaWNlcy5nZXQoKS5l
bXBsYWNlKE1hcEtleShQaXhlbFJhbmdlOjpGdWxsLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJVFVf
Ul83MDlfMiksIHI3MDlGdWxsTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFj
ZShNYXBLZXkoUGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzIw
MjApLCBidDIwMjBWaWRlb01hdHJpeCk7Ci0gICAgICAgIG1hdHJpY2VzLmdldCgpLmVtcGxhY2Uo
TWFwS2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzIwMjAp
LCBidDIwMjBGdWxsTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFjZShNYXBL
ZXkoUGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVuY3Rpb25DVjo6a1NNUFRFXzI0ME1fMTk5
NSksIHNtcHRlMjQwTVZpZGVvTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFj
ZShNYXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlvbkNWOjprU01QVEVfMjQw
TV8xOTk1KSwgc21wdGUyNDBNRnVsbE1hdHJpeCk7Ci0gICAgfSk7Ci0KLSAgICAvLyBXZSBzaG91
bGQgbmV2ZXIgYmUgYXNrZWQgdG8gaGFuZGxlIGEgUGl4ZWwgRm9ybWF0IHdob3NlIHJhbmdlIHZh
bHVlIGlzIHVua25vd24uCi0gICAgQVNTRVJUKHJhbmdlICE9IFBpeGVsUmFuZ2U6OlVua25vd24p
OwotICAgIGlmIChyYW5nZSA9PSBQaXhlbFJhbmdlOjpVbmtub3duKQotICAgICAgICByYW5nZSA9
IFBpeGVsUmFuZ2U6OkZ1bGw7Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0gbWF0cmljZXMuZ2V0KCku
ZmluZCh7cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb259KTsKLQotICAgIC8vIEFzc3VtZSB1bmtub3du
IHRyYW5zZmVyIGZ1bmN0aW9ucyBhcmUgci42MDE6Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1hdHJp
Y2VzLmdldCgpLmVuZCgpKQotICAgICAgICBpdGVyYXRvciA9IG1hdHJpY2VzLmdldCgpLmZpbmQo
e3JhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl82MDFfNH0pOwotCi0gICAgQVNTRVJU
KGl0ZXJhdG9yICE9IG1hdHJpY2VzLmdldCgpLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3It
PnNlY29uZDsKLX0KLQotVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OlZpZGVvVGV4dHVyZUNvcGllckNW
KEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQotICAgIDogbV9zaGFyZWRDb250ZXh0
KGNvbnRleHQpCi0gICAgLCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0
ZVNoYXJlZChjb250ZXh0KSkKLSAgICAsIG1fZnJhbWVidWZmZXIobV9jb250ZXh0LT5jcmVhdGVG
cmFtZWJ1ZmZlcigpKQotewotfQotCi1WaWRlb1RleHR1cmVDb3BpZXJDVjo6flZpZGVvVGV4dHVy
ZUNvcGllckNWKCkKLXsKLSAgICBpZiAobV92ZXJ0ZXhCdWZmZXIpCi0gICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlQnVmZmVyKG1fdmVydGV4QnVmZmVyKTsKLSAgICBpZiAobV9wcm9ncmFtKQotICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9wcm9ncmFtKTsKLSAgICBpZiAobV95dXZW
ZXJ0ZXhCdWZmZXIpCi0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1feXV2VmVydGV4
QnVmZmVyKTsKLSAgICBpZiAobV95dXZQcm9ncmFtKQotICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZVByb2dyYW0obV95dXZQcm9ncmFtKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVy
KG1fZnJhbWVidWZmZXIpOwotfQotCi0jaWYgIUxPR19ESVNBQkxFRAotdXNpbmcgU3RyaW5nTWFw
ID0gU3RkTWFwPHVpbnQzMl90LCBjb25zdCBjaGFyKj47Ci0jZGVmaW5lIFNUUklOR0lGWV9QQUlS
KGUpIGUsICNlCi1zdGF0aWMgU3RyaW5nTWFwJiBlbnVtVG9TdHJpbmdNYXAoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmdNYXA+IG1hcDsKLSAgICBpZiAobWFwLmdldCgpLmVt
cHR5KCkpIHsKLSAgICAgICAgU3RyaW5nTWFwIHN0cmluZ01hcDsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQikpOwotICAgICAg
ICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UkdC
QSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0Nv
bnRleHRHTDo6TFVNSU5BTkNFX0FMUEhBKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNU
UklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpMVU1JTkFOQ0UpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkFMUEhBKSk7
Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4
dEdMOjpSOCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFw
aGljc0NvbnRleHRHTDo6UjE2RikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJ
RllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjMyRikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1w
bGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjhVSSkpOwotICAgICAgICBt
YXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjhJKSk7
Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4
dEdMOjpSMTZVSSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihH
cmFwaGljc0NvbnRleHRHTDo6UjE2SSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJ
TkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjMyVUkpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlIzMkkpKTsKLSAgICAg
ICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJH
OCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0Nv
bnRleHRHTDo6UkcxNkYpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BB
SVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHMzJGKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNl
KFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSRzhVSSkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6Ukc4SSkpOwot
ICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRH
TDo6UkcxNlVJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdy
YXBoaWNzQ29udGV4dEdMOjpSRzE2SSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJ
TkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UkczMlVJKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSRzMySSkpOwotICAg
ICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6
UkdCOCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGlj
c0NvbnRleHRHTDo6U1JHQjgpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZ
X1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE4KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBs
YWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQTgpKTsKLSAg
ICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6
OlJHQkE0KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBo
aWNzQ29udGV4dEdMOjpSR0IxMF9BMikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJ
TkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTYpKTsKLSAgICAg
ICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkRF
UFRIX0NPTVBPTkVOVDI0KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9Q
QUlSKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DT01QT05FTlQzMkYpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMjRf
U1RFTkNJTDgpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3Jh
cGhpY3NDb250ZXh0R0w6OkRFUFRIMzJGX1NURU5DSUw4KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSR0IpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEp
KTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250
ZXh0R0w6OkxVTUlOQU5DRV9BTFBIQSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJ
TkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6TFVNSU5BTkNFKSk7Ci0gICAgICAgIG1hcC5n
ZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpBTFBIQSkpOwot
ICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRH
TDo6UkVEKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBo
aWNzQ29udGV4dEdMOjpSR19JTlRFR0VSKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNU
UklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMKSk7Ci0gICAgICAg
IG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJ
R05FRF9CWVRFKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9TSE9SVF81XzZfNSkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfU0hP
UlRfNF80XzRfNCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfU0hPUlRfNV81XzVfMSkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6QllURSkpOwot
ICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRH
TDo6SEFMRl9GTE9BVCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJ
UihHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2Uo
U1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX1NIT1JUKSk7Ci0gICAg
ICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpT
SE9SVCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNU
UklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpJTlQpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFVikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJ
UihHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMyX1VO
U0lHTkVEX0lOVF8yNF84X1JFVikpOwotCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkVEX0lOVEVHRVIpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCX0lOVEVHRVIpKTsKLSAgICAg
ICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkc4X1NOT1JNKSk7Ci0gICAg
ICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjU2NSkpOwotICAgICAg
ICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0I4X1NOT1JNKSk7Ci0gICAg
ICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1IxMUZfRzExRl9CMTBGKSk7
Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjlfRTUpKTsK
LSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMTZGKSk7Ci0g
ICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjMyRikpOwotICAg
ICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0I4VUkpKTsKLSAgICAg
ICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCOEkpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMTZVSSkpOwotICAgICAgICBt
YXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0IxNkkpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMzJVSSkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0IzMkkpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQThfU05PUk0pKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2RikpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0JBMzJGKSk7Ci0gICAgICAgIG1hcC5n
ZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQkE4VUkpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQThJKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjEwX0EyVUkpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2VUkpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2SSkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0JBMzJJKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQkEzMlVJKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjVfQTEpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkcpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxh
Y2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQV9JTlRFR0VSKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX0RFUFRIX0NPTVBPTkVOVCkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZf
UkVWKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1VOU0lH
TkVEX0lOVF81XzlfOV85X1JFVikpOwotI2VuZGlmCi0gICAgfQotICAgIHJldHVybiBtYXAuZ2V0
KCk7Ci19Ci0KLSNlbmRpZgotCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXpl
Q29udGV4dE9iamVjdHMoKQotewotICAgIFBsYXRmb3JtR0xPYmplY3QgdmVydGV4U2hhZGVyID0g
bV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIp
OwotICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgc19yZ2JWZXJ0ZXhT
aGFkZXIpOwotICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIp
OwotCi0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2
ZXJ0ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsK
LSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGll
ckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gVmVydGV4IHNoYWRl
ciBmYWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVT
aGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGNvbnN0IGJvb2wgdXNlVGV4dHVyZTJEID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3Vy
ZmFjZVRleHR1cmVUYXJnZXQoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKLSAg
ICBQbGF0Zm9ybUdMT2JqZWN0IGZyYWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFk
ZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgaWYgKHVzZVRleHR1
cmUyRCkKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNf
cmdiRnJhZ21lbnRTaGFkZXJUZXh0dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0
LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNfcmdiRnJhZ21lbnRTaGFkZXJUZXh0dXJl
UmVjdGFuZ2xlKTsKLSAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QoZnJhZ21lbnRT
aGFkZXIpOwotCi0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOwotICAgIGlmICghdmFsdWUp
IHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNv
bXBpbGUuIiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNo
YWRlcik7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1fcHJvZ3JhbSA9IG1fY29udGV4
dC0+Y3JlYXRlUHJvZ3JhbSgpOwotICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1fcHJvZ3Jh
bSwgdmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0s
IGZyYWdtZW50U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1fcHJvZ3JhbSk7
Ci0KLSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNzQ29udGV4
dEdMOjpMSU5LX1NUQVRVUywgJnZhbHVlKTsKLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIExP
RyhXZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoJXApIC0gUHJvZ3JhbSBmYWlsZWQgdG8gbGluay4iLCB0aGlzKTsKLSAgICAgICAg
bV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwotICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZVByb2dyYW0obV9wcm9ncmFtKTsKLSAgICAgICAgbV9wcm9ncmFtID0gMDsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZSJfcyk7Ci0gICAg
bV90ZXh0dXJlRGltZW5zaW9uc1VuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZURpbWVuc2lvbnMiX3MpOwotICAgIG1fZmxp
cFlVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dy
YW0sICJ1X2ZsaXBZIl9zKTsKLSAgICBtX3N3YXBDb2xvckNoYW5uZWxzVW5pZm9ybUxvY2F0aW9u
ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9zd2FwQ29sb3JD
aGFubmVscyJfcyk7Ci0gICAgbV9wcmVtdWx0aXBseVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfcHJlbXVsdGlwbHkiX3MpOwotICAg
IG1fcG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRp
b25EaXJlY3QobV9wcm9ncmFtLCAiYV9wb3NpdGlvbiJfcyk7Ci0KLSAgICBtX2NvbnRleHQtPmRl
dGFjaFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZXRh
Y2hTaGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxl
dGVTaGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFn
bWVudFNoYWRlcik7Ci0KLSAgICBMT0coV2ViR0wsICJVbmlmb3JtIGFuZCBBdHRyaWJ1dGUgbG9j
YXRpb25zOiB1X3RleHR1cmUgPSAlZCwgdV90ZXh0dXJlRGltZW5zaW9ucyA9ICVkLCB1X2ZsaXBZ
ID0gJWQsIHVfcHJlbXVsdGlwbHkgPSAlZCwgYV9wb3NpdGlvbiA9ICVkIiwgbV90ZXh0dXJlVW5p
Zm9ybUxvY2F0aW9uLCBtX3RleHR1cmVEaW1lbnNpb25zVW5pZm9ybUxvY2F0aW9uLCBtX2ZsaXBZ
VW5pZm9ybUxvY2F0aW9uLCBtX3ByZW11bHRpcGx5VW5pZm9ybUxvY2F0aW9uLCBtX3Bvc2l0aW9u
QXR0cmlidXRlTG9jYXRpb24pOwotICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkobV9wb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKLQotICAgIG1fdmVydGV4QnVmZmVyID0g
bV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKLSAgICBmbG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0x
LCAtMSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAtMSwgLTEgfTsKLQotICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBtX3ZlcnRleEJ1
ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJB
WV9CVUZGRVIsIHNpemVvZihmbG9hdCkgKiAxMiwgdmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdM
OjpTVEFUSUNfRFJBVyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWaWRlb1RleHR1
cmVDb3BpZXJDVjo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQotewotICAgIGNvbnN0IGJv
b2wgdXNlVGV4dHVyZTJEID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1
cmVUYXJnZXQoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKLQotICAgIFBsYXRm
b3JtR0xPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhp
Y3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpOwotICAgIGlmICh1c2VUZXh0dXJlMkQpCi0gICAg
ICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgc195dXZWZXJ0ZXhTaGFk
ZXJUZXh0dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uo
dmVydGV4U2hhZGVyLCBzX3l1dlZlcnRleFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOwotCi0gICAg
bV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7Ci0KLSAgICBHQ0dM
aW50IHN0YXR1cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIs
IEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7Ci0gICAgaWYgKCFz
dGF0dXMpIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBp
bGUuIiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBQbGF0Zm9ybUdMT2JqZWN0
IGZyYWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0
R0w6OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgaWYgKHVzZVRleHR1cmUyRCkKLSAgICAgICAgbV9j
b250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNfeXV2RnJhZ21lbnRTaGFkZXJU
ZXh0dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJh
Z21lbnRTaGFkZXIsIHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlKTsKLQotICAg
IG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBt
X2NvbnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6
Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOwotICAgIGlmICghc3RhdHVzKSB7Ci0gICAgICAgIExP
RyhXZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0
cyglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7Ci0gICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7Ci0gICAgICAgIG1fY29u
dGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIG1feXV2UHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgp
OwotICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgdmVydGV4U2hhZGVy
KTsKLSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3l1dlByb2dyYW0sIGZyYWdtZW50U2hh
ZGVyKTsKLSAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1feXV2UHJvZ3JhbSk7Ci0KLSAgICBt
X2NvbnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpM
SU5LX1NUQVRVUywgJnN0YXR1cyk7Ci0gICAgaWYgKCFzdGF0dXMpIHsKLSAgICAgICAgTE9HKFdl
YkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVw
KSAtIFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+
ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hh
ZGVyKGZyYWdtZW50U2hhZGVyKTsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1f
eXV2UHJvZ3JhbSk7Ci0gICAgICAgIG1feXV2UHJvZ3JhbSA9IDA7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV95VGV4dHVyZSJfcyk7Ci0gICAg
bV91dlRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihtX3l1dlByb2dyYW0sICJ1X3V2VGV4dHVyZSJfcyk7Ci0gICAgbV9jb2xvck1hdHJpeFVuaWZv
cm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwg
InVfY29sb3JNYXRyaXgiX3MpOwotICAgIG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24gPSBtX2Nv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X2ZsaXBZIl9zKTsKLSAg
ICBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1feXV2UHJvZ3JhbSwgInVfeVRleHR1cmVTaXplIl9zKTsKLSAgICBtX3V2VGV4dHVy
ZVNpemVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1
dlByb2dyYW0sICJ1X3V2VGV4dHVyZVNpemUiX3MpOwotICAgIG1feXV2UG9zaXRpb25BdHRyaWJ1
dGVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb25EaXJlY3QobV95dXZQcm9n
cmFtLCAiYV9wb3NpdGlvbiJfcyk7Ci0KLSAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihtX3l1
dlByb2dyYW0sIHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIobV95
dXZQcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIo
dmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRl
cik7Ci0KLSAgICBtX3l1dlZlcnRleEJ1ZmZlciA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7
Ci0gICAgZmxvYXQgdmVydGljZXNbMTJdID0geyAtMSwgLTEsIDEsIC0xLCAxLCAxLCAxLCAxLCAt
MSwgMSwgLTEsIC0xIH07Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250
ZXh0R0w6OkFSUkFZX0JVRkZFUiwgbV95dXZWZXJ0ZXhCdWZmZXIpOwotICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGlj
ZXMpLCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0R0w6OlNUQVRJQ19EUkFXKTsKLSAgICBtX2Nv
bnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1feXV2UG9zaXRpb25BdHRyaWJ1dGVMb2Nh
dGlvbik7Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1feXV2UG9zaXRpb25B
dHRyaWJ1dGVMb2NhdGlvbiwgMiwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FULCBmYWxzZSwgMCwg
MCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCogVmlkZW9UZXh0dXJlQ29waWVyQ1Y6
OmF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5
cGUsIElPU3VyZmFjZVJlZiBzdXJmYWNlLCBHQ0dMdWludCBwbGFuZSkKLXsKLSAgICBhdXRvIGRp
c3BsYXkgPSBtX2NvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwotICAgIEVHTGludCBlZ2xUZXh0
dXJlVGFyZ2V0ID0gMDsKLQotICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfUkVDVEFOR0xFX0FSQikKLSAgICAgICAgZWdsVGV4dHVyZVRhcmdldCA9IEVHTF9URVhU
VVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfMkQpCi0gICAgICAgIGVnbFRleHR1cmVUYXJnZXQgPSBFR0xfVEVYVFVS
RV8yRDsKLSAgICBlbHNlIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVW5rbm93biB0ZXh0dXJlIHRh
cmdldCAlZC4iLCBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldCkpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0gICAgaWYgKGVnbFRleHR1cmVUYXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSkgewotICAgICAgICBMT0coV2Vi
R0wsICJNaXNtYXRjaCBpbiBFR0wgdGV4dHVyZSB0YXJnZXQgJWQuIiwgc3RhdGljX2Nhc3Q8aW50
Pih0YXJnZXQpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgY29uc3Qg
RUdMaW50IHN1cmZhY2VBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9XSURUSCwgd2lkdGgs
Ci0gICAgICAgIEVHTF9IRUlHSFQsIGhlaWdodCwKLSAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFO
RV9BTkdMRSwgc3RhdGljX2Nhc3Q8RUdMaW50PihwbGFuZSksCi0gICAgICAgIEVHTF9URVhUVVJF
X1RBUkdFVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihlZ2xUZXh0dXJlVGFyZ2V0KSwKLSAgICAgICAg
RUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGlu
dGVybmFsRm9ybWF0KSwKLSAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9S
R0JBLAotICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+
KHR5cGUpLAotICAgICAgICAvLyBPbmx5IGhhcyBhbiBlZmZlY3Qgb24gdGhlIGlPUyBTaW11bGF0
b3IuCi0gICAgICAgIEVHTF9JT1NVUkZBQ0VfVVNBR0VfSElOVF9BTkdMRSwgRUdMX0lPU1VSRkFD
RV9SRUFEX0hJTlRfQU5HTEUsCi0gICAgICAgIEVHTF9OT05FLCBFR0xfTk9ORQotICAgIH07Ci0g
ICAgRUdMU3VyZmFjZSBwYnVmZmVyID0gRUdMX0NyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KGRpc3BsYXksIEVHTF9JT1NVUkZBQ0VfQU5HTEUsIHN1cmZhY2UsIG1fY29udGV4dC0+cGxhdGZv
cm1Db25maWcoKSwgc3VyZmFjZUF0dHJpYnV0ZXMpOwotICAgIGlmICghcGJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFFR0xfQmluZFRleEltYWdlKGRpc3BsYXksIHBi
dWZmZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKLSAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKGRp
c3BsYXksIHBidWZmZXIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0
dXJuIHBidWZmZXI7Ci19Ci0KLXZvaWQgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmRldGFjaElPU3Vy
ZmFjZUZyb21UZXh0dXJlKHZvaWQqIGhhbmRsZSkKLXsKLSAgICBhdXRvIGRpc3BsYXkgPSBtX2Nv
bnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwotICAgIEVHTF9SZWxlYXNlVGV4SW1hZ2UoZGlzcGxh
eSwgaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIEVHTF9EZXN0cm95U3VyZmFjZShkaXNw
bGF5LCBoYW5kbGUpOwotfQotCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VU
b1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBzaXplX3Qgd2lkdGgsIHNp
emVfdCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0
cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpCi17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dFRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHByZW11bHRpcGx5QWxwaGEpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IG9ubHkg
c3VwcG9ydHMgJzQyMHYnIGFuZCAnNDIwZicgcGl4ZWwgZm9ybWF0cy4gSW52ZXN0aWdhdGUgc3Vw
cG9ydGluZyBtb3JlIHBpeGVsIGZvcm1hdHMuCi0gICAgT1NUeXBlIHBpeGVsRm9ybWF0ID0gQ1ZQ
aXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZSk7Ci0gICAgaWYgKHBpeGVsRm9ybWF0
ICE9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlICYmIHBp
eGVsRm9ybWF0ICE9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFu
Z2UpIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBBc2tlZCB0byBjb3B5IGFuIHVuc3VwcG9y
dGVkIHBpeGVsIGZvcm1hdCAoJyVzJykuIiwgdGhpcywgRm91ckNDKHBpeGVsRm9ybWF0KS50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IElPU3VyZmFjZVJlZiBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShpbWFnZSk7
Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIG5l
d1N1cmZhY2VTZWVkID0gSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNlKTsKLSAgICBpZiAoZmxpcFkg
PT0gbV9sYXN0RmxpcFkKLSAgICAgICAgJiYgc3VyZmFjZSA9PSBtX2xhc3RTdXJmYWNlIAotICAg
ICAgICAmJiBuZXdTdXJmYWNlU2VlZCA9PSBtX2xhc3RTdXJmYWNlU2VlZAotICAgICAgICAmJiBs
YXN0VGV4dHVyZVNlZWQob3V0cHV0VGV4dHVyZSkgPT0gbV9jb250ZXh0LT50ZXh0dXJlU2VlZChv
dXRwdXRUZXh0dXJlKSkgewotICAgICAgICAvLyBJZiB0aGUgdGV4dHVyZSBoYXNuJ3QgYmVlbiBt
b2RpZmllZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIGNvcGllZCB0byBpdCwgYW5kIHRoZQotICAg
ICAgICAvLyBpbWFnZSBoYXNuJ3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0
IHdhcyBjb3BpZWQsIHRoaXMgaXMgYSBuby1vcC4KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKCFtX3l1dlByb2dyYW0pIHsKLSAgICAgICAgaWYgKCFpbml0aWFsaXplVVZD
b250ZXh0T2JqZWN0cygpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJWaWRlb1RleHR1cmVD
b3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIFVuYWJsZSB0
byBpbml0aWFsaXplIE9wZW5HTCBjb250ZXh0IG9iamVjdHMuIiwgdGhpcyk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXIp
OwotCi0gICAgLy8gQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgb3V0cHV0IHRleHR1cmUuCi0gICAg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0
cHV0VGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSLCBH
cmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0R0w6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7
Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdM
OjpDTEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKLQotICAgIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJE
LCBvdXRwdXRUZXh0dXJlLCBsZXZlbCk7Ci0gICAgR0NHTGVudW0gc3RhdHVzID0gbV9jb250ZXh0
LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUik7
Ci0gICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBVbmFibGUgdG8gY3JlYXRlIGZyYW1lYnVm
ZmVyIGZvciBvdXRwdXRUZXh0dXJlLiIsIHRoaXMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfMkQsIDApOwotCi0gICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1feXV2UHJvZ3JhbSk7Ci0g
ICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIC8vIEJp
bmQgYW5kIHNldCB1cCB0aGUgdGV4dHVyZXMgZm9yIHRoZSB2aWRlbyBzb3VyY2UuCi0gICAgYXV0
byB5UGxhbmVXaWR0aCA9IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShzdXJmYWNlLCAwKTsKLSAg
ICBhdXRvIHlQbGFuZUhlaWdodCA9IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoc3VyZmFjZSwg
MCk7Ci0gICAgYXV0byB1dlBsYW5lV2lkdGggPSBJT1N1cmZhY2VHZXRXaWR0aE9mUGxhbmUoc3Vy
ZmFjZSwgMSk7Ci0gICAgYXV0byB1dlBsYW5lSGVpZ2h0ID0gSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQ
bGFuZShzdXJmYWNlLCAxKTsKLQotICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7Ci0KLSAgICBh
dXRvIHV2VGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgIG1fY29udGV4
dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTEpOwotICAgIG1fY29u
dGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB1dlRleHR1cmUpOwotICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAg
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwot
ICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VE
R0UpOwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1Q
X1RPX0VER0UpOwotICAgIGF1dG8gdXZIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUo
dmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwg
dXZQbGFuZUhlaWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2Us
IDEpOwotICAgIGlmICghdXZIYW5kbGUpIHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0
dXJlKHV2VGV4dHVyZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRv
IHlUZXh0dXJlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFMCk7Ci0gICAgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZSh2aWRlb1RleHR1cmVUYXJnZXQsIHlUZXh0dXJlKTsKLSAgICBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBt
X2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsK
LSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19F
REdFKTsKLSAgICBhdXRvIHlIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9U
ZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkVELCB5UGxhbmVXaWR0aCwgeVBsYW5l
SGVpZ2h0LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFjZSwgMCk7Ci0g
ICAgaWYgKCF5SGFuZGxlKSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4
dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQ29uZmlndXJlIHRoZSBkcmF3aW5n
IHBhcmFtZXRlcnMuCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV95VGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiwgMCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV91dlRleHR1cmVVbmlmb3Jt
TG9jYXRpb24sIDEpOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1feXV2RmxpcFlVbmlmb3Jt
TG9jYXRpb24sIGZsaXBZKTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX3lUZXh0dXJlU2l6
ZVVuaWZvcm1Mb2NhdGlvbiwgeVBsYW5lV2lkdGgsIHlQbGFuZUhlaWdodCk7Ci0gICAgbV9jb250
ZXh0LT51bmlmb3JtMmYobV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uLCB1dlBsYW5lV2lk
dGgsIHV2UGxhbmVIZWlnaHQpOwotCi0gICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9tUGl4
ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwotICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRyYW5z
ZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1lbnQo
aW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8mIGNv
bG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihy
YW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2
KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJpeC5k
YXRhKCkpOwotCi0gICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgotICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHRHTDo6VFJJQU5HTEVTLCAwLCA2KTsKLQotICAgIC8v
IENsZWFuLXVwLgotICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7Ci0gICAg
bV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7Ci0gICAgZGV0YWNoSU9TdXJmYWNl
RnJvbVRleHR1cmUoeUhhbmRsZSk7Ci0gICAgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUodXZI
YW5kbGUpOwotCi0gICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgbV9sYXN0U3VyZmFj
ZVNlZWQgPSBuZXdTdXJmYWNlU2VlZDsKLSAgICBtX2xhc3RUZXh0dXJlU2VlZC5zZXQob3V0cHV0
VGV4dHVyZSwgbV9jb250ZXh0LT50ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSk7Ci0gICAgbV9s
YXN0RmxpcFkgPSBmbGlwWTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZpZGVvVGV4
dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm1H
TE9iamVjdCB2aWRlb1RleHR1cmVOYW1lLCBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQsIHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbCBmbGlwWSwgYm9vbCBzd2FwQ29sb3JDaGFubmVscykKLXsKLSAgICBMT0coV2Vi
R0wsICJWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKCVwKSAtIGludGVybmFsRm9ybWF0OiAlcywgZm9ybWF0OiAlcywgdHlwZTogJXMgZmxpcFk6
ICVzLCBwcmVtdWx0aXBseUFscGhhOiAlcyIsIHRoaXMsIGVudW1Ub1N0cmluZ01hcCgpW2ludGVy
bmFsRm9ybWF0XSwgZW51bVRvU3RyaW5nTWFwKClbZm9ybWF0XSwgZW51bVRvU3RyaW5nTWFwKClb
dHlwZV0sIGZsaXBZID8gInRydWUiIDogImZhbHNlIiwgcHJlbXVsdGlwbHlBbHBoYSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOwotCi0gICAgaWYgKCFtX3Byb2dyYW0pIHsKLSAgICAgICAgaWYgKCFpbml0
aWFsaXplQ29udGV4dE9iamVjdHMoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9U
ZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBV
bmFibGUgdG8gaW5pdGlhbGl6ZSBPcGVuR0wgY29udGV4dCBvYmplY3RzLiIsIHRoaXMpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9jb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2ZyYW1l
YnVmZmVyKTsKLSAgICAKLSAgICAvLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBvdXRwdXQgdGV4
dHVyZS4KLSAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFXzJELCBvdXRwdXRUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7Ci0gICAg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFN
UF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhp
Y3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERp
cmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOwotCi0gICAgbV9jb250
ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfMkQsIG91dHB1dFRleHR1cmUsIGxldmVsKTsKLSAgICBHQ0dMZW51bSBzdGF0dXMg
PSBtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0R0w6OkZS
QU1FQlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUl9DT01QTEVURSkgewotICAgICAgICBMT0coV2ViR0wsICJWaWRlb1RleHR1cmVDb3BpZXJD
Vjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIFVuYWJsZSB0byBjcmVh
dGUgZnJhbWVidWZmZXIgZm9yIG91dHB1dFRleHR1cmUuIiwgdGhpcyk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9wcm9n
cmFtKTsKLSAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwotCi0g
ICAgLy8gQmluZCBhbmQgc2V0IHVwIHRoZSB0ZXh0dXJlIGZvciB0aGUgdmlkZW8gc291cmNlLgot
ICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTAp
OwotICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB2aWRlb1Rl
eHR1cmVOYW1lKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFy
Z2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRl
eHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJl
VGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0
dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29u
dGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlk
ZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLQotICAgIC8vIENvbmZpZ3VyZSB0aGUgZHJh
d2luZyBwYXJhbWV0ZXJzLgotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiwgMCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmYobV90ZXh0dXJlRGltZW5z
aW9uc1VuaWZvcm1Mb2NhdGlvbiwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBtX2NvbnRleHQtPnVu
aWZvcm0xaShtX2ZsaXBZVW5pZm9ybUxvY2F0aW9uLCBmbGlwWSk7Ci0gICAgbV9jb250ZXh0LT51
bmlmb3JtMWkobV9zd2FwQ29sb3JDaGFubmVsc1VuaWZvcm1Mb2NhdGlvbiwgc3dhcENvbG9yQ2hh
bm5lbHMpOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fcHJlbXVsdGlwbHlVbmlmb3JtTG9j
YXRpb24sIHByZW11bHRpcGx5QWxwaGEpOwotCi0gICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5n
LgotICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9wb3NpdGlvbkF0dHJp
YnV0ZUxvY2F0aW9uKTsKLSAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgbV92ZXJ0ZXhCdWZmZXIpOwotICAgIG1fY29udGV4dC0+dmVydGV4
QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGTE9BVCwgZmFsc2UsIDAsIDApOwotICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhH
cmFwaGljc0NvbnRleHRHTDo6VFJJQU5HTEVTLCAwLCA2KTsKLQotICAgIC8vIENsZWFuLXVwLgot
ICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCAwKTsKLSAgICBt
X2NvbnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNlZGYyZDU4YWEyODU0YzNiMmY0OTI4NjZhNTA3MGRkZWFiMGRhMTIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgL2Rl
di9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKLSNpbXBvcnQgPHd0Zi9VbnNhZmVQb2lu
dGVyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIqIENWSW1hZ2VCdWZmZXJSZWY7Ci10
eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwotdHlwZWRlZiBDVklt
YWdlQnVmZmVyUmVmIENWT3BlbkdMVGV4dHVyZVJlZjsKLXR5cGVkZWYgQ1ZJbWFnZUJ1ZmZlclJl
ZiBDVk9wZW5HTEVTVGV4dHVyZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBW
aWRlb1RleHR1cmVDb3BpZXJDViB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmKTsK
LSAgICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKLQotICAgIGJvb2wgY29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKLQotICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9
Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
UGxhdGZvcm1HTE9iamVjdCBpbnB1dFRleHR1cmUsIEdDR0xlbnVtIGlucHV0VGFyZ2V0LCBzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwg
R0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFksIGJvb2wgc3dhcENvbG9yQ2hhbm5lbHMpOwotCi0gICAgYm9vbCBpbml0
aWFsaXplQ29udGV4dE9iamVjdHMoKTsKLSAgICBib29sIGluaXRpYWxpemVVVkNvbnRleHRPYmpl
Y3RzKCk7Ci0KLSAgICB1bnNpZ25lZCBsYXN0VGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2VlZC5nZXQodGV4dHVyZSk7Ci0g
ICAgfQotCi0gICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYgbm9uLW51bGwsIG11c3Qg
YmUgcmVsZWFzZWQgdmlhIHRoZQotICAgIC8vIGRldGFjaCBjYWxsIGJlbG93LgotICAgIHZvaWQq
IGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5
cGUsIElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOwotICAgIHZvaWQgZGV0YWNoSU9TdXJm
YWNlRnJvbVRleHR1cmUodm9pZCogaGFuZGxlKTsKLQotICAgIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gbV9zaGFyZWRDb250ZXh0OwotICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwotCi0gICAgUGxhdGZvcm1HTE9iamVjdCBtX2ZyYW1lYnVmZmVyIHsgMCB9
OwotICAgIFBsYXRmb3JtR0xPYmplY3QgbV9wcm9ncmFtIHsgMCB9OwotICAgIFBsYXRmb3JtR0xP
YmplY3QgbV92ZXJ0ZXhCdWZmZXIgeyAwIH07Ci0gICAgR0NHTGludCBtX3RleHR1cmVVbmlmb3Jt
TG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV90ZXh0dXJlRGltZW5zaW9uc1VuaWZvcm1M
b2NhdGlvbiB7IC0xIH07Ci0gICAgR0NHTGludCBtX2ZsaXBZVW5pZm9ybUxvY2F0aW9uIHsgLTEg
fTsKLSAgICBHQ0dMaW50IG1fc3dhcENvbG9yQ2hhbm5lbHNVbmlmb3JtTG9jYXRpb24geyAtMSB9
OwotICAgIEdDR0xpbnQgbV9wcmVtdWx0aXBseVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07Ci0gICAg
R0NHTGludCBtX3Bvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24geyAtMSB9OwotICAgIFBsYXRmb3Jt
R0xPYmplY3QgbV95dXZQcm9ncmFtIHsgMCB9OwotICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZW
ZXJ0ZXhCdWZmZXIgeyAwIH07Ci0gICAgR0NHTGludCBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9u
IHsgLTEgfTsKLSAgICBHQ0dMaW50IG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsK
LSAgICBHQ0dMaW50IG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xp
bnQgbV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07Ci0gICAgR0NHTGludCBtX3l1
dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV95VGV4dHVy
ZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV91dlRleHR1cmVTaXpl
VW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKLQotICAgIGJvb2wgbV9sYXN0RmxpcFkgeyBmYWxzZSB9
OwotICAgIFVuc2FmZVBvaW50ZXI8SU9TdXJmYWNlUmVmPiBtX2xhc3RTdXJmYWNlOwotICAgIHVp
bnQzMl90IG1fbGFzdFN1cmZhY2VTZWVkIHsgMCB9OwotCi0gICAgdXNpbmcgVGV4dHVyZVNlZWRN
YXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPEdDR0x1aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwotICAgIFRleHR1
cmVTZWVkTWFwIG1fbGFzdFRleHR1cmVTZWVkOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCBjZTY1MTA5NTU3MTM0MDYyMzI4NDMwY2E5ODJkNWQwNjNhMTdm
YWU0Li5kMWVmNjM0ODFlN2Q1NTA2Zjg0YmYyYTczOWUxOTc4ODZlNjIyZjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNTEwLDYgKzUxMCwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoVklERU8p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZp
bmFsOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0
aW5hdGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4
dCA9IG51bGxwdHIpOwogCkBAIC03NDksNiArNzUzLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0R0xDVj4gbV9jdjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413789</attachid>
            <date>2020-11-10 23:44:54 -0800</date>
            <delta_ts>2020-11-11 02:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217218-20201111094453.patch</filename>
            <type>text/plain</type>
            <size>130079</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzMGYzZWY5MDlkODBh
OGE1OWM3M2M2NDUwMDZlMDliZGExMjI1MC4uYWRhN2VlYTJlZWYxYmNiY2FhZDIxYzQ4YzAyOWYx
YTQ2MTU5YzYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTEwLTI4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgVmlk
ZW9UZXh0dXJlQ29waWVyIHRvIGJlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBHcmFwaGljc0Nv
bnRleHRHTCBhbmQgcG9seW1vcnBoaWMgdG8gaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzIxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk4
NzY0MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V29yayB0b3dhcmRzIFdlYkdMIGltcGxlbWVudGF0aW9uIHdoaWNoIHVzZXMgR3JhcGhpY3NDb250
ZXh0R0wgYWJzdHJhY3QKKyAgICAgICAgYmFzZSBjbGFzcyBpbnN0ZWFkIG9mIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMIGNvbmNyZXRlIGNsYXNzLgorCisgICAgICAgIFJlbGF0aXZlbHkgbWluaW1h
bCBjaGFuZ2VzIHRvIG1ha2UgQVZGT1VOREFUSU9OIHZhcmlhbnRzIG9mIE1lZGlhUGxheWVyUHJp
dmF0ZQorICAgICAgICBjb21waWxlIHdoZW4gR3JhcGhpY3NDb250ZXh0R0wgaXMgcGFzc2VkIGFz
IHRoZSBjb250ZXh0IGluc3RlYWQgb2YKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
CisKKyAgICAgICAgQ2hhbmdlcyBmdW5jdGlvbmFsaXR5IHNvIHRoYXQgdGhlIGNvbnZlcnNpb24g
cmVzb3VyY2VzIChzaGFkZXJzLCBGQk8pCisgICAgICAgIGFyZSBhbGxvY2F0ZWQgcGVyIGNvbnRl
eHQgaW5zdGVhZCBvZiBwcmV2aW91c2x5IHBlciB2aWRlbyBlbGVtZW50LgorICAgICAgICBUaGlz
IGFsc28gbWVhbnMgdGhhdCBjb250ZXh0IGxvc3MgaXMgaGFuZGxlZCBjb3JyZWN0bHkgZm9yIHRo
ZSBlbGVtZW50LgorCisgICAgICAgIFJlbW92ZXMgdW51c2VkIFJHQiB0ZXh0dXJlIGNvcHlpbmcg
Y29kZSBmcm9tIHRoZSBjb3B5IGltcGxlbWVudGF0aW9uLgorICAgICAgICBUaGlzIHdhcyBsZWZ0
IHVudXNlZCB3aGVuIE9wZW5HTCBhbmQgT3BlbkdMIEVTIGJhY2tlbmRzIGZvciBBVkYgdXNlcnMK
KyAgICAgICAgd2VyZSByZW1vdmVkLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIHRvIGhh
dmUgR3JhcGhpY3NDb250ZXh0R0xSZW1vdGUgdGhhdCBpcyBhYmxlIHRvIGNvcHkKKyAgICAgICAg
Ym90aCBBVkYgbWVkaWEgdGV4dHVyZXMgYXMgd2VsbCBhcyByZW1vdGUgbWVkaWEgdGV4dHVyZXMu
CisKKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgdG8gaGF2ZSBDb2NvYSB2YXJpYW50IG9mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIHRoYXQKKyAgICAgICAgaXMgYWJsZSB0byBjb3B5IGJvdGgg
QVZGIG1lZGlhIHRleHR1cmVzIGFzIHdlbGwgYXMgcmVtb3RlIG1lZGlhCisgICAgICAgIHRleHR1
cmVzLgorCisgICAgICAgIENoYW5nZXMgb25seSB0aGUgQVZGIHZhcmlhbnRzIG9mIE1lZGlhUGxh
eWVyUHJpdmF0ZSwgbm90CisgICAgICAgIHRoZSBHU3RyZWFtZXIgdmFyaWFudHMuIFNpbWlsYXIg
aW50ZXJmYWNlIEdyYXBoaWNzQ29udGV4dEdMR1N0cmVhbWVyCisgICAgICAgIGNvdWxkIGJlIGlt
cGxlbWVudGVkIGZvciBHU3RyZWFtZXIgaWYvd2hlbiByZW1vdGUgV2ViR0wgd291bGQgc3VwcG9y
dAorICAgICAgICBHU3RyZWFtZXIuIElmIHRoaXMgaXMgbm90IGRvbmUsIGEgZG93bmNhc3QgZnJv
bSBHcmFwaGljc0NvbnRleHRHTAorICAgICAgICB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBj
YW4gYmUgYWRkZWQgYXQgdGhlIG1vbWVudCB3aGVuIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TAorICAgICAgICB1c2VzIGluIGNvcmUgV2ViR0wgYXJlIG1vZGlmaWVkIHRvIEdyYXBoaWNzQ29u
dGV4dEdMIHVzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6On5HcmFw
aGljc0NvbnRleHRHTENWQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmRldGFjaElPU3VyZmFj
ZUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisK
IDIwMjAtMTEtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY5NjYwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQppbmRleCA4ZDkyNDkxYTA4NTMwZWNhMmU5NmY0ZGMxZTYyZDMyNWIxNmU0NzVjLi5jZmVi
MDM4YWVkOGVhZTUxNzEzYjg2NzA1MTdiNTZhZGMwYzNiODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMzI2LDkgKzMyNiw5IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9HbHlwaFBhZ2VDb3JlVGV4dC5jcHAK
IAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UaWxpbmdEYXRhLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCAyYWQzM2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi4zZDI4YzdiOTI4ZGJm
YjkyZDNiZGY5OGM2NWU2ODEyYjQ2ZWE3YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTM3Nyw3ICszNzcsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9HbHlwaFBhZ2VDb3Jl
VGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MmEwYjA2ODE1ZDI2N2Vi
ZjQxMWEwZDJmZThlNWM2Yzg4OGI0YjUyLi43YzVmYTZlYmQwMDA3ZjQzZGIyNGIyZDZiMDM2NTdl
YzA0MDAzY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjE5LDYgKzIyMTksOCBAQAogCQk3QUY5QjIwNjE4Q0ZCMkRGMDBD
NjRCRUYgLyogVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FGOUIyMDAxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3Qu
aCAqLzsgfTsKIAkJN0FGOUIyMEQxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwOTE4Q0ZC
NUYyMDBDNjRCRUYgLyogSlNWVFRSZWdpb24uaCAqLzsgfTsKIAkJN0FGOUIyMEYxOENGQjVGNDAw
QzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9u
TGlzdC5oICovOyB9OworCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjEwMzM5RjI1NDk3
MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JCMzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi87IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBK
U1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggKi87IH07CkBAIC00MjM0LDcgKzQyMzYsNiBAQAogCQlDRDk0QTVERDFGNzFENUQ4MDBG
NTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0Q5NEE1REIxRjcxQ0JCMDAwRjUyNUM1IC8qIENETUNsZWFyS2V5LmNw
cCAqLzsgfTsKIAkJQ0Q5NEE1REUxRjcyRjU3QjAwRjUyNUM1IC8qIENETUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1QzkxRjcxQ0E5
RDAwRjUyNUM1IC8qIENETUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNEOUNDNTg1MjRDNkJCRUIwMENEM0M2NCAvKiBWUDlVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENkZF
NUJBMjRCQ0U3QjYwMDlGQ0RBNCAvKiBWUDlVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDRDlEODI3QTFDN0I4RUUxMDA2RkYwNjYg
LyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOUQ4Mjc4MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVD
b3BpZXJDVi5oICovOyB9OwogCQlDRDlERTE3NTE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5
REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0Q5REUx
N0IxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlERTE3NzE3QUFDNzVCMDBFQTM4NkQgLyog
SlNTb3VyY2VCdWZmZXIuaCAqLzsgfTsKIAkJQ0Q5REUxN0QxN0FBQzc1QjAwRUEzODZEIC8qIEpT
U291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q5REUxNzkxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyTGlzdC5o
ICovOyB9OwpAQCAtMTAxMTEsNiArMTAxMTIsOSBAQAogCQk3QUY5QjIwOTE4Q0ZCNUYyMDBDNjRC
RUYgLyogSlNWVFRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNW
VFRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGOUIyMEExOENGQjVG
MzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1ZUVFJlZ2lvbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVlRUUmVnaW9uTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMTAzMzlDMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ1NzgsOCArMTQ1ODIsNiBAQAogCQlDRDlBODdGOTIxNUQ2Q0YzMDA2RjE3QjUg
LyogUXVpcmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1aXJrcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOUE4N0ZCMjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
OUQzNzVBMjE1MTYzRTQwMDQ5NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0RNSW5zdGFuY2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUNEOUQ4Mjc3MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRlb1RleHR1cmVDb3BpZXJDVi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOUQ4Mjc4MUM3QjhFRTEwMDZGRjA2
NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb1RleHR1cmVDb3BpZXJDVi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291cmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQg
LyogSlNTb3VyY2VCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTb3VyY2VCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc2
NjgsMTQgKzI3NjcwLDE1IEBACiAJCUNEOUQ4MjdDMUM3QkIyRUQwMDZGRjA2NiAvKiBjdiAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0IxMDMzOUQyNTQ5
NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLywKKwkJCQk3QjEwMzM5QTI1
NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLywKKwkJCQk3
QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8s
CiAJCQkJQ0QyN0FFNEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCAqLywKIAkJCQlDRDI3QUU0RjIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5tbSAqLywKIAkJCQkwNzQ2RDMwQzIxNDZFQTM4MDAzRERGODQgLyogSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVC5oICovLAogCQkJCTA3NDZEMzBBMjE0NkVBMzcwMDNEREY4NCAvKiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tICovLAogCQkJCUNEN0QzMzQxMUM3QTEyM0YwMDA0MTI5MyAvKiBQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcCAqLywKIAkJCQlDRDdEMzM0MjFDN0ExMjNGMDAwNDEy
OTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oICovLAotCQkJCUNEOUQ4Mjc3MUM3QjhFRTEw
MDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5jcHAgKi8sCi0JCQkJQ0Q5RDgyNzgxQzdC
OEVFMTAwNkZGMDY2IC8qIFZpZGVvVGV4dHVyZUNvcGllckNWLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGN2OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxODg0LDYgKzMxODg3LDgg
QEAKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250ZXh0R0wuaCBp
biBIZWFkZXJzICovLAogCQkJCTdCQjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzMzMEEwMjFERjhG
QUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JCMzRBNDgyNTM3NzZDQTAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5QzdCOUZDMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDc5Nyw3ICsz
NDgwMiw2IEBACiAJCQkJQ0RFODNEQjIxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tR
dWFsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzUwMzNBODI1MkJEMzY4MDBGNzBDRTMgLyog
VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzU3QjEz
RTIxNEFFNzk5MDA3OTRCMEQgLyogVmlkZW9QcmVzZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUNE
OUQ4MjdBMUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RDOTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNvZnRM
aW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGMwMzJlMDRiMWRi
ZDhiNDM2YTRhMmI4ODQ0MGYzNDY2NTc5ZDU1MjguLjAwN2M5M2MxMGQxN2Y2ODJjMmE1ODZiZjcx
MDExOWFhZWNjMTRlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTUsNiArNTUsMTAgQEAgY2xhc3MgSG9zdFdp
bmRvdzsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW1hZ2VEYXRhOwogCisjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsK
KyNlbmRpZgorCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBSZWZDb3VudGVkPEdy
YXBoaWNzQ29udGV4dEdMPiB7CiBwdWJsaWM6CiAgICAgZW51bSB7CkBAIC03NzgsNiArNzgyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgRE9NU291cmNlTm9uZSwKICAgICB9OwogCisgICAgZW51bSBj
bGFzcyBGbGlwWSA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVzCisgICAgfTsKKwog
ICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9y
bVRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgPSAwOwpAQCAtMTI4Niw2ICsxMjk1LDExIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpID0gMDsKIAorI2lmIEVOQUJMRShWSURF
TykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICAvLyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1Yg
aW50ZXJhY3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudC4KKyAgICB2aXJ0dWFs
IEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9IDA7CisjZW5kaWYKKwogI2lmICFVU0UoQU5H
TEUpCiAgICAgLy8gSGVscGVyIHRvIHRleEltYWdlMkQgd2l0aCBwaXhlbD09MCBjYXNlOiBwaXhl
bHMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgbm8gR0wgZXJy
b3IgaXMgc3ludGhlc2l6ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4
IGQyNmQ0ZWY4MWU2YjMzNDM3YzExNTNlODhlYjMxOTYwZmI4NzdhN2YuLjRjMjI0MjIxNTgxNzY2
YTdjNGFlN2E2ZTY3ZjdjZTZlNGJhZjFlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0
ZS5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgiCisjZW5kaWYKKwogLy8gU2tpcCB0
aGUgaW5jbHVzaW9uIG9mIEFOR0xFJ3MgZXhwbGljaXQgY29udGV4dCBlbnRyeSBwb2ludHMgZm9y
IG5vdy4KICNkZWZpbmUgR0xfQU5HTEVfZXhwbGljaXRfY29udGV4dAogI2RlZmluZSBHTF9BTkdM
RV9leHBsaWNpdF9jb250ZXh0X2dsZXMxCkBAIC0yNTg1LDYgKzI1ODksMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLAogICAgIFVOVVNFRF9QQVJBTShkc3RPZmZzZXQpOwogfQogCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NDb250ZXh0R0xDViogR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQoreworICAgIGlmICghbV9jdikKKyAgICAgICAg
bV9jdiA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFPigqdGhpcyk7CisgICAg
cmV0dXJuIG1fY3YuZ2V0KCk7Cit9CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQ
SElDU19DT05URVhUX0dMKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXgg
MjZiM2Q3OGZlMWIwY2U2ZDQ3NmQyYTVlNzM4NzVlMzkwZTNlZGU4My4uNzk1ODMwN2VkODFhZWVl
OTc1ZDgxMzRhOGM4YTgxYjQ4MGE0Mjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjAs
NyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTY0LDcg
KzY0LDYgQEAgY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXllck1h
bmFnZXJPYmpDOwotY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1Y7CiBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CiAKQEAgLTM0
NSw3ICszNDQsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBt
X2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPiBtX2ltYWdlUm90YXRp
b25TZXNzaW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92
aWRlb1RleHR1cmVDb3BpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAKICAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTliY2RmZDFl
YjQwYzYyMDk5NGQ1YTRkNDQ1MjZkYjNjYTQ4YzQ2OS4uMDc4ZWJiYTQyOGQ3M2Y3MmIxZDg0ZjY1
YzYxMDQzZDM4ZDg2NTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC00Miw2ICs0Miw3
IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dEdMQ1YuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW1wb3J0
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAjaW1wb3J0ICJJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkYuaCIKQEAgLTYwLDcgKzYxLDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGlu
Zy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQy5oIgotI2ltcG9ydCAiVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCIKICNp
bXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgpAQCAtMjMz
MywxMyArMjMzMywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIGlmICghbV9sYXN0
UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCB3aWR0aCA9
IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7Ci0gICAgc2l6
ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOwotCi0gICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7
Ci0KLSAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1U
ZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0
dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBw
cmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CisgICAgYXV0byBjb250ZXh0Q1YgPSBjb250ZXh0LT5h
c0NWKCk7CisgICAgaWYgKCFjb250ZXh0Q1YpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBV
TlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7CisgICAgQVNTRVJUX1VOVVNFRChvdXRw
dXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7
CisgICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSk7CiB9CiAKIFJlZlB0
cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IGEwYWY5
Yjg3NGNhZTgyYWJkM2Y4MDkxMGY2YmEyOWQ5ZTM5NGI1MDcuLjE2MGQ1ZjVjYWVjODViMTJjMzU5
ZDM2M2UzMzc2YjdjNzFkMTNjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC01Niw3
ICs1Niw2IEBAIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWOwogY2xhc3MgUGxhdGZvcm1DbG9ja0NNOwogY2xhc3MgVmlkZW9MYXll
ck1hbmFnZXJPYmpDOwotY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1Y7CiBjbGFzcyBXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb247CiAKIApAQCAtMzIzLDcgKzMyMiw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
bGxSZW5kZXJlcnNIYXZlQXZhaWxhYmxlU2FtcGxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Zp
c2libGUgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJD
Vj4gbV92aWRlb1RleHR1cmVDb3BpZXI7CiAgICAgUmV0YWluUHRyPENWT3BlbkdMVGV4dHVyZVJl
Zj4gbV9sYXN0VGV4dHVyZTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQog
ICAgIFJlZlB0cjxNZWRpYVBsYXliYWNrVGFyZ2V0PiBtX3BsYXliYWNrVGFyZ2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcwOGQzMWIyZTk0N2JlMzAyZjEyNjg2YTgxOTZhMDNk
YWYxNDNkMDEuLmYyODBkZThmYmFmNTc0Y2I3N2VkYzc0ZDc4NDA5MjQ1MjQ0MTAzZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxNCBAQAogI2ltcG9ydCAiQVZT
dHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMQ1YuaCIKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
LmgiCiAjaW1wb3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlRleHRUcmFja1JlcHJlc2VudGF0aW9uLmgi
CiAjaW1wb3J0ICJWaWRlb0xheWVyTWFuYWdlck9iakMuaCIKLSNpbXBvcnQgIlZpZGVvVGV4dHVy
ZUNvcGllckNWLmgiCiAjaW1wb3J0ICJXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCIKICNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Lmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZU
aW1lLmg+CkBAIC02NDYsMTQgKzY0NywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAg
ICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLQotICAgIHNpemVfdCB3aWR0aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQ
aXhlbEJ1ZmZlci5nZXQoKSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRI
ZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwotCi0gICAgaWYgKCFtX3ZpZGVvVGV4dHVy
ZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVv
VGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7Ci0KLSAgICByZXR1cm4gbV92aWRlb1RleHR1cmVD
b3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CisgICAg
YXV0byBjb250ZXh0Q1YgPSBjb250ZXh0LT5hc0NWKCk7CisgICAgaWYgKCFjb250ZXh0Q1YpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBo
YSk7CisgICAgQVNTRVJUX1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7CisgICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBp
eGVsQnVmZmVyVG9UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJl
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0xD
Vjo6RmxpcFkoZmxpcFkpKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggYTJhYmM4NzIyMThkMjc2ODczMGVhMDNh
YThjZWE3YzBlYzkzMzVlNy4uYmQwZjkzZTIwNGJkZDhkOTJhNDJhZGQ4OTk2ZGQ0ZmJlZjlhZDVl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC00Niw2
ICs0NiwxMCBAQAogI2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xDVi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEFTU0VS
VF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9HcmFwaGljc0NvbnRleHRHTENWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxMDU5NjZiOTljOGU5YWI1
Y2Y0MTc2YjQ3NmNmZmM5ZDE3ZDMyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1YuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFWRk9VTkRB
VElPTikKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCisKK3R5cGVkZWYgc3RydWN0
IF9fQ1ZCdWZmZXIqIENWUGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gSW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggQ1Ygb2JqZWN0cyBhbmQgR3JhcGhpY3NDb250
ZXh0R0wuCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5HcmFwaGljc0NvbnRleHRHTENWKCkgPSBkZWZhdWx0OworCisgICAgdXNpbmcgRmxpcFkgPSBH
cmFwaGljc0NvbnRleHRHTDo6RmxpcFk7CisgICAgLy8gQ29waWVzIENWIHBpeGVsIGJ1ZmZlciB0
byBHcmFwaGljc0NvbnRleHRHTCBURVhUVVJFXzJEIHRleHR1cmUgb2YgdGhlIHNhbWUgc2l6ZSBh
cyB0aGUgcGl4ZWwgYnVmZmVyLgorICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgorICAg
IHZpcnR1YWwgYm9vbCBjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiwg
UGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSkgPSAw
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZkNTAzYmNiYTc1YWZiOGM1MDc5MGIxYzI0ZTI4MjgzNmM1NWQ5NDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwCkBAIC0wLDAgKzEsNjk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCIKKwor
I2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJGb3VyQ0MuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAwCisj
aW5jbHVkZSA8QU5HTEUvZWdsLmg+IC8vIE5PTElOVAorI2luY2x1ZGUgPEFOR0xFL2VnbGV4dC5o
PgorI2luY2x1ZGUgPEFOR0xFL2VnbGV4dF9hbmdsZS5oPgorI2luY2x1ZGUgPEFOR0xFL2VudHJ5
X3BvaW50c19lZ2wuaD4KKyNpbmNsdWRlIDxBTkdMRS9lbnRyeV9wb2ludHNfZ2xlc18yXzBfYXV0
b2dlbi5oPgorLy8gU2tpcCB0aGUgaW5jbHVzaW9uIG9mIEFOR0xFJ3MgZXhwbGljaXQgY29udGV4
dCBlbnRyeSBwb2ludHMgZm9yIG5vdy4KKyNkZWZpbmUgR0xfQU5HTEVfZXhwbGljaXRfY29udGV4
dAorI2luY2x1ZGUgPEFOR0xFL2dsMmV4dC5oPgorI2luY2x1ZGUgPEFOR0xFL2dsMmV4dF9hbmds
ZS5oPgorCisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgY29uc3RleHByIGF1dG8gc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlMkQg
eworICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyIKKyAgICAidW5pZm9ybSB2ZWMyIHVf
eVRleHR1cmVTaXplOyIKKyAgICAidW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6ZTsiCisgICAg
InVuaWZvcm0gaW50IHVfZmxpcFk7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3Jk
aW5hdGU7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOyIKKyAgICAi
dm9pZCBtYWluKCkiCisgICAgInsiCisgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3Np
dGlvbiwgMCwgMS4wKTsiCisgICAgIiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlvbiA9IGFfcG9z
aXRpb24gKiAuNSArIC41OyIKKyAgICAiICAgIGlmICh1X2ZsaXBZID09IDEpIgorICAgICIgICAg
ICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0aW9uLnk7Igor
ICAgICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRpb247IgorICAg
ICIgICAgdl91dlRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKKyAgICAi
fSJfcworfTsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNfeXV2VmVydGV4U2hhZGVyVGV4dHVy
ZVJlY3RhbmdsZSB7CisgICAgImF0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247IgorICAgICJ1bmlm
b3JtIHZlYzIgdV95VGV4dHVyZVNpemU7IgorICAgICJ1bmlmb3JtIHZlYzIgdV91dlRleHR1cmVT
aXplOyIKKyAgICAidW5pZm9ybSBpbnQgdV9mbGlwWTsiCisgICAgInZhcnlpbmcgdmVjMiB2X3lU
ZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5h
dGU7IgorICAgICJ2b2lkIG1haW4oKSIKKyAgICAieyIKKyAgICAiICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChhX3Bvc2l0aW9uLCAwLCAxLjApOyIKKyAgICAiICAgIHZlYzIgbm9ybWFsaXplZFBvc2l0
aW9uID0gYV9wb3NpdGlvbiAqIC41ICsgLjU7IgorICAgICIgICAgaWYgKHVfZmxpcFkgPT0gMSki
CisgICAgIiAgICAgICAgbm9ybWFsaXplZFBvc2l0aW9uLnkgPSAxLjAgLSBub3JtYWxpemVkUG9z
aXRpb24ueTsiCisgICAgIiAgICB2X3lUZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3Np
dGlvbiAqIHVfeVRleHR1cmVTaXplOyIKKyAgICAiICAgIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSA9
IG5vcm1hbGl6ZWRQb3NpdGlvbiAqIHVfdXZUZXh0dXJlU2l6ZTsiCisgICAgIn0iX3MKK307CisK
K2NvbnN0ZXhwciBhdXRvIHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlMkQgeworICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsiCisgICAgInVuaWZvcm0gc2FtcGxlcjJEIHVfeVRleHR1cmU7
IgorICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3V2VGV4dHVyZTsiCisgICAgInVuaWZvcm0gbWF0
NCB1X2NvbG9yTWF0cml4OyIKKyAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRl
OyIKKyAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZvaWQg
bWFpbigpIgorICAgICJ7IgorICAgICIgICAgdmVjNCB5dXY7IgorICAgICIgICAgeXV2LnIgPSB0
ZXh0dXJlMkQodV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7IgorICAgICIgICAg
eXV2LmdiID0gdGV4dHVyZTJEKHVfdXZUZXh0dXJlLCB2X3V2VGV4dHVyZUNvb3JkaW5hdGUpLnJn
OyIKKyAgICAiICAgIHl1di5hID0gMS4wOyIKKyAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHl1diAq
IHVfY29sb3JNYXRyaXg7IgorICAgICJ9Il9zCit9OworCitzdGF0aWMgY29uc3RleHByIGF1dG8g
c195dXZGcmFnbWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUgeworICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsiCisgICAgInVuaWZvcm0gc2FtcGxlcjJEUmVjdCB1X3lUZXh0dXJlOyIKKyAg
ICAidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHVfdXZUZXh0dXJlOyIKKyAgICAidW5pZm9ybSBtYXQ0
IHVfY29sb3JNYXRyaXg7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5hdGU7
IgorICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOyIKKyAgICAidm9pZCBt
YWluKCkiCisgICAgInsiCisgICAgIiAgICB2ZWM0IHl1djsiCisgICAgIiAgICB5dXYuciA9IHRl
eHR1cmUyRFJlY3QodV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7IgorICAgICIg
ICAgeXV2LmdiID0gdGV4dHVyZTJEUmVjdCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29yZGlu
YXRlKS5yZzsiCisgICAgIiAgICB5dXYuYSA9IDEuMDsiCisgICAgIiAgICBnbF9GcmFnQ29sb3Ig
PSB5dXYgKiB1X2NvbG9yTWF0cml4OyIKKyAgICAifSJfcworfTsKKworZW51bSBjbGFzcyBQaXhl
bFJhbmdlIHsKKyAgICBVbmtub3duLAorICAgIFZpZGVvLAorICAgIEZ1bGwsCit9OworCitlbnVt
IGNsYXNzIFRyYW5zZmVyRnVuY3Rpb25DViB7CisgICAgVW5rbm93biwKKyAgICBrSVRVX1JfNzA5
XzIsCisgICAga0lUVV9SXzYwMV80LAorICAgIGtTTVBURV8yNDBNXzE5OTUsCisgICAga0RDSV9Q
MywKKyAgICBrUDNfRDY1LAorICAgIGtJVFVfUl8yMDIwLAorfTsKKworc3RhdGljIFBpeGVsUmFu
Z2UgcGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChPU1R5cGUgcGl4ZWxGb3JtYXQpCit7CisgICAg
c3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQ0NDRB
WXBDYkNyODoKKyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDQ0QVlwQ2JDcjE2OgorICAg
IGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcl80QV84QmlQbGFuYXI6CisgICAgY2Fz
ZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZToKKyAgICBj
YXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZToKKyAg
ICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZToK
KyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDRZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5n
ZToKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFuZ2U6OlZpZGVvOworICAgIGNhc2Uga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFuYXJGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhlbEZv
cm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOgorICAgIGNhc2Uga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMllwQ2JDcjhGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5
cGVfQVJHQjIxMDEwMTBMRVBhY2tlZDoKKyAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZ
cENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOgorICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQy
MllwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U6CisgICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDQ0WXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZToKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFuZ2U6
OkZ1bGw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFBpeGVsUmFuZ2U6OlVua25vd247
CisgICAgfQorfQorCitzdGF0aWMgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb25G
cm9tU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICBpZiAoIXN0cmluZyB8fCBDRkdl
dFR5cGVJRChzdHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBU
cmFuc2ZlckZ1bmN0aW9uQ1Y6OlVua25vd247CisgICAgaWYgKENGRXF1YWwoc3RyaW5nLCBrQ1ZJ
bWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yKSkKKyAgICAgICAgcmV0dXJuIFRyYW5z
ZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzcwOV8yOworICAgIGlmIChDRkVxdWFsKHN0cmluZywga0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl82MDFfNCkpCisgICAgICAgIHJldHVybiBUcmFu
c2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl82MDFfNDsKKyAgICBpZiAoQ0ZFcXVhbChzdHJpbmcsIGtD
VkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfU01QVEVfMjQwTV8xOTk1KSkKKyAgICAgICAgcmV0dXJu
IFRyYW5zZmVyRnVuY3Rpb25DVjo6a1NNUFRFXzI0ME1fMTk5NTsKKyAgICBpZiAoY2FuTG9hZF9D
b3JlVmlkZW9fa0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9EQ0lfUDMoKSAmJiBDRkVxdWFsKHN0
cmluZywga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9EQ0lfUDMpKQorICAgICAgICByZXR1cm4g
VHJhbnNmZXJGdW5jdGlvbkNWOjprRENJX1AzOworICAgIGlmIChjYW5Mb2FkX0NvcmVWaWRlb19r
Q1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X1AzX0Q2NSgpICYmIENGRXF1YWwoc3RyaW5nLCBrQ1ZJ
bWFnZUJ1ZmZlcllDYkNyTWF0cml4X1AzX0Q2NSkpCisgICAgICAgIHJldHVybiBUcmFuc2ZlckZ1
bmN0aW9uQ1Y6OmtQM19ENjU7CisgICAgaWYgKGNhbkxvYWRfQ29yZVZpZGVvX2tDVkltYWdlQnVm
ZmVyWUNiQ3JNYXRyaXhfSVRVX1JfMjAyMCgpICYmIENGRXF1YWwoc3RyaW5nLCBrQ1ZJbWFnZUJ1
ZmZlcllDYkNyTWF0cml4X0lUVV9SXzIwMjApKQorICAgICAgICByZXR1cm4gVHJhbnNmZXJGdW5j
dGlvbkNWOjprSVRVX1JfMjAyMDsKKyAgICByZXR1cm4gVHJhbnNmZXJGdW5jdGlvbkNWOjpVbmtu
b3duOworfQorCitzdHJ1Y3QgR0xmbG9hdENvbG9yIHsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICBHTGZsb2F0IHI7CisgICAgICAgICAgICBHTGZsb2F0IGc7Cisg
ICAgICAgICAgICBHTGZsb2F0IGI7CisgICAgICAgIH0gcmdiOworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgR0xmbG9hdCB5OworICAgICAgICAgICAgR0xmbG9hdCBjYjsKKyAgICAgICAg
ICAgIEdMZmxvYXQgY3I7CisgICAgICAgIH0geWNiY3I7CisgICAgfTsKKworICAgIGNvbnN0ZXhw
ciBHTGZsb2F0Q29sb3IoR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYikKKyAgICAgICAg
OiByZ2IgeyByLCBnLCBiIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEdMZmxvYXRD
b2xvcihpbnQgciwgaW50IGcsIGludCBiLCBHTGZsb2F0IHNjYWxlKQorICAgICAgICA6IHJnYiB7
IHIgLyBzY2FsZSwgZyAvIHNjYWxlLCBiIC8gc2NhbGV9CisgICAgeworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0xmbG9hdCBhYnMoR0xmbG9hdCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB2YWx1ZSA+PSAwID8gdmFsdWUgOiAtdmFsdWU7CisgICAgfQorCisgICAgY29uc3Rl
eHByIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBHTGZsb2F0Q29sb3ImIGNvbG9y
LCBHTGZsb2F0IG1heERlbHRhKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGFicyhyZ2Iu
ciAtIGNvbG9yLnJnYi5yKSA8IGFicyhtYXhEZWx0YSkKKyAgICAgICAgICAgICYmIGFicyhyZ2Iu
ZyAtIGNvbG9yLnJnYi5nKSA8IGFicyhtYXhEZWx0YSkKKyAgICAgICAgICAgICYmIGFicyhyZ2Iu
YiAtIGNvbG9yLnJnYi5iKSA8IGFicyhtYXhEZWx0YSk7CisgICAgfQorfTsKKworc3RydWN0IEdM
ZmxvYXRDb2xvcnMgeworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGJsYWNrICAg
ezAsIDAsIDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHdoaXRlICAgezEs
IDEsIDF9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHJlZCAgICAgezEsIDAs
IDB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGdyZWVuICAgezAsIDEsIDB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGJsdWUgICAgezAsIDAsIDF9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIGN5YW4gICAgezAsIDEsIDF9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIG1hZ2VudGEgezEsIDAsIDF9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgR0xmbG9hdENvbG9yIHllbGxvdyAgezEsIDEsIDB9OworfTsKKworc3Ry
dWN0IFlDYkNyTWF0cml4IHsKKyAgICB1bmlvbiB7CisgICAgICAgIEdMZmxvYXQgcm93c1s0XVs0
XTsKKyAgICAgICAgR0xmbG9hdCBkYXRhWzE2XTsKKyAgICB9OworCisgICAgY29uc3RleHByIFlD
YkNyTWF0cml4KFBpeGVsUmFuZ2UsIEdMZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNv
ZWZmaWNpZW50KTsKKworICAgIG9wZXJhdG9yIFZlY3RvcjxHTGZsb2F0PigpIGNvbnN0CisgICAg
eworICAgICAgICBWZWN0b3I8R0xmbG9hdD4gdmVjdG9yOworICAgICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIDE2KTsKKyAgICAgICAgcmV0dXJuIHZlY3RvcjsKKyAgICB9CisKKyAgICBjb25zdGV4
cHIgR0xmbG9hdENvbG9yIG9wZXJhdG9yKihjb25zdCBHTGZsb2F0Q29sb3ImKSBjb25zdDsKK307
CisKK2NvbnN0ZXhwciBZQ2JDck1hdHJpeDo6WUNiQ3JNYXRyaXgoUGl4ZWxSYW5nZSByYW5nZSwg
R0xmbG9hdCBjYkNvZWZmaWNpZW50LCBHTGZsb2F0IGNyQ29lZmZpY2llbnQpCisgICAgOiByb3dz
IHsgfQoreworICAgIC8vIFRoZSBjb252ZXJzaW9uIGZyb20gWUNiQ3IgLT4gUkdCIGdlbmVyYWxs
eSB0YWtlcyB0aGUgZm9ybToKKyAgICAvLyBZID0gS3IgKiBSICsgS2cgKiBHICsgS2IgKiBCCisg
ICAgLy8gQ2IgPSAoQiAtIFkpIC8gKDIgKiAoMSAtIEtiKSkKKyAgICAvLyBDciA9IChSIC0gWSkg
LyAoMiAqICgxIC0gS3IpKQorICAgIC8vIFdoZXJlIHRoZSB2YWx1ZXMgb2YgS2IgYW5kIEtyIGFy
ZSBkZWZpbmVkIGluIGEgc3BlY2lmaWNhdGlvbiBhbmQgS2cgaXMgZGVyaXZlZCBmcm9tOiBLciAr
IEtnICsgS2IgPSAxCisgICAgLy8KKyAgICAvLyBTb2x2aW5nIHRoZSBhYm92ZSBlcXVhdGlvbnMg
Zm9yIFIsIEIsIGFuZCBHIGRlcml2ZXMgdGhlIGZvbGxvd2luZzoKKyAgICAvLyBSID0gWSArICgy
ICogKDEgLSBLcikpICogQ3IKKyAgICAvLyBCID0gWSArICgyICogKDEgLSBLYikpICogQ2IKKyAg
ICAvLyBHID0gWSAtICgyICogKDEgLSBLYikpICogKEtiIC8gS2cpICogQ2IgLSAoKDEgLSBLcikg
KiAyKSAqIChLciAvIEtnKSAqIENyCisgICAgLy8KKyAgICAvLyBXaGVuIHRoZSBjb2xvciB2YWx1
ZXMgYXJlIFZpZGVvIHJhbmdlLCBZIGhhcyBhIHJhbmdlIG9mIFsxNiwgMjM1XSB3aXRoIGEgd2lk
dGggb2YgMjE5LCBhbmQgQ2IgJiBDciBoYXZlCisgICAgLy8gYSByYW5nZSBvZiBbMTYsIDI0MF0g
d2l0aCBhIHdpZHRoIG9mIDIyNC4gV2hlbiB0aGUgY29sb3IgdmFsdWVzIGFyZSBGdWxsIHJhbmdl
LCBZLCBDYiwgYW5kIENyIGFsbCBoYXZlCisgICAgLy8gYSByYW5nZSBvZiBbMCwgMjU1XSB3aXRo
IGEgd2lkdGggb2YgMjU2LgorCisgICAgR0xmbG9hdCBjZ0NvZWZmaWNpZW50ID0gMSAtIGNiQ29l
ZmZpY2llbnQgLSBjckNvZWZmaWNpZW50OworICAgIEdMZmxvYXQgeVNjYWxpbmdGYWN0b3IgPSBy
YW5nZSA9PSBQaXhlbFJhbmdlOjpGdWxsID8gMS5mIDogMjU1LmYgLyAyMTkuZjsKKyAgICBHTGZs
b2F0IGNiY3JTY2FsaW5nRmFjdG9yID0gcmFuZ2UgPT0gUGl4ZWxSYW5nZTo6RnVsbCA/IDEuZiA6
IDI1NS5mIC8gMjI0LmY7CisKKyAgICByb3dzWzBdWzBdID0geVNjYWxpbmdGYWN0b3I7CisgICAg
cm93c1swXVsxXSA9IDA7CisgICAgcm93c1swXVsyXSA9IGNiY3JTY2FsaW5nRmFjdG9yICogMiAq
ICgxIC0gY3JDb2VmZmljaWVudCk7CisgICAgcm93c1swXVszXSA9IDA7CisKKyAgICByb3dzWzFd
WzBdID0geVNjYWxpbmdGYWN0b3I7CisgICAgcm93c1sxXVsxXSA9IC1jYmNyU2NhbGluZ0ZhY3Rv
ciAqIDIgKiAoMSAtIGNiQ29lZmZpY2llbnQpICogKGNiQ29lZmZpY2llbnQgLyBjZ0NvZWZmaWNp
ZW50KTsKKyAgICByb3dzWzFdWzJdID0gLWNiY3JTY2FsaW5nRmFjdG9yICogMiAqICgxIC0gY3JD
b2VmZmljaWVudCkgKiAoY3JDb2VmZmljaWVudCAvIGNnQ29lZmZpY2llbnQpOworICAgIHJvd3Nb
MV1bM10gPSAwOworCisgICAgcm93c1syXVswXSA9IHlTY2FsaW5nRmFjdG9yOworICAgIHJvd3Nb
Ml1bMV0gPSBjYmNyU2NhbGluZ0ZhY3RvciAqIDIgKiAoMSAtIGNiQ29lZmZpY2llbnQpOworICAg
IHJvd3NbMl1bMl0gPSAwOworICAgIHJvd3NbMl1bM10gPSAwOworCisgICAgcm93c1szXVswXSA9
IDA7CisgICAgcm93c1szXVsxXSA9IDA7CisgICAgcm93c1szXVsyXSA9IDA7CisgICAgcm93c1sz
XVszXSA9IDE7CisKKyAgICAvLyBDb25maWd1cmUgdGhlIGZpbmFsIGNvbHVtbiBvZiB0aGUgbWF0
cml4IHRvIGNvbnZlcnQgQ2IgYW5kIENyIHRvIFstMTI4LCAxMjhdCisgICAgLy8gYW5kLCBpbiB0
aGUgY2FzZSBvZiB2aWRlby1yYW5nZSwgdG8gY29udmVydCBZIHRvIFsxNiwgMjQwXToKKyAgICBm
b3IgKGF1dG8gcm93TnVtYmVyID0gMDsgcm93TnVtYmVyIDwgMzsgKytyb3dOdW1iZXIpIHsKKyAg
ICAgICAgYXV0byYgcm93ID0gcm93c1tyb3dOdW1iZXJdOworICAgICAgICBhdXRvJiB4ID0gcm93
WzBdOworICAgICAgICBhdXRvJiB5ID0gcm93WzFdOworICAgICAgICBhdXRvJiB6ID0gcm93WzJd
OworICAgICAgICBhdXRvJiB3ID0gcm93WzNdOworCisgICAgICAgIHcgLT0gKHkgKyB6KSAqIDEy
OCAvIDI1NTsKKyAgICAgICAgaWYgKHJhbmdlID09IFBpeGVsUmFuZ2U6OlZpZGVvKQorICAgICAg
ICAgICAgdyAtPSB4ICogMTYgLyAyNTU7CisgICAgfQorfQorCitjb25zdGV4cHIgR0xmbG9hdENv
bG9yIFlDYkNyTWF0cml4OjpvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvcikgY29u
c3QKK3sKKyAgICByZXR1cm4gR0xmbG9hdENvbG9yKAorICAgICAgICByb3dzWzBdWzBdICogY29s
b3IucmdiLnIgKyByb3dzWzBdWzFdICogY29sb3IucmdiLmcgKyByb3dzWzBdWzJdICogY29sb3Iu
cmdiLmIgKyByb3dzWzBdWzNdLAorICAgICAgICByb3dzWzFdWzBdICogY29sb3IucmdiLnIgKyBy
b3dzWzFdWzFdICogY29sb3IucmdiLmcgKyByb3dzWzFdWzJdICogY29sb3IucmdiLmIgKyByb3dz
WzFdWzNdLAorICAgICAgICByb3dzWzJdWzBdICogY29sb3IucmdiLnIgKyByb3dzWzJdWzFdICog
Y29sb3IucmdiLmcgKyByb3dzWzJdWzJdICogY29sb3IucmdiLmIgKyByb3dzWzJdWzNdCisgICAg
KTsKK30KKworc3RhdGljIGNvbnN0IFZlY3RvcjxHTGZsb2F0PiBZQ2JDclRvUkdCTWF0cml4Rm9y
UmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKFBpeGVsUmFuZ2UgcmFuZ2UsIFRyYW5zZmVyRnVuY3Rp
b25DViB0cmFuc2ZlckZ1bmN0aW9uKQoreworICAgIHVzaW5nIE1hcEtleSA9IHN0ZDo6cGFpcjxQ
aXhlbFJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y+OworICAgIHVzaW5nIE1hdHJpeE1hcCA9IFN0
ZE1hcDxNYXBLZXksIFZlY3RvcjxHTGZsb2F0Pj47CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8TWF0cml4TWFwPiBtYXRyaWNlczsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKworICAgIC8vIE1hdHJpY2VzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudHMg
aW4gdGhlIElUVSBSLjYwMSByZXYgNCBzcGVjaWZpY2F0aW9uCisgICAgLy8gaHR0cHM6Ly93d3cu
aXR1LmludC9yZWMvUi1SRUMtQlQuNjAxCisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJp
eCByNjAxVmlkZW9NYXRyaXggeyBQaXhlbFJhbmdlOjpWaWRlbywgMC4xMTRmLCAwLjI5OWYgfTsK
KyAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0cml4IHI2MDFGdWxsTWF0cml4IHsgUGl4ZWxS
YW5nZTo6RnVsbCwgMC4xMTRmLCAwLjI5OWYgfTsKKworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFW
aWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGlt
YXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJyLjYx
MCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOworICAgIHN0YXRp
Y19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzUsIDEyOCwgMTI4LCAy
NTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEuNWYg
LyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xv
ciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcig4
MSwgIDkwLCAgMjQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6
OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJv
ZHVjZSByZWQgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBH
TGZsb2F0Q29sb3IoMTQ1LCA1NCwgIDM0LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNjAx
VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNDEsICAyNDAsIDExMCwgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAici42
MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRp
Y19hc3NlcnQoKHI2MDFWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMTAsIDE2LCAgMTQ2LCAy
NTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYg
LyAyNTUuZiksICJyLjYxMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29s
b3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3Io
MTA2LCAyMDIsIDIyMiwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3Jz
OjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgbWFnZW50YSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFWaWRlb01hdHJp
eCAqIEdMZmxvYXRDb2xvcigxNzAsIDE2NiwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVh
bFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4sICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCB2aWRlbyBt
YXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAgICBzdGF0aWNfYXNzZXJ0
KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigwLCAgIDEyOCwgMTI4LCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiks
ICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAg
c3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEy
OCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAx
LjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBj
b2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9y
KDc2LCAgODUsICAyNTUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9y
czo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgcmVkIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBH
TGZsb2F0Q29sb3IoMTUwLCA0NCwgIDIxLCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXgg
ZG9lcyBub3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI2MDFG
dWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI5LCAgMjU1LCAxMDcsIDI1NSkpLmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEw
IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19h
c3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIyNiwgMCwgICAxNDksIDI1NSkp
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1
NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7
CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMTA1LCAy
MTIsIDIzNSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdl
bnRhLCAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBt
YWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjYwMUZ1bGxNYXRyaXggKiBHTGZs
b2F0Q29sb3IoMTc5LCAxNzEsIDEsICAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZs
b2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgZnVsbCBtYXRyaXggZG9l
cyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAgICAvLyBNYXRyaWNlcyBhcmUgZGVyaXZl
ZCBmcm9tIHRoZSBjb21wb25lbnRzIGluIHRoZSBJVFUgUi43MDkgcmV2IDIgc3BlY2lmaWNhdGlv
bgorICAgIC8vIGh0dHBzOi8vd3d3Lml0dS5pbnQvcmVjL1ItUkVDLUJULjcwOS0yLTE5OTUxMC1T
CisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCByNzA5VmlkZW9NYXRyaXggeyBQaXhl
bFJhbmdlOjpWaWRlbywgMC4wNzIyLCAwLjIxMjYgfTsKKyAgICBjb25zdGV4cHIgc3RhdGljIFlD
YkNyTWF0cml4IHI3MDlGdWxsTWF0cml4IHsgUGl4ZWxSYW5nZTo6RnVsbCwgMC4wNzIyLCAwLjIx
MjYgfTsKKworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xv
cigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBub3Qg
cHJvZHVjZSBibGFjayBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJp
eCAqIEdMZmxvYXRDb2xvcigyMzUsIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVh
bFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBt
YXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQo
KHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcig2MywgIDEwMiwgMjQwLCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiks
ICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSByZWQgY29sb3IiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTczLCA0MiwgIDI2
LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAx
LjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4g
Y29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29s
b3IoMzIsICAyNDAsIDExOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29s
b3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJp
eCAqIEdMZmxvYXRDb2xvcigyMTksIDE2LCAgMTM4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVh
bFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBt
YXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNzgsICAyMTQsIDIzMCwgMjU1KSkuaXNB
cHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYp
LCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOwor
ICAgIHN0YXRpY19hc3NlcnQoKHI3MDlWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxODgsIDE1
NCwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4s
ICAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBj
eWFuIGNvbG9yIik7CisKKyAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdMZmxv
YXRDb2xvcigwLCAgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxv
YXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJpeCBkb2Vz
IG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjcwOUZ1bGxN
YXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAici43MDkgZnVs
bCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3Nl
cnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDU0LCAgOTksICAyNTYsIDI1NSkpLmlz
QXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5m
KSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7CisgICAg
c3RhdGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMTgyLCAzMCwgIDEy
LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAx
LjVmIC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBj
b2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9y
KDE4LCAgMjU2LCAxMTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9y
czo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICog
R0xmbG9hdENvbG9yKDIzNywgMSwgICAxNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgocjcw
OUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoNzMsICAyMjYsIDI0NCwgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAici43
MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3Rh
dGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjAxLCAxNTcsIDEsICAg
MjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVm
IC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9y
Iik7CisKKyAgICAvLyBNYXRyaWNlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnRzIGlu
IHRoZSBJVFUtUiBCVC4yMDIwLTIgc3BlY2lmaWNhdGlvbgorICAgIC8vIGh0dHBzOi8vd3d3Lml0
dS5pbnQvcmVjL1ItUkVDLUJULjIwMjAKKyAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0cml4
IGJ0MjAyMFZpZGVvTWF0cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMDU5MywgMC4yNjI3IH07
CisgICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCBidDIwMjBGdWxsTWF0cml4IHsgUGl4
ZWxSYW5nZTo6RnVsbCwgMC4wNTkzLCAwLjI2MjcgfTsKKworICAgIHN0YXRpY19hc3NlcnQoKGJ0
MjAyMFZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE2LCAgMTI4LCAxMjgsIDI1NSkpLmlzQXBw
cm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6YmxhY2ssICAgMS41ZiAvIDI1NS5mKSwg
ImJ0LjIwMjAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmxhY2sgY29sb3IiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KChidDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzUsIDEy
OCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRl
LCAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNl
IHdoaXRlIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBH
TGZsb2F0Q29sb3IoNzQsICA5NywgIDI0MCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRy
aXggZG9lcyBub3QgcHJvZHVjZSByZWQgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIw
MjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNjQsIDQ3LCAgMjUsICAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiksICJi
dC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7CisgICAg
c3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjksICAyNDAs
IDExOSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVlLCAg
ICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBi
bHVlIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZs
b2F0Q29sb3IoMjIyLCAxNiwgIDEzNywgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZs
b2F0Q29sb3JzOjp5ZWxsb3csICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXgg
ZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIw
MjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcig4NywgIDIwOSwgMjMxLCAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6Om1hZ2VudGEsIDEuNWYgLyAyNTUuZiksICJi
dC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KChidDIwMjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNzcsIDE1
OSwgMTYsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4s
ICAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNl
IGN5YW4gY29sb3IiKTsKKworICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1bGxNYXRyaXggKiBH
TGZsb2F0Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCBmdWxsIG1hdHJp
eCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQy
MDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyNTUsIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OndoaXRlLCAgIDEuNWYgLyAyNTUuZiksICJi
dC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDY3LCAgOTIsICAy
NTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6cmVkLCAgICAg
MS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSByZWQg
Y29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENv
bG9yKDE3MywgMzYsICAxMSwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENv
bG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBu
b3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1bGxN
YXRyaXggKiBHTGZsb2F0Q29sb3IoMTUsICAyNTYsIDExOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibHVlLCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCBm
dWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI0MCwgMCwgICAxMzgsIDI1NSkp
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1
NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB5ZWxsb3cgY29sb3Ii
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDgy
LCAgMjIwLCAyNDUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6
bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJv
ZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJp
eCAqIEdMZmxvYXRDb2xvcigxODgsIDE2NCwgMSwgICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVh
bFRvKEdMZmxvYXRDb2xvcnM6OmN5YW4sICAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwg
bWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOworCisgICAgLy8gTWF0cmljZXMg
YXJlIGRlcml2ZWQgZnJvbSB0aGUgY29tcG9uZW50cyBpbiB0aGUgU01QVEUgMjQwTS0xOTk5IHNw
ZWNpZmljYXRpb24KKyAgICAvLyBodHRwOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC83
MjkxNDYxLworICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggc21wdGUyNDBNVmlkZW9N
YXRyaXggeyBQaXhlbFJhbmdlOjpWaWRlbywgMC4wODcsIDAuMjEyIH07CisgICAgY29uc3RleHBy
IHN0YXRpYyBZQ2JDck1hdHJpeCBzbXB0ZTI0ME1GdWxsTWF0cml4IHsgUGl4ZWxSYW5nZTo6RnVs
bCwgMC4wODcsIDAuMjEyIH07CisKKyAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRlb01h
dHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlF
cXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBN
IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7CisgICAgc3RhdGlj
X2Fzc2VydCgoc21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgsIDEy
OCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAx
LjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3
aGl0ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICog
R0xmbG9hdENvbG9yKDYyLCAgMTAyLCAyNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8g
bWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgo
c21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTcwLCA0MiwgIDI4LCAgMjU1KSku
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1
LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBjb2xv
ciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENv
bG9yKDM1LCAgMjQwLCAxMTYsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENv
bG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRv
ZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQw
TVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDIxNiwgMTYsICAxNDAsIDI1NSkpLmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwgIlNN
UFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7Cisg
ICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoODEs
ICAyMTQsIDIyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpt
YWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3Qg
cHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNVmlk
ZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTg5LCAxNTQsIDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0
ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUg
MjQwTSB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9yIik7CisKKyAgICBz
dGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1GdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDAsICAgMTI4
LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6YmxhY2ss
ICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVj
ZSBibGFjayBjb2xvciIpOworICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxs
IG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHdoaXRlIGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2Vy
dCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig1NCwgIDk4LCAgMjU2LCAyNTUp
KS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAy
NTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9y
Iik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xv
cigxNzksIDMwLCAgMTUsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMg
bm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1G
dWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIyLCAgMjU2LCAxMTQsIDI1NSkpLmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRF
IDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibHVlIGNvbG9yIik7CisgICAgc3Rh
dGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMzMsIDEsICAg
MTQyLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywg
IDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
eWVsbG93IGNvbG9yIik7CisgICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAq
IEdMZmxvYXRDb2xvcig3NiwgIDIyNiwgMjQxLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRv
KEdMZmxvYXRDb2xvcnM6Om1hZ2VudGEsIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwg
bWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOworICAgIHN0YXRpY19hc3Nl
cnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjAxLCAxNTgsIDEsICAgMjU1
KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8g
MjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGN5YW4gY29s
b3IiKTsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgbWF0cmlj
ZXMuZ2V0KCkuZW1wbGFjZShNYXBLZXkoUGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVuY3Rp
b25DVjo6a0lUVV9SXzYwMV80KSwgcjYwMVZpZGVvTWF0cml4KTsKKyAgICAgICAgbWF0cmljZXMu
Z2V0KCkuZW1wbGFjZShNYXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlvbkNW
OjprSVRVX1JfNjAxXzQpLCByNjAxRnVsbE1hdHJpeCk7CisgICAgICAgIG1hdHJpY2VzLmdldCgp
LmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OlZpZGVvLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJ
VFVfUl83MDlfMiksIHI3MDlWaWRlb01hdHJpeCk7CisgICAgICAgIG1hdHJpY2VzLmdldCgpLmVt
cGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9S
XzcwOV8yKSwgcjcwOUZ1bGxNYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBsYWNl
KE1hcEtleShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjprSVRVX1JfMjAy
MCksIGJ0MjAyMFZpZGVvTWF0cml4KTsKKyAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFjZShN
YXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlvbkNWOjprSVRVX1JfMjAyMCks
IGJ0MjAyMEZ1bGxNYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBsYWNlKE1hcEtl
eShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjprU01QVEVfMjQwTV8xOTk1
KSwgc21wdGUyNDBNVmlkZW9NYXRyaXgpOworICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBsYWNl
KE1hcEtleShQaXhlbFJhbmdlOjpGdWxsLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtTTVBURV8yNDBN
XzE5OTUpLCBzbXB0ZTI0ME1GdWxsTWF0cml4KTsKKyAgICB9KTsKKworICAgIC8vIFdlIHNob3Vs
ZCBuZXZlciBiZSBhc2tlZCB0byBoYW5kbGUgYSBQaXhlbCBGb3JtYXQgd2hvc2UgcmFuZ2UgdmFs
dWUgaXMgdW5rbm93bi4KKyAgICBBU1NFUlQocmFuZ2UgIT0gUGl4ZWxSYW5nZTo6VW5rbm93bik7
CisgICAgaWYgKHJhbmdlID09IFBpeGVsUmFuZ2U6OlVua25vd24pCisgICAgICAgIHJhbmdlID0g
UGl4ZWxSYW5nZTo6RnVsbDsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtYXRyaWNlcy5nZXQoKS5m
aW5kKHtyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbn0pOworCisgICAgLy8gQXNzdW1lIHVua25vd24g
dHJhbnNmZXIgZnVuY3Rpb25zIGFyZSByLjYwMToKKyAgICBpZiAoaXRlcmF0b3IgPT0gbWF0cmlj
ZXMuZ2V0KCkuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yID0gbWF0cmljZXMuZ2V0KCkuZmluZCh7
cmFuZ2UsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzYwMV80fSk7CisKKyAgICBBU1NFUlQo
aXRlcmF0b3IgIT0gbWF0cmljZXMuZ2V0KCkuZW5kKCkpOworICAgIHJldHVybiBpdGVyYXRvci0+
c2Vjb25kOworfQorCitHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKKyAgICA6IG1fY29udGV4
dChHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlU2hhcmVkKGNvbnRleHQpKQorICAgICwg
bV9mcmFtZWJ1ZmZlcihtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCit7Cit9CisKK0dy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRSgpCit7Cisg
ICAgaWYgKG1feXV2VmVydGV4QnVmZmVyKQorICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZl
cihtX3l1dlZlcnRleEJ1ZmZlcik7CisgICAgaWYgKG1feXV2UHJvZ3JhbSkKKyAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CisgICAgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEU6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKK3sKKyAgICBjb25zdCBib29s
IHVzZVRleHR1cmUyRCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJl
VGFyZ2V0KCkgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQ7CisKKyAgICBQbGF0Zm9y
bUdMT2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdyYXBoaWNz
Q29udGV4dEdMOjpWRVJURVhfU0hBREVSKTsKKyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAgICAg
ICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHNfeXV2VmVydGV4U2hhZGVy
VGV4dHVyZTJEKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZl
cnRleFNoYWRlciwgc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlKTsKKworICAgIG1f
Y29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOworCisgICAgR0NHTGlu
dCBzdGF0dXMgPSAwOworICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYodmVydGV4U2hhZGVyLCBH
cmFwaGljc0NvbnRleHRHTDo6Q09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworICAgIGlmICghc3Rh
dHVzKSB7CisgICAgICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTo6aW5p
dGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoJXApIC0gVmVydGV4IHNoYWRlciBmYWlsZWQgdG8gY29t
cGlsZS4iLCB0aGlzKTsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hh
ZGVyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFBsYXRmb3JtR0xPYmpl
Y3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRl
eHRHTDo6RlJBR01FTlRfU0hBREVSKTsKKyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAgICAgICBt
X2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgc195dXZGcmFnbWVudFNoYWRl
clRleHR1cmUyRCk7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShm
cmFnbWVudFNoYWRlciwgc195dXZGcmFnbWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOworCisg
ICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKKworICAg
IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAgICAgICAg
TE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0
T2JqZWN0cyglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7
CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIG1feXV2UHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJv
Z3JhbSgpOworICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgdmVydGV4
U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3l1dlByb2dyYW0sIGZyYWdt
ZW50U2hhZGVyKTsKKyAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CisK
KyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4
dEdMOjpMSU5LX1NUQVRVUywgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAgICAgICAg
TE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjppbml0aWFsaXplVVZDb250ZXh0
T2JqZWN0cyglcCkgLSBQcm9ncmFtIGZhaWxlZCB0byBsaW5rLiIsIHRoaXMpOworICAgICAgICBt
X2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBtX2NvbnRleHQt
PmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRl
UHJvZ3JhbShtX3l1dlByb2dyYW0pOworICAgICAgICBtX3l1dlByb2dyYW0gPSAwOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV95VGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9
IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwgInVfeVRleHR1cmUi
X3MpOworICAgIG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV91dlRleHR1cmUiX3MpOworICAgIG1fY29sb3JN
YXRyaXhVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1
dlByb2dyYW0sICJ1X2NvbG9yTWF0cml4Il9zKTsKKyAgICBtX3l1dkZsaXBZVW5pZm9ybUxvY2F0
aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV9mbGlw
WSJfcyk7CisgICAgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdl
dFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X3lUZXh0dXJlU2l6ZSJfcyk7CisgICAg
bV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24obV95dXZQcm9ncmFtLCAidV91dlRleHR1cmVTaXplIl9zKTsKKyAgICBtX3l1dlBvc2l0
aW9uQXR0cmlidXRlTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uRGlyZWN0
KG1feXV2UHJvZ3JhbSwgImFfcG9zaXRpb24iX3MpOworCisgICAgbV9jb250ZXh0LT5kZXRhY2hT
aGFkZXIobV95dXZQcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGV0YWNo
U2hhZGVyKG1feXV2UHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgIG1fY29udGV4dC0+ZGVs
ZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoZnJh
Z21lbnRTaGFkZXIpOworCisgICAgbV95dXZWZXJ0ZXhCdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0
ZUJ1ZmZlcigpOworICAgIGZsb2F0IHZlcnRpY2VzWzEyXSA9IHsgLTEsIC0xLCAxLCAtMSwgMSwg
MSwgMSwgMSwgLTEsIDEsIC0xLCAtMSB9OworCisgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdy
YXBoaWNzQ29udGV4dEdMOjpBUlJBWV9CVUZGRVIsIG1feXV2VmVydGV4QnVmZmVyKTsKKyAgICBt
X2NvbnRleHQtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0R0w6OkFSUkFZX0JVRkZFUiwgc2l6
ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpTVEFUSUNfRFJBVyk7
CisgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3l1dlBvc2l0aW9uQXR0
cmlidXRlTG9jYXRpb24pOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3l1
dlBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwg
ZmFsc2UsIDAsIDApOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQqIEdyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRTo6YXR0YWNoSU9TdXJmYWNlVG9UZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gdHlwZSwgSU9TdXJmYWNlUmVmIHN1cmZhY2UsIEdDR0x1aW50IHBsYW5lKQor
eworICAgIGF1dG8gZGlzcGxheSA9IG1fY29udGV4dC0+cGxhdGZvcm1EaXNwbGF5KCk7CisgICAg
RUdMaW50IGVnbFRleHR1cmVUYXJnZXQgPSAwOworCisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGlj
c0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCKQorICAgICAgICBlZ2xUZXh0dXJlVGFy
Z2V0ID0gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOworICAgIGVsc2UgaWYgKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCkKKyAgICAgICAgZWdsVGV4dHVyZVRhcmdl
dCA9IEVHTF9URVhUVVJFXzJEOworICAgIGVsc2UgeworICAgICAgICBMT0coV2ViR0wsICJVbmtu
b3duIHRleHR1cmUgdGFyZ2V0ICVkLiIsIHN0YXRpY19jYXN0PGludD4odGFyZ2V0KSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoZWdsVGV4dHVyZVRhcmdldCAhPSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpKSB7Cisg
ICAgICAgIExPRyhXZWJHTCwgIk1pc21hdGNoIGluIEVHTCB0ZXh0dXJlIHRhcmdldCAlZC4iLCBz
dGF0aWNfY2FzdDxpbnQ+KHRhcmdldCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBjb25zdCBFR0xpbnQgc3VyZmFjZUF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdM
X1dJRFRILCB3aWR0aCwKKyAgICAgICAgRUdMX0hFSUdIVCwgaGVpZ2h0LAorICAgICAgICBFR0xf
SU9TVVJGQUNFX1BMQU5FX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KHBsYW5lKSwKKyAgICAg
ICAgRUdMX1RFWFRVUkVfVEFSR0VULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGVnbFRleHR1cmVUYXJn
ZXQpLAorICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIHN0YXRpY19j
YXN0PEVHTGludD4oaW50ZXJuYWxGb3JtYXQpLAorICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQs
IEVHTF9URVhUVVJFX1JHQkEsCisgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsIHN0YXRp
Y19jYXN0PEVHTGludD4odHlwZSksCisgICAgICAgIC8vIE9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0
aGUgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgRUdMX0lPU1VSRkFDRV9VU0FHRV9ISU5UX0FOR0xF
LCBFR0xfSU9TVVJGQUNFX1JFQURfSElOVF9BTkdMRSwKKyAgICAgICAgRUdMX05PTkUsIEVHTF9O
T05FCisgICAgfTsKKyAgICBFR0xTdXJmYWNlIHBidWZmZXIgPSBFR0xfQ3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIoZGlzcGxheSwgRUdMX0lPU1VSRkFDRV9BTkdMRSwgc3VyZmFjZSwgbV9j
b250ZXh0LT5wbGF0Zm9ybUNvbmZpZygpLCBzdXJmYWNlQXR0cmlidXRlcyk7CisgICAgaWYgKCFw
YnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIUVHTF9CaW5kVGV4SW1h
Z2UoZGlzcGxheSwgcGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKSkgeworICAgICAgICBFR0xfRGVz
dHJveVN1cmZhY2UoZGlzcGxheSwgcGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKyAgICByZXR1cm4gcGJ1ZmZlcjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTENW
QU5HTEU6OmRldGFjaElPU3VyZmFjZUZyb21UZXh0dXJlKHZvaWQqIGhhbmRsZSkKK3sKKyAgICBh
dXRvIGRpc3BsYXkgPSBtX2NvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOworICAgIEVHTF9SZWxl
YXNlVGV4SW1hZ2UoZGlzcGxheSwgaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEVHTF9E
ZXN0cm95U3VyZmFjZShkaXNwbGF5LCBoYW5kbGUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1h
Z2UsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgRmxpcFkg
ZmxpcFkpCit7CisgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgJzQy
MHYnIGFuZCAnNDIwZicgcGl4ZWwgZm9ybWF0cy4gSW52ZXN0aWdhdGUgc3VwcG9ydGluZyBtb3Jl
IHBpeGVsIGZvcm1hdHMuCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0ID0gQ1ZQaXhlbEJ1ZmZlckdl
dFBpeGVsRm9ybWF0VHlwZShpbWFnZSk7CisgICAgaWYgKHBpeGVsRm9ybWF0ICE9IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlICYmIHBpeGVsRm9ybWF0ICE9
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpIHsKKyAgICAg
ICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gQXNrZWQgdG8gY29weSBhbiB1bnN1cHBvcnRlZCBwaXhl
bCBmb3JtYXQgKCclcycpLiIsIHRoaXMsIEZvdXJDQyhwaXhlbEZvcm1hdCkudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBJT1N1cmZh
Y2VSZWYgc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2UpOworICAgIGlm
ICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBuZXdTdXJmYWNl
U2VlZCA9IElPU3VyZmFjZUdldFNlZWQoc3VyZmFjZSk7CisgICAgaWYgKGZsaXBZID09IG1fbGFz
dEZsaXBZCisgICAgICAgICYmIHN1cmZhY2UgPT0gbV9sYXN0U3VyZmFjZSAKKyAgICAgICAgJiYg
bmV3U3VyZmFjZVNlZWQgPT0gbV9sYXN0U3VyZmFjZVNlZWQKKyAgICAgICAgJiYgbGFzdFRleHR1
cmVTZWVkKG91dHB1dFRleHR1cmUpID09IG1fY29udGV4dC0+dGV4dHVyZVNlZWQob3V0cHV0VGV4
dHVyZSkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHRleHR1cmUgaGFzbid0IGJlZW4gbW9kaWZpZWQg
c2luY2UgdGhlIGxhc3QgdGltZSB3ZSBjb3BpZWQgdG8gaXQsIGFuZCB0aGUKKyAgICAgICAgLy8g
aW1hZ2UgaGFzbid0IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMgY29w
aWVkLCB0aGlzIGlzIGEgbm8tb3AuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmICghbV95dXZQcm9ncmFtKSB7CisgICAgICAgIGlmICghaW5pdGlhbGl6ZVVWQ29udGV4dE9i
amVjdHMoKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gVW5hYmxlIHRvIGlu
aXRpYWxpemUgT3BlbkdMIGNvbnRleHQgb2JqZWN0cy4iLCB0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVs
QnVmZmVyR2V0V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KGltYWdlKTsKKworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBBbGxv
Y2F0ZSBtZW1vcnkgZm9yIHRoZSBvdXRwdXQgdGV4dHVyZS4KKyAgICBtX2NvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBvdXRwdXRUZXh0dXJlKTsKKyAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdM
OjpMSU5FQVIpOworICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CisgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9X
UkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0Up
OworICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERpcmVjdChHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQs
IHR5cGUsIG51bGxwdHIpOworCisgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChH
cmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT0xPUl9B
VFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIG91dHB1dFRleHR1cmUs
IGxldmVsKTsKKyAgICBHQ0dMZW51bSBzdGF0dXMgPSBtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSKTsKKyAgICBpZiAoc3RhdHVz
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICBM
T0coV2ViR0wsICJHcmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSglcCkgLSBVbmFibGUgdG8gY3JlYXRlIGZyYW1lYnVmZmVyIGZvciBvdXRw
dXRUZXh0dXJlLiIsIHRoaXMpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1f
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIDApOwor
CisgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1feXV2UHJvZ3JhbSk7CisgICAgbV9jb250ZXh0
LT52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8vIEJpbmQgYW5kIHNldCB1
cCB0aGUgdGV4dHVyZXMgZm9yIHRoZSB2aWRlbyBzb3VyY2UuCisgICAgYXV0byB5UGxhbmVXaWR0
aCA9IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShzdXJmYWNlLCAwKTsKKyAgICBhdXRvIHlQbGFu
ZUhlaWdodCA9IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoc3VyZmFjZSwgMCk7CisgICAgYXV0
byB1dlBsYW5lV2lkdGggPSBJT1N1cmZhY2VHZXRXaWR0aE9mUGxhbmUoc3VyZmFjZSwgMSk7Cisg
ICAgYXV0byB1dlBsYW5lSGVpZ2h0ID0gSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQbGFuZShzdXJmYWNl
LCAxKTsKKworICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CisKKyAgICBhdXRvIHV2VGV4dHVy
ZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOworICAgIG1fY29udGV4dC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTEpOworICAgIG1fY29udGV4dC0+YmluZFRl
eHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB1dlRleHR1cmUpOworICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
X01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOworICAgIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOworICAgIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpU
RVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOworICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwor
ICAgIGF1dG8gdXZIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9UZXh0dXJl
VGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwgdXZQbGFuZUhlaWdo
dCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDEpOworICAgIGlm
ICghdXZIYW5kbGUpIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVy
ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIHlUZXh0dXJlID0g
bV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CisgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFMCk7CisgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVy
ZSh2aWRlb1RleHR1cmVUYXJnZXQsIHlUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQtPnRleFBhcmFt
ZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQtPnRleFBh
cmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9N
SU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKKyAgICBh
dXRvIHlIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0
LCBHcmFwaGljc0NvbnRleHRHTDo6UkVELCB5UGxhbmVXaWR0aCwgeVBsYW5lSGVpZ2h0LCBHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFjZSwgMCk7CisgICAgaWYgKCF5SGFu
ZGxlKSB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7CisgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgLy8gQ29uZmlndXJlIHRoZSBkcmF3aW5nIHBhcmFtZXRlcnMu
CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV95VGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7
CisgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV91dlRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDEp
OworICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24sIGZs
aXBZID09IEZsaXBZOjpZZXMgPyAxIDogMCk7CisgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobV95
VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24sIHlQbGFuZVdpZHRoLCB5UGxhbmVIZWlnaHQpOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdXZUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiwg
dXZQbGFuZVdpZHRoLCB1dlBsYW5lSGVpZ2h0KTsKKworICAgIGF1dG8gcmFuZ2UgPSBwaXhlbFJh
bmdlRnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKKyAgICBhdXRvIHRyYW5zZmVyRnVuY3Rp
b24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYpQ1ZCdWZmZXJHZXRB
dHRhY2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5LCBuaWwpKTsKKyAg
ICBhdXRvJiBjb2xvck1hdHJpeCA9IFlDYkNyVG9SR0JNYXRyaXhGb3JSYW5nZUFuZFRyYW5zZmVy
RnVuY3Rpb24ocmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb24pOworICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDRmdihtX2NvbG9yTWF0cml4VW5pZm9ybUxvY2F0aW9uLCAxLCBHTF9GQUxTRSwgY29s
b3JNYXRyaXguZGF0YSgpKTsKKworICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KKyAgICBt
X2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwgNik7
CisKKyAgICAvLyBDbGVhbi11cC4KKyAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoeVRleHR1
cmUpOworICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOworICAgIGRldGFj
aElPU3VyZmFjZUZyb21UZXh0dXJlKHlIYW5kbGUpOworICAgIGRldGFjaElPU3VyZmFjZUZyb21U
ZXh0dXJlKHV2SGFuZGxlKTsKKworICAgIG1fbGFzdFN1cmZhY2UgPSBzdXJmYWNlOworICAgIG1f
bGFzdFN1cmZhY2VTZWVkID0gbmV3U3VyZmFjZVNlZWQ7CisgICAgbV9sYXN0VGV4dHVyZVNlZWQu
c2V0KG91dHB1dFRleHR1cmUsIG1fY29udGV4dC0+dGV4dHVyZVNlZWQob3V0cHV0VGV4dHVyZSkp
OworICAgIG1fbGFzdEZsaXBZID0gZmxpcFk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE1N2M1ZWRl
ZTNkNTRlYWEzMGEwYmYyOTU5ZjYzNzQ4ZDQ3YmVkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5o
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKSAmJiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisKKyNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKKyNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCisKKyNpbXBvcnQgPHd0Zi9VbnNhZmVQb2ludGVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gR3JhcGhpY3NDb250ZXh0R0xDViBpbXBsZW1lbnRhdGlv
biBmb3IgQU5HTEUgZmxhdm91ciBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC4KK2NsYXNzIEdy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENW
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmKTsKKyAgICB+R3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFKCkgZmluYWw7CisKKyAgICBib29sIGNvcHlQaXhlbEJ1ZmZlclRvVGV4
dHVyZShDVlBpeGVsQnVmZmVyUmVmLCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEZsaXBZKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBib29sIGluaXRpYWxp
emVVVkNvbnRleHRPYmplY3RzKCk7CisKKyAgICB1bnNpZ25lZCBsYXN0VGV4dHVyZVNlZWQoR0NH
THVpbnQgdGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2VlZC5n
ZXQodGV4dHVyZSk7CisgICAgfQorCisgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYg
bm9uLW51bGwsIG11c3QgYmUgcmVsZWFzZWQgdmlhIHRoZQorICAgIC8vIGRldGFjaCBjYWxsIGJl
bG93LgorICAgIHZvaWQqIGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOworICAgIHZv
aWQgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUodm9pZCogaGFuZGxlKTsKKworICAgIFJlZjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworCisgICAgUGxhdGZvcm1HTE9iamVj
dCBtX2ZyYW1lYnVmZmVyIHsgMCB9OworICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZQcm9ncmFt
IHsgMCB9OworICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZWZXJ0ZXhCdWZmZXIgeyAwIH07Cisg
ICAgR0NHTGludCBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKKyAgICBHQ0dMaW50
IG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKKyAgICBHQ0dMaW50IG1feXV2Rmxp
cFlVbmlmb3JtTG9jYXRpb24geyAtMSB9OworICAgIEdDR0xpbnQgbV9jb2xvck1hdHJpeFVuaWZv
cm1Mb2NhdGlvbiB7IC0xIH07CisgICAgR0NHTGludCBtX3l1dlBvc2l0aW9uQXR0cmlidXRlTG9j
YXRpb24geyAtMSB9OworICAgIEdDR0xpbnQgbV95VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24g
eyAtMSB9OworICAgIEdDR0xpbnQgbV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uIHsgLTEg
fTsKKworICAgIEZsaXBZIG1fbGFzdEZsaXBZIHsgRmxpcFk6Ok5vIH07CisgICAgVW5zYWZlUG9p
bnRlcjxJT1N1cmZhY2VSZWY+IG1fbGFzdFN1cmZhY2U7CisgICAgdWludDMyX3QgbV9sYXN0U3Vy
ZmFjZVNlZWQgeyAwIH07CisKKyAgICB1c2luZyBUZXh0dXJlU2VlZE1hcCA9IEhhc2hNYXA8R0NH
THVpbnQsIHVuc2lnbmVkLCBXVEY6OkludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj47CisgICAgVGV4dHVyZVNlZWRNYXAgbV9sYXN0
VGV4dHVyZVNlZWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjYyNTJhZWUyMmYxZWQxZWVlNjlkMDVmY2Ri
NzJkZmY4YzQzMjRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWaWRlb1RleHR1cmVDb3BpZXJDVi5oIgotCi0j
aW5jbHVkZSAiRm91ckNDLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHBhbC9z
cGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLQotCi0jZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAwCi0jaW5jbHVkZSA8QU5HTEUv
ZWdsLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZWdsZXh0Lmg+Ci0jaW5jbHVkZSA8QU5HTEUvZWdsZXh0
X2FuZ2xlLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZW50cnlfcG9pbnRzX2VnbC5oPgotI2luY2x1ZGUg
PEFOR0xFL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmg+Ci0vLyBTa2lwIHRoZSBpbmNs
dXNpb24gb2YgQU5HTEUncyBleHBsaWNpdCBjb250ZXh0IGVudHJ5IHBvaW50cyBmb3Igbm93Lgot
I2RlZmluZSBHTF9BTkdMRV9leHBsaWNpdF9jb250ZXh0Ci0jaW5jbHVkZSA8QU5HTEUvZ2wyZXh0
Lmg+Ci0jaW5jbHVkZSA8QU5HTEUvZ2wyZXh0X2FuZ2xlLmg+Ci0KLSNpbmNsdWRlICJDb3JlVmlk
ZW9Tb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdGV4cHIg
YXV0byBzX3JnYlZlcnRleFNoYWRlciB7Ci0gICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247
IgotICAgICJ1bmlmb3JtIGludCB1X2ZsaXBZOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4dHVy
ZVBvc2l0aW9uOyIKLSAgICAidm9pZCBtYWluKCkiCi0gICAgInsiCi0gICAgIiAgICB2X3RleHR1
cmVQb3NpdGlvbiA9IHZlYzIoKGFfcG9zaXRpb24ueCArIDEuMCkgLyAyLjAsIChhX3Bvc2l0aW9u
LnkgKyAxLjApIC8gMi4wKTsiCi0gICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKLSAgICAiICAg
ICAgICB2X3RleHR1cmVQb3NpdGlvbi55ID0gMS4wIC0gdl90ZXh0dXJlUG9zaXRpb24ueTsiCi0g
ICAgIiAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IgotICAgICJ9Il9zCi19OwotCi1zdGF0
aWMgY29uc3RleHByIGF1dG8gc19yZ2JGcmFnbWVudFNoYWRlclRleHR1cmUyRCB7Ci0gICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJl
OyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOyIKLSAgICAidW5pZm9ybSBp
bnQgdV9wcmVtdWx0aXBseTsiCi0gICAgInVuaWZvcm0gdmVjMiB1X3RleHR1cmVEaW1lbnNpb25z
OyIKLSAgICAidW5pZm9ybSBpbnQgdV9zd2FwQ29sb3JDaGFubmVsczsiCi0gICAgInZvaWQgbWFp
bigpIgotICAgICJ7IgotICAgICIgICAgdmVjMiB0ZXhQb3MgPSB2ZWMyKHZfdGV4dHVyZVBvc2l0
aW9uLnggKiB1X3RleHR1cmVEaW1lbnNpb25zLngsIHZfdGV4dHVyZVBvc2l0aW9uLnkgKiB1X3Rl
eHR1cmVEaW1lbnNpb25zLnkpOyIKLSAgICAiICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90
ZXh0dXJlLCB0ZXhQb3MpOyIKLSAgICAiICAgIGlmICh1X3N3YXBDb2xvckNoYW5uZWxzID09IDEp
IgotICAgICIgICAgICAgIGNvbG9yLnJnYmEgPSBjb2xvci5iZ3JhOyIKLSAgICAiICAgIGlmICh1
X3ByZW11bHRpcGx5ID09IDEpIgotICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29s
b3IuciAqIGNvbG9yLmEsIGNvbG9yLmcgKiBjb2xvci5hLCBjb2xvci5iICogY29sb3IuYSwgY29s
b3IuYSk7IgotICAgICIgICAgZWxzZSIKLSAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xv
cjsiCi0gICAgIn0iX3MKLX07Ci0KLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3JnYkZyYWdtZW50
U2hhZGVyVGV4dHVyZVJlY3RhbmdsZSB7Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIK
LSAgICAidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHVfdGV4dHVyZTsiCi0gICAgInZhcnlpbmcgdmVj
MiB2X3RleHR1cmVQb3NpdGlvbjsiCi0gICAgInVuaWZvcm0gaW50IHVfcHJlbXVsdGlwbHk7Igot
ICAgICJ1bmlmb3JtIHZlYzIgdV90ZXh0dXJlRGltZW5zaW9uczsiCi0gICAgInVuaWZvcm0gaW50
IHVfc3dhcENvbG9yQ2hhbm5lbHM7IgotICAgICJ2b2lkIG1haW4oKSIKLSAgICAieyIKLSAgICAi
ICAgIHZlYzIgdGV4UG9zID0gdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICogdV90ZXh0dXJlRGlt
ZW5zaW9ucy54LCB2X3RleHR1cmVQb3NpdGlvbi55ICogdV90ZXh0dXJlRGltZW5zaW9ucy55KTsi
Ci0gICAgIiAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdCh1X3RleHR1cmUsIHRleFBvcyk7
IgotICAgICIgICAgaWYgKHVfc3dhcENvbG9yQ2hhbm5lbHMgPT0gMSkiCi0gICAgIiAgICAgICAg
Y29sb3IucmdiYSA9IGNvbG9yLmJncmE7IgotICAgICIgICAgaWYgKHVfcHJlbXVsdGlwbHkgPT0g
MSkiCi0gICAgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yICogY29sb3IuYSwg
Y29sb3IuZyAqIGNvbG9yLmEsIGNvbG9yLmIgKiBjb2xvci5hLCBjb2xvci5hKTsiCi0gICAgIiAg
ICBlbHNlIgotICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOyIKLSAgICAifSJfcwot
fTsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNfeXV2VmVydGV4U2hhZGVyVGV4dHVyZTJEIHsK
LSAgICAiYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsiCi0gICAgInVuaWZvcm0gdmVjMiB1X3lU
ZXh0dXJlU2l6ZTsiCi0gICAgInVuaWZvcm0gdmVjMiB1X3V2VGV4dHVyZVNpemU7IgotICAgICJ1
bmlmb3JtIGludCB1X2ZsaXBZOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGlu
YXRlOyIKLSAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCi0gICAgInZv
aWQgbWFpbigpIgotICAgICJ7IgotICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRp
b24sIDAsIDEuMCk7IgotICAgICIgICAgdmVjMiBub3JtYWxpemVkUG9zaXRpb24gPSBhX3Bvc2l0
aW9uICogLjUgKyAuNTsiCi0gICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKLSAgICAiICAgICAg
ICBub3JtYWxpemVkUG9zaXRpb24ueSA9IDEuMCAtIG5vcm1hbGl6ZWRQb3NpdGlvbi55OyIKLSAg
ICAiICAgIHZfeVRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKLSAgICAi
ICAgIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbjsiCi0gICAgIn0i
X3MKLX07Ci0KLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3l1dlZlcnRleFNoYWRlclRleHR1cmVS
ZWN0YW5nbGUgewotICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyIKLSAgICAidW5pZm9y
bSB2ZWMyIHVfeVRleHR1cmVTaXplOyIKLSAgICAidW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6
ZTsiCi0gICAgInVuaWZvcm0gaW50IHVfZmxpcFk7IgotICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4
dHVyZUNvb3JkaW5hdGU7IgotICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRl
OyIKLSAgICAidm9pZCBtYWluKCkiCi0gICAgInsiCi0gICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoYV9wb3NpdGlvbiwgMCwgMS4wKTsiCi0gICAgIiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlv
biA9IGFfcG9zaXRpb24gKiAuNSArIC41OyIKLSAgICAiICAgIGlmICh1X2ZsaXBZID09IDEpIgot
ICAgICIgICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0
aW9uLnk7IgotICAgICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRp
b24gKiB1X3lUZXh0dXJlU2l6ZTsiCi0gICAgIiAgICB2X3V2VGV4dHVyZUNvb3JkaW5hdGUgPSBu
b3JtYWxpemVkUG9zaXRpb24gKiB1X3V2VGV4dHVyZVNpemU7IgotICAgICJ9Il9zCi19OwotCi1j
b25zdGV4cHIgYXV0byBzX3l1dkZyYWdtZW50U2hhZGVyVGV4dHVyZTJEIHsKLSAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7IgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3lUZXh0dXJlOyIK
LSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV91dlRleHR1cmU7IgotICAgICJ1bmlmb3JtIG1hdDQg
dV9jb2xvck1hdHJpeDsiCi0gICAgInZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0ZTsi
Ci0gICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7IgotICAgICJ2b2lkIG1h
aW4oKSIKLSAgICAieyIKLSAgICAiICAgIHZlYzQgeXV2OyIKLSAgICAiICAgIHl1di5yID0gdGV4
dHVyZTJEKHVfeVRleHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKLSAgICAiICAgIHl1
di5nYiA9IHRleHR1cmUyRCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29yZGluYXRlKS5yZzsi
Ci0gICAgIiAgICB5dXYuYSA9IDEuMDsiCi0gICAgIiAgICBnbF9GcmFnQ29sb3IgPSB5dXYgKiB1
X2NvbG9yTWF0cml4OyIKLSAgICAifSJfcwotfTsKLQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNf
eXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlIHsKLSAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7IgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRFJlY3QgdV95VGV4dHVyZTsiCi0gICAg
InVuaWZvcm0gc2FtcGxlcjJEUmVjdCB1X3V2VGV4dHVyZTsiCi0gICAgInVuaWZvcm0gbWF0NCB1
X2NvbG9yTWF0cml4OyIKLSAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRlOyIK
LSAgICAidmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCi0gICAgInZvaWQgbWFp
bigpIgotICAgICJ7IgotICAgICIgICAgdmVjNCB5dXY7IgotICAgICIgICAgeXV2LnIgPSB0ZXh0
dXJlMkRSZWN0KHVfeVRleHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKLSAgICAiICAg
IHl1di5nYiA9IHRleHR1cmUyRFJlY3QodV91dlRleHR1cmUsIHZfdXZUZXh0dXJlQ29vcmRpbmF0
ZSkucmc7IgotICAgICIgICAgeXV2LmEgPSAxLjA7IgotICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
eXV2ICogdV9jb2xvck1hdHJpeDsiCi0gICAgIn0iX3MKLX07Ci0KLWVudW0gY2xhc3MgUGl4ZWxS
YW5nZSB7Ci0gICAgVW5rbm93biwKLSAgICBWaWRlbywKLSAgICBGdWxsLAotfTsKLQotZW51bSBj
bGFzcyBUcmFuc2ZlckZ1bmN0aW9uQ1YgewotICAgIFVua25vd24sCi0gICAga0lUVV9SXzcwOV8y
LAotICAgIGtJVFVfUl82MDFfNCwKLSAgICBrU01QVEVfMjQwTV8xOTk1LAotICAgIGtEQ0lfUDMs
Ci0gICAga1AzX0Q2NSwKLSAgICBrSVRVX1JfMjAyMCwKLX07Ci0KLXN0YXRpYyBQaXhlbFJhbmdl
IHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQoT1NUeXBlIHBpeGVsRm9ybWF0KQotewotICAgIHN3
aXRjaCAocGl4ZWxGb3JtYXQpIHsKLSAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80NDQ0QVlw
Q2JDcjg6Ci0gICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0NEFZcENiQ3IxNjoKLSAgICBj
YXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3JfNEFfOEJpUGxhbmFyOgotICAgIGNhc2Ug
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U6Ci0gICAgY2Fz
ZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U6Ci0gICAg
Y2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U6Ci0g
ICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDQ0WXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U6
Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdlOjpWaWRlbzsKLSAgICBjYXNlIGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyRnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxGb3Jt
YXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZToKLSAgICBjYXNlIGtDVlBpeGVsRm9y
bWF0VHlwZV80MjJZcENiQ3I4RnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBl
X0FSR0IyMTAxMDEwTEVQYWNrZWQ6Ci0gICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBD
YkNyMTBCaVBsYW5hckZ1bGxSYW5nZToKLSAgICBjYXNlIGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZ
cENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOgotICAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQ0
NFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U6Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdlOjpG
dWxsOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQaXhlbFJhbmdlOjpVbmtub3duOwot
ICAgIH0KLX0KLQotc3RhdGljIFRyYW5zZmVyRnVuY3Rpb25DViB0cmFuc2ZlckZ1bmN0aW9uRnJv
bVN0cmluZyhDRlN0cmluZ1JlZiBzdHJpbmcpCi17Ci0gICAgaWYgKCFzdHJpbmcgfHwgQ0ZHZXRU
eXBlSUQoc3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gVHJh
bnNmZXJGdW5jdGlvbkNWOjpVbmtub3duOwotICAgIGlmIChDRkVxdWFsKHN0cmluZywga0NWSW1h
Z2VCdWZmZXJZQ2JDck1hdHJpeF9JVFVfUl83MDlfMikpCi0gICAgICAgIHJldHVybiBUcmFuc2Zl
ckZ1bmN0aW9uQ1Y6OmtJVFVfUl83MDlfMjsKLSAgICBpZiAoQ0ZFcXVhbChzdHJpbmcsIGtDVklt
YWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNjAxXzQpKQotICAgICAgICByZXR1cm4gVHJhbnNm
ZXJGdW5jdGlvbkNWOjprSVRVX1JfNjAxXzQ7Ci0gICAgaWYgKENGRXF1YWwoc3RyaW5nLCBrQ1ZJ
bWFnZUJ1ZmZlcllDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NSkpCi0gICAgICAgIHJldHVybiBU
cmFuc2ZlckZ1bmN0aW9uQ1Y6OmtTTVBURV8yNDBNXzE5OTU7Ci0gICAgaWYgKGNhbkxvYWRfQ29y
ZVZpZGVvX2tDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzKCkgJiYgQ0ZFcXVhbChzdHJp
bmcsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhfRENJX1AzKSkKLSAgICAgICAgcmV0dXJuIFRy
YW5zZmVyRnVuY3Rpb25DVjo6a0RDSV9QMzsKLSAgICBpZiAoY2FuTG9hZF9Db3JlVmlkZW9fa0NW
SW1hZ2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUoKSAmJiBDRkVxdWFsKHN0cmluZywga0NWSW1h
Z2VCdWZmZXJZQ2JDck1hdHJpeF9QM19ENjUpKQotICAgICAgICByZXR1cm4gVHJhbnNmZXJGdW5j
dGlvbkNWOjprUDNfRDY1OwotICAgIGlmIChjYW5Mb2FkX0NvcmVWaWRlb19rQ1ZJbWFnZUJ1ZmZl
cllDYkNyTWF0cml4X0lUVV9SXzIwMjAoKSAmJiBDRkVxdWFsKHN0cmluZywga0NWSW1hZ2VCdWZm
ZXJZQ2JDck1hdHJpeF9JVFVfUl8yMDIwKSkKLSAgICAgICAgcmV0dXJuIFRyYW5zZmVyRnVuY3Rp
b25DVjo6a0lUVV9SXzIwMjA7Ci0gICAgcmV0dXJuIFRyYW5zZmVyRnVuY3Rpb25DVjo6VW5rbm93
bjsKLX0KLQotc3RydWN0IEdMZmxvYXRDb2xvciB7Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1
Y3QgewotICAgICAgICAgICAgR0xmbG9hdCByOwotICAgICAgICAgICAgR0xmbG9hdCBnOwotICAg
ICAgICAgICAgR0xmbG9hdCBiOwotICAgICAgICB9IHJnYjsKLSAgICAgICAgc3RydWN0IHsKLSAg
ICAgICAgICAgIEdMZmxvYXQgeTsKLSAgICAgICAgICAgIEdMZmxvYXQgY2I7Ci0gICAgICAgICAg
ICBHTGZsb2F0IGNyOwotICAgICAgICB9IHljYmNyOwotICAgIH07Ci0KLSAgICBjb25zdGV4cHIg
R0xmbG9hdENvbG9yKEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIpCi0gICAgICAgIDog
cmdiIHsgciwgZywgYiB9Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0ZXhwciBHTGZsb2F0Q29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgR0xmbG9hdCBzY2FsZSkKLSAgICAgICAgOiByZ2IgeyBy
IC8gc2NhbGUsIGcgLyBzY2FsZSwgYiAvIHNjYWxlfQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3RleHByIEdMZmxvYXQgYWJzKEdMZmxvYXQgdmFsdWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdmFsdWUgPj0gMCA/IHZhbHVlIDogLXZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhw
ciBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgR0xmbG9hdENvbG9yJiBjb2xvciwg
R0xmbG9hdCBtYXhEZWx0YSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhYnMocmdiLnIg
LSBjb2xvci5yZ2IucikgPCBhYnMobWF4RGVsdGEpCi0gICAgICAgICAgICAmJiBhYnMocmdiLmcg
LSBjb2xvci5yZ2IuZykgPCBhYnMobWF4RGVsdGEpCi0gICAgICAgICAgICAmJiBhYnMocmdiLmIg
LSBjb2xvci5yZ2IuYikgPCBhYnMobWF4RGVsdGEpOwotICAgIH0KLX07Ci0KLXN0cnVjdCBHTGZs
b2F0Q29sb3JzIHsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBibGFjayAgIHsw
LCAwLCAwfTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciB3aGl0ZSAgIHsxLCAx
LCAxfTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciByZWQgICAgIHsxLCAwLCAw
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBncmVlbiAgIHswLCAxLCAwfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBibHVlICAgIHswLCAwLCAxfTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBjeWFuICAgIHswLCAxLCAxfTsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciBtYWdlbnRhIHsxLCAwLCAxfTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdMZmxvYXRDb2xvciB5ZWxsb3cgIHsxLCAxLCAwfTsKLX07Ci0KLXN0cnVj
dCBZQ2JDck1hdHJpeCB7Ci0gICAgdW5pb24gewotICAgICAgICBHTGZsb2F0IHJvd3NbNF1bNF07
Ci0gICAgICAgIEdMZmxvYXQgZGF0YVsxNl07Ci0gICAgfTsKLQotICAgIGNvbnN0ZXhwciBZQ2JD
ck1hdHJpeChQaXhlbFJhbmdlLCBHTGZsb2F0IGNiQ29lZmZpY2llbnQsIEdMZmxvYXQgY3JDb2Vm
ZmljaWVudCk7Ci0KLSAgICBvcGVyYXRvciBWZWN0b3I8R0xmbG9hdD4oKSBjb25zdAotICAgIHsK
LSAgICAgICAgVmVjdG9yPEdMZmxvYXQ+IHZlY3RvcjsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChk
YXRhLCAxNik7Ci0gICAgICAgIHJldHVybiB2ZWN0b3I7Ci0gICAgfQotCi0gICAgY29uc3RleHBy
IEdMZmxvYXRDb2xvciBvcGVyYXRvciooY29uc3QgR0xmbG9hdENvbG9yJikgY29uc3Q7Ci19Owot
Ci1jb25zdGV4cHIgWUNiQ3JNYXRyaXg6OllDYkNyTWF0cml4KFBpeGVsUmFuZ2UgcmFuZ2UsIEdM
ZmxvYXQgY2JDb2VmZmljaWVudCwgR0xmbG9hdCBjckNvZWZmaWNpZW50KQotICAgIDogcm93cyB7
IH0KLXsKLSAgICAvLyBUaGUgY29udmVyc2lvbiBmcm9tIFlDYkNyIC0+IFJHQiBnZW5lcmFsbHkg
dGFrZXMgdGhlIGZvcm06Ci0gICAgLy8gWSA9IEtyICogUiArIEtnICogRyArIEtiICogQgotICAg
IC8vIENiID0gKEIgLSBZKSAvICgyICogKDEgLSBLYikpCi0gICAgLy8gQ3IgPSAoUiAtIFkpIC8g
KDIgKiAoMSAtIEtyKSkKLSAgICAvLyBXaGVyZSB0aGUgdmFsdWVzIG9mIEtiIGFuZCBLciBhcmUg
ZGVmaW5lZCBpbiBhIHNwZWNpZmljYXRpb24gYW5kIEtnIGlzIGRlcml2ZWQgZnJvbTogS3IgKyBL
ZyArIEtiID0gMQotICAgIC8vCi0gICAgLy8gU29sdmluZyB0aGUgYWJvdmUgZXF1YXRpb25zIGZv
ciBSLCBCLCBhbmQgRyBkZXJpdmVzIHRoZSBmb2xsb3dpbmc6Ci0gICAgLy8gUiA9IFkgKyAoMiAq
ICgxIC0gS3IpKSAqIENyCi0gICAgLy8gQiA9IFkgKyAoMiAqICgxIC0gS2IpKSAqIENiCi0gICAg
Ly8gRyA9IFkgLSAoMiAqICgxIC0gS2IpKSAqIChLYiAvIEtnKSAqIENiIC0gKCgxIC0gS3IpICog
MikgKiAoS3IgLyBLZykgKiBDcgotICAgIC8vCi0gICAgLy8gV2hlbiB0aGUgY29sb3IgdmFsdWVz
IGFyZSBWaWRlbyByYW5nZSwgWSBoYXMgYSByYW5nZSBvZiBbMTYsIDIzNV0gd2l0aCBhIHdpZHRo
IG9mIDIxOSwgYW5kIENiICYgQ3IgaGF2ZQotICAgIC8vIGEgcmFuZ2Ugb2YgWzE2LCAyNDBdIHdp
dGggYSB3aWR0aCBvZiAyMjQuIFdoZW4gdGhlIGNvbG9yIHZhbHVlcyBhcmUgRnVsbCByYW5nZSwg
WSwgQ2IsIGFuZCBDciBhbGwgaGF2ZQotICAgIC8vIGEgcmFuZ2Ugb2YgWzAsIDI1NV0gd2l0aCBh
IHdpZHRoIG9mIDI1Ni4KLQotICAgIEdMZmxvYXQgY2dDb2VmZmljaWVudCA9IDEgLSBjYkNvZWZm
aWNpZW50IC0gY3JDb2VmZmljaWVudDsKLSAgICBHTGZsb2F0IHlTY2FsaW5nRmFjdG9yID0gcmFu
Z2UgPT0gUGl4ZWxSYW5nZTo6RnVsbCA/IDEuZiA6IDI1NS5mIC8gMjE5LmY7Ci0gICAgR0xmbG9h
dCBjYmNyU2NhbGluZ0ZhY3RvciA9IHJhbmdlID09IFBpeGVsUmFuZ2U6OkZ1bGwgPyAxLmYgOiAy
NTUuZiAvIDIyNC5mOwotCi0gICAgcm93c1swXVswXSA9IHlTY2FsaW5nRmFjdG9yOwotICAgIHJv
d3NbMF1bMV0gPSAwOwotICAgIHJvd3NbMF1bMl0gPSBjYmNyU2NhbGluZ0ZhY3RvciAqIDIgKiAo
MSAtIGNyQ29lZmZpY2llbnQpOwotICAgIHJvd3NbMF1bM10gPSAwOwotCi0gICAgcm93c1sxXVsw
XSA9IHlTY2FsaW5nRmFjdG9yOwotICAgIHJvd3NbMV1bMV0gPSAtY2JjclNjYWxpbmdGYWN0b3Ig
KiAyICogKDEgLSBjYkNvZWZmaWNpZW50KSAqIChjYkNvZWZmaWNpZW50IC8gY2dDb2VmZmljaWVu
dCk7Ci0gICAgcm93c1sxXVsyXSA9IC1jYmNyU2NhbGluZ0ZhY3RvciAqIDIgKiAoMSAtIGNyQ29l
ZmZpY2llbnQpICogKGNyQ29lZmZpY2llbnQgLyBjZ0NvZWZmaWNpZW50KTsKLSAgICByb3dzWzFd
WzNdID0gMDsKLQotICAgIHJvd3NbMl1bMF0gPSB5U2NhbGluZ0ZhY3RvcjsKLSAgICByb3dzWzJd
WzFdID0gY2JjclNjYWxpbmdGYWN0b3IgKiAyICogKDEgLSBjYkNvZWZmaWNpZW50KTsKLSAgICBy
b3dzWzJdWzJdID0gMDsKLSAgICByb3dzWzJdWzNdID0gMDsKLQotICAgIHJvd3NbM11bMF0gPSAw
OwotICAgIHJvd3NbM11bMV0gPSAwOwotICAgIHJvd3NbM11bMl0gPSAwOwotICAgIHJvd3NbM11b
M10gPSAxOwotCi0gICAgLy8gQ29uZmlndXJlIHRoZSBmaW5hbCBjb2x1bW4gb2YgdGhlIG1hdHJp
eCB0byBjb252ZXJ0IENiIGFuZCBDciB0byBbLTEyOCwgMTI4XQotICAgIC8vIGFuZCwgaW4gdGhl
IGNhc2Ugb2YgdmlkZW8tcmFuZ2UsIHRvIGNvbnZlcnQgWSB0byBbMTYsIDI0MF06Ci0gICAgZm9y
IChhdXRvIHJvd051bWJlciA9IDA7IHJvd051bWJlciA8IDM7ICsrcm93TnVtYmVyKSB7Ci0gICAg
ICAgIGF1dG8mIHJvdyA9IHJvd3Nbcm93TnVtYmVyXTsKLSAgICAgICAgYXV0byYgeCA9IHJvd1sw
XTsKLSAgICAgICAgYXV0byYgeSA9IHJvd1sxXTsKLSAgICAgICAgYXV0byYgeiA9IHJvd1syXTsK
LSAgICAgICAgYXV0byYgdyA9IHJvd1szXTsKLQotICAgICAgICB3IC09ICh5ICsgeikgKiAxMjgg
LyAyNTU7Ci0gICAgICAgIGlmIChyYW5nZSA9PSBQaXhlbFJhbmdlOjpWaWRlbykKLSAgICAgICAg
ICAgIHcgLT0geCAqIDE2IC8gMjU1OwotICAgIH0KLX0KLQotY29uc3RleHByIEdMZmxvYXRDb2xv
ciBZQ2JDck1hdHJpeDo6b3BlcmF0b3IqKGNvbnN0IEdMZmxvYXRDb2xvciYgY29sb3IpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEdMZmxvYXRDb2xvcigKLSAgICAgICAgcm93c1swXVswXSAqIGNvbG9y
LnJnYi5yICsgcm93c1swXVsxXSAqIGNvbG9yLnJnYi5nICsgcm93c1swXVsyXSAqIGNvbG9yLnJn
Yi5iICsgcm93c1swXVszXSwKLSAgICAgICAgcm93c1sxXVswXSAqIGNvbG9yLnJnYi5yICsgcm93
c1sxXVsxXSAqIGNvbG9yLnJnYi5nICsgcm93c1sxXVsyXSAqIGNvbG9yLnJnYi5iICsgcm93c1sx
XVszXSwKLSAgICAgICAgcm93c1syXVswXSAqIGNvbG9yLnJnYi5yICsgcm93c1syXVsxXSAqIGNv
bG9yLnJnYi5nICsgcm93c1syXVsyXSAqIGNvbG9yLnJnYi5iICsgcm93c1syXVszXQotICAgICk7
Ci19Ci0KLXN0YXRpYyBjb25zdCBWZWN0b3I8R0xmbG9hdD4gWUNiQ3JUb1JHQk1hdHJpeEZvclJh
bmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbmdlLCBUcmFuc2ZlckZ1bmN0aW9u
Q1YgdHJhbnNmZXJGdW5jdGlvbikKLXsKLSAgICB1c2luZyBNYXBLZXkgPSBzdGQ6OnBhaXI8UGl4
ZWxSYW5nZSwgVHJhbnNmZXJGdW5jdGlvbkNWPjsKLSAgICB1c2luZyBNYXRyaXhNYXAgPSBTdGRN
YXA8TWFwS2V5LCBWZWN0b3I8R0xmbG9hdD4+OwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PE1hdHJpeE1hcD4gbWF0cmljZXM7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0KLSAgICAvLyBNYXRyaWNlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBjb21wb25lbnRzIGlu
IHRoZSBJVFUgUi42MDEgcmV2IDQgc3BlY2lmaWNhdGlvbgotICAgIC8vIGh0dHBzOi8vd3d3Lml0
dS5pbnQvcmVjL1ItUkVDLUJULjYwMQotICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXgg
cjYwMVZpZGVvTWF0cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMTE0ZiwgMC4yOTlmIH07Ci0g
ICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCByNjAxRnVsbE1hdHJpeCB7IFBpeGVsUmFu
Z2U6OkZ1bGwsIDAuMTE0ZiwgMC4yOTlmIH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlk
ZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0
ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici42MTAg
dmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmxhY2sgY29sb3IiKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgsIDEyOCwgMjU1
KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8g
MjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3Ii
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoODEs
ICA5MCwgIDI0MCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpy
ZWQsICAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1
Y2UgcmVkIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYwMVZpZGVvTWF0cml4ICogR0xm
bG9hdENvbG9yKDE0NSwgNTQsICAzNCwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIHZpZGVvIG1hdHJpeCBk
b2VzIG5vdCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYwMVZp
ZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDQxLCAgMjQwLCAxMTAsIDI1NSkpLmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEw
IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KChyNjAxVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjEwLCAxNiwgIDE0NiwgMjU1
KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp5ZWxsb3csICAxLjVmIC8g
MjU1LmYpLCAici42MTAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9y
Iik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjYwMVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDEw
NiwgMjAyLCAyMjIsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6
bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgInIuNjEwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9k
dWNlIG1hZ2VudGEgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxVmlkZW9NYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMTcwLCAxNjYsIDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAici42MTAgdmlkZW8gbWF0
cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAgc3RhdGljX2Fzc2VydCgo
cjYwMUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAi
ci42MTAgZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0
YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDI1NSwgMTI4LCAxMjgs
IDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41
ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29s
b3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig3
NiwgIDg1LCAgMjU1LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6
OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9k
dWNlIHJlZCBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xm
bG9hdENvbG9yKDE1MCwgNDQsICAyMSwgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRv
ZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNjAxRnVs
bE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyOSwgIDI1NSwgMTA3LCAyNTUpKS5pc0FwcHJveGltYXRl
bHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJyLjYxMCBm
dWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KChyNjAxRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMjYsIDAsICAgMTQ5LCAyNTUpKS5p
c0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUu
ZiksICJyLjYxMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIpOwot
ICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDEwNSwgMjEy
LCAyMzUsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFnZW50
YSwgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFn
ZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI2MDFGdWxsTWF0cml4ICogR0xmbG9h
dENvbG9yKDE3OSwgMTcxLCAxLCAgIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9h
dENvbG9yczo6Y3lhbiwgICAgMS41ZiAvIDI1NS5mKSwgInIuNjEwIGZ1bGwgbWF0cml4IGRvZXMg
bm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAgLy8gTWF0cmljZXMgYXJlIGRlcml2ZWQg
ZnJvbSB0aGUgY29tcG9uZW50cyBpbiB0aGUgSVRVIFIuNzA5IHJldiAyIHNwZWNpZmljYXRpb24K
LSAgICAvLyBodHRwczovL3d3dy5pdHUuaW50L3JlYy9SLVJFQy1CVC43MDktMi0xOTk1MTAtUwot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggcjcwOVZpZGVvTWF0cml4IHsgUGl4ZWxS
YW5nZTo6VmlkZW8sIDAuMDcyMiwgMC4yMTI2IH07Ci0gICAgY29uc3RleHByIHN0YXRpYyBZQ2JD
ck1hdHJpeCByNzA5RnVsbE1hdHJpeCB7IFBpeGVsUmFuZ2U6OkZ1bGwsIDAuMDcyMiwgMC4yMTI2
IH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3Io
MTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3Jz
OjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgYmxhY2sgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0
cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChy
NzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoNjMsICAxMDIsIDI0MCwgMjU1KSkuaXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8gMjU1LmYpLCAi
ci43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7Ci0gICAgc3Rh
dGljX2Fzc2VydCgocjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE3MywgNDIsICAyNiwg
IDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41
ZiAvIDI1NS5mKSwgInIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGdyZWVuIGNv
bG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgocjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9y
KDMyLCAgMjQwLCAxMTgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9y
czo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBw
cm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMjE5LCAxNiwgIDEzOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjp5ZWxsb3csICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0
cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgo
cjcwOVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDc4LCAgMjE0LCAyMzAsIDI1NSkpLmlzQXBw
cm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwg
InIuNzA5IHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KChyNzA5VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTg4LCAxNTQs
IDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAg
ICAxLjVmIC8gMjU1LmYpLCAici43MDkgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lh
biBjb2xvciIpOwotCi0gICAgc3RhdGljX2Fzc2VydCgocjcwOUZ1bGxNYXRyaXggKiBHTGZsb2F0
Q29sb3IoMCwgICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0
Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAici43MDkgZnVsbCBtYXRyaXggZG9lcyBu
b3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0
cml4ICogR0xmbG9hdENvbG9yKDI1NSwgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVx
dWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwg
bWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hpdGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KChyNzA5RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig1NCwgIDk5LCAgMjU2LCAyNTUpKS5pc0Fw
cHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiks
ICJyLjcwOSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xvciIpOwotICAgIHN0
YXRpY19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDE4MiwgMzAsICAxMiwg
IDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41
ZiAvIDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29s
b3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigx
OCwgIDI1NiwgMTE2LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6
OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9k
dWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChyNzA5RnVsbE1hdHJpeCAqIEdM
ZmxvYXRDb2xvcigyMzcsIDEsICAgMTQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdM
ZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJyLjcwOSBmdWxsIG1hdHJpeCBk
b2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHI3MDlG
dWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDczLCAgMjI2LCAyNDQsIDI1NSkpLmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFnZW50YSwgMS41ZiAvIDI1NS5mKSwgInIuNzA5
IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRp
Y19hc3NlcnQoKHI3MDlGdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIwMSwgMTU3LCAxLCAgIDI1
NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAv
IDI1NS5mKSwgInIuNzA5IGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIp
OwotCi0gICAgLy8gTWF0cmljZXMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgY29tcG9uZW50cyBpbiB0
aGUgSVRVLVIgQlQuMjAyMC0yIHNwZWNpZmljYXRpb24KLSAgICAvLyBodHRwczovL3d3dy5pdHUu
aW50L3JlYy9SLVJFQy1CVC4yMDIwCi0gICAgY29uc3RleHByIHN0YXRpYyBZQ2JDck1hdHJpeCBi
dDIwMjBWaWRlb01hdHJpeCB7IFBpeGVsUmFuZ2U6OlZpZGVvLCAwLjA1OTMsIDAuMjYyNyB9Owot
ICAgIGNvbnN0ZXhwciBzdGF0aWMgWUNiQ3JNYXRyaXggYnQyMDIwRnVsbE1hdHJpeCB7IFBpeGVs
UmFuZ2U6OkZ1bGwsIDAuMDU5MywgMC4yNjI3IH07Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChidDIw
MjBWaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigxNiwgIDEyOCwgMTI4LCAyNTUpKS5pc0FwcHJv
eGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAgIDEuNWYgLyAyNTUuZiksICJi
dC4yMDIwIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIGJsYWNrIGNvbG9yIik7Ci0gICAg
c3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMjM1LCAxMjgs
IDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwg
ICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSB3
aGl0ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICogR0xm
bG9hdENvbG9yKDc0LCAgOTcsICAyNDAsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6cmVkLCAgICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4
IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIw
VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTY0LCA0NywgIDI1LCAgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAiYnQu
MjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBncmVlbiBjb2xvciIpOwotICAgIHN0
YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDI5LCAgMjQwLCAx
MTksIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAg
MS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1
ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMFZpZGVvTWF0cml4ICogR0xmbG9h
dENvbG9yKDIyMiwgMTYsICAxMzcsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9h
dENvbG9yczo6eWVsbG93LCAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgdmlkZW8gbWF0cml4IGRv
ZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIw
VmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoODcsICAyMDksIDIzMSwgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAiYnQu
MjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBtYWdlbnRhIGNvbG9yIik7Ci0gICAg
c3RhdGljX2Fzc2VydCgoYnQyMDIwVmlkZW9NYXRyaXggKiBHTGZsb2F0Q29sb3IoMTc3LCAxNTks
IDE2LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpjeWFuLCAg
ICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCB2aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBj
eWFuIGNvbG9yIik7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0cml4ICogR0xm
bG9hdENvbG9yKDAsICAgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xm
bG9hdENvbG9yczo6YmxhY2ssICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVsbCBtYXRyaXgg
ZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAy
MEZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjU1LCAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp3aGl0ZSwgICAxLjVmIC8gMjU1LmYpLCAiYnQu
MjAyMCBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHdoaXRlIGNvbG9yIik7Ci0gICAgc3Rh
dGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig2NywgIDkyLCAgMjU2
LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEu
NWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgcmVkIGNv
bG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xv
cigxNzMsIDM2LCAgMTEsICAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OmdyZWVuLCAgIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90
IHByb2R1Y2UgZ3JlZW4gY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChidDIwMjBGdWxsTWF0
cml4ICogR0xmbG9hdENvbG9yKDE1LCAgMjU2LCAxMTgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVx
dWFsVG8oR0xmbG9hdENvbG9yczo6Ymx1ZSwgICAgMS41ZiAvIDI1NS5mKSwgImJ0LjIwMjAgZnVs
bCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibHVlIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyNDAsIDAsICAgMTM4LCAyNTUpKS5p
c0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUu
ZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgeWVsbG93IGNvbG9yIik7
Ci0gICAgc3RhdGljX2Fzc2VydCgoYnQyMDIwRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcig4Miwg
IDIyMCwgMjQ1LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6Om1h
Z2VudGEsIDEuNWYgLyAyNTUuZiksICJidC4yMDIwIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1
Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKGJ0MjAyMEZ1bGxNYXRyaXgg
KiBHTGZsb2F0Q29sb3IoMTg4LCAxNjQsIDEsICAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxU
byhHTGZsb2F0Q29sb3JzOjpjeWFuLCAgICAxLjVmIC8gMjU1LmYpLCAiYnQuMjAyMCBmdWxsIG1h
dHJpeCBkb2VzIG5vdCBwcm9kdWNlIGN5YW4gY29sb3IiKTsKLQotICAgIC8vIE1hdHJpY2VzIGFy
ZSBkZXJpdmVkIGZyb20gdGhlIGNvbXBvbmVudHMgaW4gdGhlIFNNUFRFIDI0ME0tMTk5OSBzcGVj
aWZpY2F0aW9uCi0gICAgLy8gaHR0cDovL2llZWV4cGxvcmUuaWVlZS5vcmcvZG9jdW1lbnQvNzI5
MTQ2MS8KLSAgICBjb25zdGV4cHIgc3RhdGljIFlDYkNyTWF0cml4IHNtcHRlMjQwTVZpZGVvTWF0
cml4IHsgUGl4ZWxSYW5nZTo6VmlkZW8sIDAuMDg3LCAwLjIxMiB9OwotICAgIGNvbnN0ZXhwciBz
dGF0aWMgWUNiQ3JNYXRyaXggc21wdGUyNDBNRnVsbE1hdHJpeCB7IFBpeGVsUmFuZ2U6OkZ1bGws
IDAuMDg3LCAwLjIxMiB9OwotCi0gICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNVmlkZW9NYXRy
aXggKiBHTGZsb2F0Q29sb3IoMTYsICAxMjgsIDEyOCwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1
YWxUbyhHTGZsb2F0Q29sb3JzOjpibGFjaywgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSB2
aWRlbyBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBibGFjayBjb2xvciIpOwotICAgIHN0YXRpY19h
c3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDIzNSwgMTI4LCAxMjgs
IDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41
ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ugd2hp
dGUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRlb01hdHJpeCAqIEdM
ZmxvYXRDb2xvcig2MiwgIDEwMiwgMjQwLCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdM
ZmxvYXRDb2xvcnM6OnJlZCwgICAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIHZpZGVvIG1h
dHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNt
cHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDE3MCwgNDIsICAyOCwgIDI1NSkpLmlz
QXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Z3JlZW4sICAgMS41ZiAvIDI1NS5m
KSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgZ3JlZW4gY29sb3Ii
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1WaWRlb01hdHJpeCAqIEdMZmxvYXRDb2xv
cigzNSwgIDI0MCwgMTE2LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xv
cnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIHZpZGVvIG1hdHJpeCBkb2Vz
IG5vdCBwcm9kdWNlIGJsdWUgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1W
aWRlb01hdHJpeCAqIEdMZmxvYXRDb2xvcigyMTYsIDE2LCAgMTQwLCAyNTUpKS5pc0FwcHJveGlt
YXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OnllbGxvdywgIDEuNWYgLyAyNTUuZiksICJTTVBU
RSAyNDBNIHZpZGVvIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHllbGxvdyBjb2xvciIpOwotICAg
IHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVvTWF0cml4ICogR0xmbG9hdENvbG9yKDgxLCAg
MjE0LCAyMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6bWFn
ZW50YSwgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHBy
b2R1Y2UgbWFnZW50YSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTVZpZGVv
TWF0cml4ICogR0xmbG9hdENvbG9yKDE4OSwgMTU0LCAxNiwgIDI1NSkpLmlzQXBwcm94aW1hdGVs
eUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0
ME0gdmlkZW8gbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgY3lhbiBjb2xvciIpOwotCi0gICAgc3Rh
dGljX2Fzc2VydCgoc21wdGUyNDBNRnVsbE1hdHJpeCAqIEdMZmxvYXRDb2xvcigwLCAgIDEyOCwg
MTI4LCAyNTUpKS5pc0FwcHJveGltYXRlbHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsYWNrLCAg
IDEuNWYgLyAyNTUuZiksICJTTVBURSAyNDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2Ug
YmxhY2sgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KChzbXB0ZTI0ME1GdWxsTWF0cml4ICog
R0xmbG9hdENvbG9yKDI1NSwgMTI4LCAxMjgsIDI1NSkpLmlzQXBwcm94aW1hdGVseUVxdWFsVG8o
R0xmbG9hdENvbG9yczo6d2hpdGUsICAgMS41ZiAvIDI1NS5mKSwgIlNNUFRFIDI0ME0gZnVsbCBt
YXRyaXggZG9lcyBub3QgcHJvZHVjZSB3aGl0ZSBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQo
KHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoNTQsICA5OCwgIDI1NiwgMjU1KSku
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjpyZWQsICAgICAxLjVmIC8gMjU1
LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHJlZCBjb2xvciIp
OwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3Io
MTc5LCAzMCwgIDE1LCAgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3Jz
OjpncmVlbiwgICAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5v
dCBwcm9kdWNlIGdyZWVuIGNvbG9yIik7Ci0gICAgc3RhdGljX2Fzc2VydCgoc21wdGUyNDBNRnVs
bE1hdHJpeCAqIEdMZmxvYXRDb2xvcigyMiwgIDI1NiwgMTE0LCAyNTUpKS5pc0FwcHJveGltYXRl
bHlFcXVhbFRvKEdMZmxvYXRDb2xvcnM6OmJsdWUsICAgIDEuNWYgLyAyNTUuZiksICJTTVBURSAy
NDBNIGZ1bGwgbWF0cml4IGRvZXMgbm90IHByb2R1Y2UgYmx1ZSBjb2xvciIpOwotICAgIHN0YXRp
Y19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBHTGZsb2F0Q29sb3IoMjMzLCAxLCAgIDE0
MiwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhHTGZsb2F0Q29sb3JzOjp5ZWxsb3csICAx
LjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1hdHJpeCBkb2VzIG5vdCBwcm9kdWNlIHll
bGxvdyBjb2xvciIpOwotICAgIHN0YXRpY19hc3NlcnQoKHNtcHRlMjQwTUZ1bGxNYXRyaXggKiBH
TGZsb2F0Q29sb3IoNzYsICAyMjYsIDI0MSwgMjU1KSkuaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhH
TGZsb2F0Q29sb3JzOjptYWdlbnRhLCAxLjVmIC8gMjU1LmYpLCAiU01QVEUgMjQwTSBmdWxsIG1h
dHJpeCBkb2VzIG5vdCBwcm9kdWNlIG1hZ2VudGEgY29sb3IiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KChzbXB0ZTI0ME1GdWxsTWF0cml4ICogR0xmbG9hdENvbG9yKDIwMSwgMTU4LCAxLCAgIDI1NSkp
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oR0xmbG9hdENvbG9yczo6Y3lhbiwgICAgMS41ZiAvIDI1
NS5mKSwgIlNNUFRFIDI0ME0gZnVsbCBtYXRyaXggZG9lcyBub3QgcHJvZHVjZSBjeWFuIGNvbG9y
Iik7Ci0KLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIG1hdHJpY2Vz
LmdldCgpLmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OlZpZGVvLCBUcmFuc2ZlckZ1bmN0aW9u
Q1Y6OmtJVFVfUl82MDFfNCksIHI2MDFWaWRlb01hdHJpeCk7Ci0gICAgICAgIG1hdHJpY2VzLmdl
dCgpLmVtcGxhY2UoTWFwS2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25DVjo6
a0lUVV9SXzYwMV80KSwgcjYwMUZ1bGxNYXRyaXgpOwotICAgICAgICBtYXRyaWNlcy5nZXQoKS5l
bXBsYWNlKE1hcEtleShQaXhlbFJhbmdlOjpWaWRlbywgVHJhbnNmZXJGdW5jdGlvbkNWOjprSVRV
X1JfNzA5XzIpLCByNzA5VmlkZW9NYXRyaXgpOwotICAgICAgICBtYXRyaWNlcy5nZXQoKS5lbXBs
YWNlKE1hcEtleShQaXhlbFJhbmdlOjpGdWxsLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl83
MDlfMiksIHI3MDlGdWxsTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFjZShN
YXBLZXkoUGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzIwMjAp
LCBidDIwMjBWaWRlb01hdHJpeCk7Ci0gICAgICAgIG1hdHJpY2VzLmdldCgpLmVtcGxhY2UoTWFw
S2V5KFBpeGVsUmFuZ2U6OkZ1bGwsIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzIwMjApLCBi
dDIwMjBGdWxsTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFjZShNYXBLZXko
UGl4ZWxSYW5nZTo6VmlkZW8sIFRyYW5zZmVyRnVuY3Rpb25DVjo6a1NNUFRFXzI0ME1fMTk5NSks
IHNtcHRlMjQwTVZpZGVvTWF0cml4KTsKLSAgICAgICAgbWF0cmljZXMuZ2V0KCkuZW1wbGFjZShN
YXBLZXkoUGl4ZWxSYW5nZTo6RnVsbCwgVHJhbnNmZXJGdW5jdGlvbkNWOjprU01QVEVfMjQwTV8x
OTk1KSwgc21wdGUyNDBNRnVsbE1hdHJpeCk7Ci0gICAgfSk7Ci0KLSAgICAvLyBXZSBzaG91bGQg
bmV2ZXIgYmUgYXNrZWQgdG8gaGFuZGxlIGEgUGl4ZWwgRm9ybWF0IHdob3NlIHJhbmdlIHZhbHVl
IGlzIHVua25vd24uCi0gICAgQVNTRVJUKHJhbmdlICE9IFBpeGVsUmFuZ2U6OlVua25vd24pOwot
ICAgIGlmIChyYW5nZSA9PSBQaXhlbFJhbmdlOjpVbmtub3duKQotICAgICAgICByYW5nZSA9IFBp
eGVsUmFuZ2U6OkZ1bGw7Ci0KLSAgICBhdXRvIGl0ZXJhdG9yID0gbWF0cmljZXMuZ2V0KCkuZmlu
ZCh7cmFuZ2UsIHRyYW5zZmVyRnVuY3Rpb259KTsKLQotICAgIC8vIEFzc3VtZSB1bmtub3duIHRy
YW5zZmVyIGZ1bmN0aW9ucyBhcmUgci42MDE6Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1hdHJpY2Vz
LmdldCgpLmVuZCgpKQotICAgICAgICBpdGVyYXRvciA9IG1hdHJpY2VzLmdldCgpLmZpbmQoe3Jh
bmdlLCBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OmtJVFVfUl82MDFfNH0pOwotCi0gICAgQVNTRVJUKGl0
ZXJhdG9yICE9IG1hdHJpY2VzLmdldCgpLmVuZCgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3ItPnNl
Y29uZDsKLX0KLQotVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OlZpZGVvVGV4dHVyZUNvcGllckNWKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQotICAgIDogbV9zaGFyZWRDb250ZXh0KGNv
bnRleHQpCi0gICAgLCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNo
YXJlZChjb250ZXh0KSkKLSAgICAsIG1fZnJhbWVidWZmZXIobV9jb250ZXh0LT5jcmVhdGVGcmFt
ZWJ1ZmZlcigpKQotewotfQotCi1WaWRlb1RleHR1cmVDb3BpZXJDVjo6flZpZGVvVGV4dHVyZUNv
cGllckNWKCkKLXsKLSAgICBpZiAobV92ZXJ0ZXhCdWZmZXIpCi0gICAgICAgIG1fY29udGV4dC0+
ZGVsZXRlQnVmZmVyKG1fdmVydGV4QnVmZmVyKTsKLSAgICBpZiAobV9wcm9ncmFtKQotICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9wcm9ncmFtKTsKLSAgICBpZiAobV95dXZWZXJ0
ZXhCdWZmZXIpCi0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKG1feXV2VmVydGV4QnVm
ZmVyKTsKLSAgICBpZiAobV95dXZQcm9ncmFtKQotICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVBy
b2dyYW0obV95dXZQcm9ncmFtKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1f
ZnJhbWVidWZmZXIpOwotfQotCi0jaWYgIUxPR19ESVNBQkxFRAotdXNpbmcgU3RyaW5nTWFwID0g
U3RkTWFwPHVpbnQzMl90LCBjb25zdCBjaGFyKj47Ci0jZGVmaW5lIFNUUklOR0lGWV9QQUlSKGUp
IGUsICNlCi1zdGF0aWMgU3RyaW5nTWFwJiBlbnVtVG9TdHJpbmdNYXAoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmdNYXA+IG1hcDsKLSAgICBpZiAobWFwLmdldCgpLmVtcHR5
KCkpIHsKLSAgICAgICAgU3RyaW5nTWFwIHN0cmluZ01hcDsKLSAgICAgICAgbWFwLmdldCgpLmVt
cGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQikpOwotICAgICAgICBt
YXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UkdCQSkp
OwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRl
eHRHTDo6TFVNSU5BTkNFX0FMUEhBKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklO
R0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpMVU1JTkFOQ0UpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkFMUEhBKSk7Ci0g
ICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdM
OjpSOCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGlj
c0NvbnRleHRHTDo6UjE2RikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllf
UEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjMyRikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFj
ZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjhVSSkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjhJKSk7Ci0g
ICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdM
OjpSMTZVSSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFw
aGljc0NvbnRleHRHTDo6UjE2SSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJ
RllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UjMyVUkpKTsKLSAgICAgICAgbWFwLmdldCgpLmVt
cGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlIzMkkpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHOCkp
OwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRl
eHRHTDo6UkcxNkYpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIo
R3JhcGhpY3NDb250ZXh0R0w6OlJHMzJGKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNU
UklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSRzhVSSkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6Ukc4SSkpOwotICAg
ICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6
UkcxNlVJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBo
aWNzQ29udGV4dEdMOjpSRzE2SSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJ
RllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UkczMlVJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSRzMySSkpOwotICAgICAg
ICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6UkdC
OCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0Nv
bnRleHRHTDo6U1JHQjgpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BB
SVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQkE4KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNl
KFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpTUkdCOF9BTFBIQTgpKTsKLSAgICAg
ICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkE0KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNz
Q29udGV4dEdMOjpSR0IxMF9BMikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJ
RllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6REVQVEhfQ09NUE9ORU5UMTYpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRI
X0NPTVBPTkVOVDI0KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlS
KEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9DT01QT05FTlQzMkYpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkRFUFRIMjRfU1RF
TkNJTDgpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhp
Y3NDb250ZXh0R0w6OkRFUFRIMzJGX1NURU5DSUw4KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBs
YWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpSR0IpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEpKTsK
LSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0
R0w6OkxVTUlOQU5DRV9BTFBIQSkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJ
RllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6TFVNSU5BTkNFKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpBTFBIQSkpOwotICAg
ICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6
UkVEKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNz
Q29udGV4dEdMOjpSR19JTlRFR0VSKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklO
R0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpERVBUSF9TVEVOQ0lMKSk7Ci0gICAgICAgIG1h
cC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05F
RF9CWVRFKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBo
aWNzQ29udGV4dEdMOjpVTlNJR05FRF9TSE9SVF81XzZfNSkpOwotICAgICAgICBtYXAuZ2V0KCku
ZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfU0hPUlRf
NF80XzRfNCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFw
aGljc0NvbnRleHRHTDo6VU5TSUdORURfU0hPUlRfNV81XzVfMSkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6QllURSkpOwotICAg
ICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0NvbnRleHRHTDo6
SEFMRl9GTE9BVCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihH
cmFwaGljc0NvbnRleHRHTDo6RkxPQVQpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RS
SU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX1NIT1JUKSk7Ci0gICAgICAg
IG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpTSE9S
VCkpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHcmFwaGljc0Nv
bnRleHRHTDo6VU5TSUdORURfSU5UKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklO
R0lGWV9QQUlSKEdyYXBoaWNzQ29udGV4dEdMOjpJTlQpKTsKLSAgICAgICAgbWFwLmdldCgpLmVt
cGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF8yXzEw
XzEwXzEwX1JFVikpOwotICAgICAgICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UXzI0XzgpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUXzMyX1VOU0lH
TkVEX0lOVF8yNF84X1JFVikpOwotCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkVEX0lOVEVHRVIpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCX0lOVEVHRVIpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkc4X1NOT1JNKSk7Ci0gICAgICAg
IG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjU2NSkpOwotICAgICAgICBt
YXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0I4X1NOT1JNKSk7Ci0gICAgICAg
IG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1IxMUZfRzExRl9CMTBGKSk7Ci0g
ICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjlfRTUpKTsKLSAg
ICAgICAgbWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMTZGKSk7Ci0gICAg
ICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjMyRikpOwotICAgICAg
ICBtYXAuZ2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0I4VUkpKTsKLSAgICAgICAg
bWFwLmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCOEkpKTsKLSAgICAgICAgbWFw
LmdldCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMTZVSSkpOwotICAgICAgICBtYXAu
Z2V0KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0IxNkkpKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCMzJVSSkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0IzMkkpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQThfU05PUk0pKTsKLSAgICAgICAgbWFwLmdl
dCgpLmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2RikpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0JBMzJGKSk7Ci0gICAgICAgIG1hcC5nZXQo
KS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQkE4VUkpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQThJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjEwX0EyVUkpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2VUkpKTsKLSAgICAgICAgbWFwLmdldCgp
LmVtcGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkdCQTE2SSkpOwotICAgICAgICBtYXAuZ2V0KCku
ZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9SR0JBMzJJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQkEzMlVJKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5l
bXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1JHQjVfQTEpKTsKLSAgICAgICAgbWFwLmdldCgpLmVt
cGxhY2UoU1RSSU5HSUZZX1BBSVIoR0xfUkcpKTsKLSAgICAgICAgbWFwLmdldCgpLmVtcGxhY2Uo
U1RSSU5HSUZZX1BBSVIoR0xfUkdCQV9JTlRFR0VSKSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBs
YWNlKFNUUklOR0lGWV9QQUlSKEdMX0RFUFRIX0NPTVBPTkVOVCkpOwotICAgICAgICBtYXAuZ2V0
KCkuZW1wbGFjZShTVFJJTkdJRllfUEFJUihHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVW
KSk7Ci0gICAgICAgIG1hcC5nZXQoKS5lbXBsYWNlKFNUUklOR0lGWV9QQUlSKEdMX1VOU0lHTkVE
X0lOVF81XzlfOV85X1JFVikpOwotI2VuZGlmCi0gICAgfQotICAgIHJldHVybiBtYXAuZ2V0KCk7
Ci19Ci0KLSNlbmRpZgotCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplQ29u
dGV4dE9iamVjdHMoKQotewotICAgIFBsYXRmb3JtR0xPYmplY3QgdmVydGV4U2hhZGVyID0gbV9j
b250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpOwot
ICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgc19yZ2JWZXJ0ZXhTaGFk
ZXIpOwotICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFkZXIpOwot
Ci0gICAgR0NHTGludCB2YWx1ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0
ZXhTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKLSAg
ICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNW
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoJXApIC0gVmVydGV4IHNoYWRlciBm
YWlsZWQgdG8gY29tcGlsZS4iLCB0aGlzKTsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFk
ZXIodmVydGV4U2hhZGVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNv
bnN0IGJvb2wgdXNlVGV4dHVyZTJEID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3VyZmFj
ZVRleHR1cmVUYXJnZXQoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKLSAgICBQ
bGF0Zm9ybUdMT2JqZWN0IGZyYWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgaWYgKHVzZVRleHR1cmUy
RCkKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNfcmdi
RnJhZ21lbnRTaGFkZXJUZXh0dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5z
aGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNfcmdiRnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVj
dGFuZ2xlKTsKLSAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QoZnJhZ21lbnRTaGFk
ZXIpOwotCi0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihmcmFnbWVudFNoYWRlciwgR3JhcGhp
Y3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOwotICAgIGlmICghdmFsdWUpIHsK
LSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBp
bGUuIiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1fcHJvZ3JhbSA9IG1fY29udGV4dC0+
Y3JlYXRlUHJvZ3JhbSgpOwotICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1fcHJvZ3JhbSwg
dmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3Byb2dyYW0sIGZy
YWdtZW50U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1fcHJvZ3JhbSk7Ci0K
LSAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihtX3Byb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdM
OjpMSU5LX1NUQVRVUywgJnZhbHVlKTsKLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIExPRyhX
ZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoJXApIC0gUHJvZ3JhbSBmYWlsZWQgdG8gbGluay4iLCB0aGlzKTsKLSAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVTaGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICAgICAgbV9jb250ZXh0LT5k
ZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwotICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVBy
b2dyYW0obV9wcm9ncmFtKTsKLSAgICAgICAgbV9wcm9ncmFtID0gMDsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZSJfcyk7Ci0gICAgbV90
ZXh0dXJlRGltZW5zaW9uc1VuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxv
Y2F0aW9uKG1fcHJvZ3JhbSwgInVfdGV4dHVyZURpbWVuc2lvbnMiX3MpOwotICAgIG1fZmxpcFlV
bmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0s
ICJ1X2ZsaXBZIl9zKTsKLSAgICBtX3N3YXBDb2xvckNoYW5uZWxzVW5pZm9ybUxvY2F0aW9uID0g
bV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCAidV9zd2FwQ29sb3JDaGFu
bmVscyJfcyk7Ci0gICAgbV9wcmVtdWx0aXBseVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfcHJlbXVsdGlwbHkiX3MpOwotICAgIG1f
cG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb25E
aXJlY3QobV9wcm9ncmFtLCAiYV9wb3NpdGlvbiJfcyk7Ci0KLSAgICBtX2NvbnRleHQtPmRldGFj
aFNoYWRlcihtX3Byb2dyYW0sIHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZXRhY2hT
aGFkZXIobV9wcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVT
aGFkZXIodmVydGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVu
dFNoYWRlcik7Ci0KLSAgICBMT0coV2ViR0wsICJVbmlmb3JtIGFuZCBBdHRyaWJ1dGUgbG9jYXRp
b25zOiB1X3RleHR1cmUgPSAlZCwgdV90ZXh0dXJlRGltZW5zaW9ucyA9ICVkLCB1X2ZsaXBZID0g
JWQsIHVfcHJlbXVsdGlwbHkgPSAlZCwgYV9wb3NpdGlvbiA9ICVkIiwgbV90ZXh0dXJlVW5pZm9y
bUxvY2F0aW9uLCBtX3RleHR1cmVEaW1lbnNpb25zVW5pZm9ybUxvY2F0aW9uLCBtX2ZsaXBZVW5p
Zm9ybUxvY2F0aW9uLCBtX3ByZW11bHRpcGx5VW5pZm9ybUxvY2F0aW9uLCBtX3Bvc2l0aW9uQXR0
cmlidXRlTG9jYXRpb24pOwotICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV9wb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKLQotICAgIG1fdmVydGV4QnVmZmVyID0gbV9j
b250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKLSAgICBmbG9hdCB2ZXJ0aWNlc1sxMl0gPSB7IC0xLCAt
MSwgMSwgLTEsIDEsIDEsIDEsIDEsIC0xLCAxLCAtMSwgLTEgfTsKLQotICAgIG1fY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBtX3ZlcnRleEJ1ZmZl
cik7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBoaWNzQ29udGV4dEdMOjpBUlJBWV9C
VUZGRVIsIHNpemVvZihmbG9hdCkgKiAxMiwgdmVydGljZXMsIEdyYXBoaWNzQ29udGV4dEdMOjpT
VEFUSUNfRFJBVyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWaWRlb1RleHR1cmVD
b3BpZXJDVjo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQotewotICAgIGNvbnN0IGJvb2wg
dXNlVGV4dHVyZTJEID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1cmVU
YXJnZXQoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKLQotICAgIFBsYXRmb3Jt
R0xPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3ND
b250ZXh0R0w6OlZFUlRFWF9TSEFERVIpOwotICAgIGlmICh1c2VUZXh0dXJlMkQpCi0gICAgICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgc195dXZWZXJ0ZXhTaGFkZXJU
ZXh0dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UodmVy
dGV4U2hhZGVyLCBzX3l1dlZlcnRleFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOwotCi0gICAgbV9j
b250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KHZlcnRleFNoYWRlcik7Ci0KLSAgICBHQ0dMaW50
IHN0YXR1cyA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdih2ZXJ0ZXhTaGFkZXIsIEdy
YXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7Ci0gICAgaWYgKCFzdGF0
dXMpIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxp
emVVVkNvbnRleHRPYmplY3RzKCVwKSAtIFZlcnRleCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUu
IiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBQbGF0Zm9ybUdMT2JqZWN0IGZy
YWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6
OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgaWYgKHVzZVRleHR1cmUyRCkKLSAgICAgICAgbV9jb250
ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0
dXJlMkQpOwotICAgIGVsc2UKLSAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21l
bnRTaGFkZXIsIHNfeXV2RnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlKTsKLQotICAgIG1f
Y29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7Ci0KLSAgICBtX2Nv
bnRleHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09N
UElMRV9TVEFUVVMsICZzdGF0dXMpOwotICAgIGlmICghc3RhdHVzKSB7Ci0gICAgICAgIExPRyhX
ZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygl
cCkgLSBGcmFnbWVudCBzaGFkZXIgZmFpbGVkIHRvIGNvbXBpbGUuIiwgdGhpcyk7Ci0gICAgICAg
IG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7Ci0gICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIG1feXV2UHJvZ3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOwot
ICAgIG1fY29udGV4dC0+YXR0YWNoU2hhZGVyKG1feXV2UHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsK
LSAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihtX3l1dlByb2dyYW0sIGZyYWdtZW50U2hhZGVy
KTsKLSAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKG1feXV2UHJvZ3JhbSk7Ci0KLSAgICBtX2Nv
bnRleHQtPmdldFByb2dyYW1pdihtX3l1dlByb2dyYW0sIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5L
X1NUQVRVUywgJnN0YXR1cyk7Ci0gICAgaWYgKCFzdGF0dXMpIHsKLSAgICAgICAgTE9HKFdlYkdM
LCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCVwKSAt
IFByb2dyYW0gZmFpbGVkIHRvIGxpbmsuIiwgdGhpcyk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVs
ZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KGZyYWdtZW50U2hhZGVyKTsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1feXV2
UHJvZ3JhbSk7Ci0gICAgICAgIG1feXV2UHJvZ3JhbSA9IDA7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gbV9jb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24obV95dXZQcm9ncmFtLCAidV95VGV4dHVyZSJfcyk7Ci0gICAgbV91
dlRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbiht
X3l1dlByb2dyYW0sICJ1X3V2VGV4dHVyZSJfcyk7Ci0gICAgbV9jb2xvck1hdHJpeFVuaWZvcm1M
b2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1feXV2UHJvZ3JhbSwgInVf
Y29sb3JNYXRyaXgiX3MpOwotICAgIG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlByb2dyYW0sICJ1X2ZsaXBZIl9zKTsKLSAgICBt
X3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG1feXV2UHJvZ3JhbSwgInVfeVRleHR1cmVTaXplIl9zKTsKLSAgICBtX3V2VGV4dHVyZVNp
emVVbmlmb3JtTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3l1dlBy
b2dyYW0sICJ1X3V2VGV4dHVyZVNpemUiX3MpOwotICAgIG1feXV2UG9zaXRpb25BdHRyaWJ1dGVM
b2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb25EaXJlY3QobV95dXZQcm9ncmFt
LCAiYV9wb3NpdGlvbiJfcyk7Ci0KLSAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihtX3l1dlBy
b2dyYW0sIHZlcnRleFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZXRhY2hTaGFkZXIobV95dXZQ
cm9ncmFtLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVy
dGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7
Ci0KLSAgICBtX3l1dlZlcnRleEJ1ZmZlciA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7Ci0g
ICAgZmxvYXQgdmVydGljZXNbMTJdID0geyAtMSwgLTEsIDEsIC0xLCAxLCAxLCAxLCAxLCAtMSwg
MSwgLTEsIC0xIH07Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
R0w6OkFSUkFZX0JVRkZFUiwgbV95dXZWZXJ0ZXhCdWZmZXIpOwotICAgIG1fY29udGV4dC0+YnVm
ZmVyRGF0YShHcmFwaGljc0NvbnRleHRHTDo6QVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMp
LCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0R0w6OlNUQVRJQ19EUkFXKTsKLSAgICBtX2NvbnRl
eHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1feXV2UG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlv
bik7Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1feXV2UG9zaXRpb25BdHRy
aWJ1dGVMb2NhdGlvbiwgMiwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FULCBmYWxzZSwgMCwgMCk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCogVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmF0
dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5cGUs
IElPU3VyZmFjZVJlZiBzdXJmYWNlLCBHQ0dMdWludCBwbGFuZSkKLXsKLSAgICBhdXRvIGRpc3Bs
YXkgPSBtX2NvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwotICAgIEVHTGludCBlZ2xUZXh0dXJl
VGFyZ2V0ID0gMDsKLQotICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfUkVDVEFOR0xFX0FSQikKLSAgICAgICAgZWdsVGV4dHVyZVRhcmdldCA9IEVHTF9URVhUVVJF
X1JFQ1RBTkdMRV9BTkdMRTsKLSAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQpCi0gICAgICAgIGVnbFRleHR1cmVUYXJnZXQgPSBFR0xfVEVYVFVSRV8y
RDsKLSAgICBlbHNlIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVW5rbm93biB0ZXh0dXJlIHRhcmdl
dCAlZC4iLCBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldCkpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0gICAgaWYgKGVnbFRleHR1cmVUYXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSkgewotICAgICAgICBMT0coV2ViR0ws
ICJNaXNtYXRjaCBpbiBFR0wgdGV4dHVyZSB0YXJnZXQgJWQuIiwgc3RhdGljX2Nhc3Q8aW50Pih0
YXJnZXQpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgY29uc3QgRUdM
aW50IHN1cmZhY2VBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9XSURUSCwgd2lkdGgsCi0g
ICAgICAgIEVHTF9IRUlHSFQsIGhlaWdodCwKLSAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9B
TkdMRSwgc3RhdGljX2Nhc3Q8RUdMaW50PihwbGFuZSksCi0gICAgICAgIEVHTF9URVhUVVJFX1RB
UkdFVCwgc3RhdGljX2Nhc3Q8RUdMaW50PihlZ2xUZXh0dXJlVGFyZ2V0KSwKLSAgICAgICAgRUdM
X1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGludGVy
bmFsRm9ybWF0KSwKLSAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9SR0JB
LAotICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KHR5
cGUpLAotICAgICAgICAvLyBPbmx5IGhhcyBhbiBlZmZlY3Qgb24gdGhlIGlPUyBTaW11bGF0b3Iu
Ci0gICAgICAgIEVHTF9JT1NVUkZBQ0VfVVNBR0VfSElOVF9BTkdMRSwgRUdMX0lPU1VSRkFDRV9S
RUFEX0hJTlRfQU5HTEUsCi0gICAgICAgIEVHTF9OT05FLCBFR0xfTk9ORQotICAgIH07Ci0gICAg
RUdMU3VyZmFjZSBwYnVmZmVyID0gRUdMX0NyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGRp
c3BsYXksIEVHTF9JT1NVUkZBQ0VfQU5HTEUsIHN1cmZhY2UsIG1fY29udGV4dC0+cGxhdGZvcm1D
b25maWcoKSwgc3VyZmFjZUF0dHJpYnV0ZXMpOwotICAgIGlmICghcGJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFFR0xfQmluZFRleEltYWdlKGRpc3BsYXksIHBidWZm
ZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKLSAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKGRpc3Bs
YXksIHBidWZmZXIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJu
IHBidWZmZXI7Ci19Ci0KLXZvaWQgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmRldGFjaElPU3VyZmFj
ZUZyb21UZXh0dXJlKHZvaWQqIGhhbmRsZSkKLXsKLSAgICBhdXRvIGRpc3BsYXkgPSBtX2NvbnRl
eHQtPnBsYXRmb3JtRGlzcGxheSgpOwotICAgIEVHTF9SZWxlYXNlVGV4SW1hZ2UoZGlzcGxheSwg
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIEVHTF9EZXN0cm95U3VyZmFjZShkaXNwbGF5
LCBoYW5kbGUpOwotfQotCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1Bs
YXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0
VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dFRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBy
ZW11bHRpcGx5QWxwaGEpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IG9ubHkgc3Vw
cG9ydHMgJzQyMHYnIGFuZCAnNDIwZicgcGl4ZWwgZm9ybWF0cy4gSW52ZXN0aWdhdGUgc3VwcG9y
dGluZyBtb3JlIHBpeGVsIGZvcm1hdHMuCi0gICAgT1NUeXBlIHBpeGVsRm9ybWF0ID0gQ1ZQaXhl
bEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZSk7Ci0gICAgaWYgKHBpeGVsRm9ybWF0ICE9
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlICYmIHBpeGVs
Rm9ybWF0ICE9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2Up
IHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBBc2tlZCB0byBjb3B5IGFuIHVuc3VwcG9ydGVk
IHBpeGVsIGZvcm1hdCAoJyVzJykuIiwgdGhpcywgRm91ckNDKHBpeGVsRm9ybWF0KS50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIElP
U3VyZmFjZVJlZiBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShpbWFnZSk7Ci0g
ICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIG5ld1N1
cmZhY2VTZWVkID0gSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNlKTsKLSAgICBpZiAoZmxpcFkgPT0g
bV9sYXN0RmxpcFkKLSAgICAgICAgJiYgc3VyZmFjZSA9PSBtX2xhc3RTdXJmYWNlIAotICAgICAg
ICAmJiBuZXdTdXJmYWNlU2VlZCA9PSBtX2xhc3RTdXJmYWNlU2VlZAotICAgICAgICAmJiBsYXN0
VGV4dHVyZVNlZWQob3V0cHV0VGV4dHVyZSkgPT0gbV9jb250ZXh0LT50ZXh0dXJlU2VlZChvdXRw
dXRUZXh0dXJlKSkgewotICAgICAgICAvLyBJZiB0aGUgdGV4dHVyZSBoYXNuJ3QgYmVlbiBtb2Rp
ZmllZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIGNvcGllZCB0byBpdCwgYW5kIHRoZQotICAgICAg
ICAvLyBpbWFnZSBoYXNuJ3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0IHdh
cyBjb3BpZWQsIHRoaXMgaXMgYSBuby1vcC4KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgaWYgKCFtX3l1dlByb2dyYW0pIHsKLSAgICAgICAgaWYgKCFpbml0aWFsaXplVVZDb250
ZXh0T2JqZWN0cygpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR0wsICJWaWRlb1RleHR1cmVDb3Bp
ZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIFVuYWJsZSB0byBp
bml0aWFsaXplIE9wZW5HTCBjb250ZXh0IG9iamVjdHMuIiwgdGhpcyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZnJhbWVidWZmZXIpOwot
Ci0gICAgLy8gQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgb3V0cHV0IHRleHR1cmUuCi0gICAgbV9j
b250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgb3V0cHV0
VGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01J
Tl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7Ci0g
ICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpD
TEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3ND
b250ZXh0R0w6OlRFWFRVUkVfMkQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKLQotICAgIG1fY29udGV4dC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHRHTDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBv
dXRwdXRUZXh0dXJlLCBsZXZlbCk7Ci0gICAgR0NHTGVudW0gc3RhdHVzID0gbV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUik7Ci0g
ICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBVbmFibGUgdG8gY3JlYXRlIGZyYW1lYnVmZmVy
IGZvciBvdXRwdXRUZXh0dXJlLiIsIHRoaXMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
MkQsIDApOwotCi0gICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1feXV2UHJvZ3JhbSk7Ci0gICAg
bV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIC8vIEJpbmQg
YW5kIHNldCB1cCB0aGUgdGV4dHVyZXMgZm9yIHRoZSB2aWRlbyBzb3VyY2UuCi0gICAgYXV0byB5
UGxhbmVXaWR0aCA9IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShzdXJmYWNlLCAwKTsKLSAgICBh
dXRvIHlQbGFuZUhlaWdodCA9IElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUoc3VyZmFjZSwgMCk7
Ci0gICAgYXV0byB1dlBsYW5lV2lkdGggPSBJT1N1cmZhY2VHZXRXaWR0aE9mUGxhbmUoc3VyZmFj
ZSwgMSk7Ci0gICAgYXV0byB1dlBsYW5lSGVpZ2h0ID0gSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQbGFu
ZShzdXJmYWNlLCAxKTsKLQotICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7Ci0KLSAgICBhdXRv
IHV2VGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTEpOwotICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB1dlRleHR1cmUpOwotICAgIG1fY29u
dGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdM
OjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4
dEdMOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAg
IG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RPX0VER0Up
OwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0R0w6OkNMQU1QX1RP
X0VER0UpOwotICAgIGF1dG8gdXZIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlk
ZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwgdXZQ
bGFuZUhlaWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDEp
OwotICAgIGlmICghdXZIYW5kbGUpIHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJl
KHV2VGV4dHVyZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBhdXRvIHlU
ZXh0dXJlID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgbV9jb250ZXh0LT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFMCk7Ci0gICAgbV9jb250ZXh0LT5i
aW5kVGV4dHVyZSh2aWRlb1RleHR1cmVUYXJnZXQsIHlUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKLSAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLSAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdF
KTsKLSAgICBhdXRvIHlIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9UZXh0
dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkVELCB5UGxhbmVXaWR0aCwgeVBsYW5lSGVp
Z2h0LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFjZSwgMCk7Ci0gICAg
aWYgKCF5SGFuZGxlKSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVy
ZSk7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQ29uZmlndXJlIHRoZSBkcmF3aW5nIHBh
cmFtZXRlcnMuCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV95VGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbiwgMCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV91dlRleHR1cmVVbmlmb3JtTG9j
YXRpb24sIDEpOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1feXV2RmxpcFlVbmlmb3JtTG9j
YXRpb24sIGZsaXBZKTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX3lUZXh0dXJlU2l6ZVVu
aWZvcm1Mb2NhdGlvbiwgeVBsYW5lV2lkdGgsIHlQbGFuZUhlaWdodCk7Ci0gICAgbV9jb250ZXh0
LT51bmlmb3JtMmYobV91dlRleHR1cmVTaXplVW5pZm9ybUxvY2F0aW9uLCB1dlBsYW5lV2lkdGgs
IHV2UGxhbmVIZWlnaHQpOwotCi0gICAgYXV0byByYW5nZSA9IHBpeGVsUmFuZ2VGcm9tUGl4ZWxG
b3JtYXQocGl4ZWxGb3JtYXQpOwotICAgIGF1dG8gdHJhbnNmZXJGdW5jdGlvbiA9IHRyYW5zZmVy
RnVuY3Rpb25Gcm9tU3RyaW5nKChDRlN0cmluZ1JlZilDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1h
Z2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpOwotICAgIGF1dG8mIGNvbG9y
TWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5n
ZSwgdHJhbnNmZXJGdW5jdGlvbik7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1f
Y29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBjb2xvck1hdHJpeC5kYXRh
KCkpOwotCi0gICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgotICAgIG1fY29udGV4dC0+ZHJh
d0FycmF5cyhHcmFwaGljc0NvbnRleHRHTDo6VFJJQU5HTEVTLCAwLCA2KTsKLQotICAgIC8vIENs
ZWFuLXVwLgotICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7Ci0gICAgbV9j
b250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7Ci0gICAgZGV0YWNoSU9TdXJmYWNlRnJv
bVRleHR1cmUoeUhhbmRsZSk7Ci0gICAgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUodXZIYW5k
bGUpOwotCi0gICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgbV9sYXN0U3VyZmFjZVNl
ZWQgPSBuZXdTdXJmYWNlU2VlZDsKLSAgICBtX2xhc3RUZXh0dXJlU2VlZC5zZXQob3V0cHV0VGV4
dHVyZSwgbV9jb250ZXh0LT50ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSk7Ci0gICAgbV9sYXN0
RmxpcFkgPSBmbGlwWTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZpZGVvVGV4dHVy
ZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm1HTE9i
amVjdCB2aWRlb1RleHR1cmVOYW1lLCBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQsIHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBH
Q0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSwgYm9vbCBzd2FwQ29sb3JDaGFubmVscykKLXsKLSAgICBMT0coV2ViR0ws
ICJWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KCVwKSAtIGludGVybmFsRm9ybWF0OiAlcywgZm9ybWF0OiAlcywgdHlwZTogJXMgZmxpcFk6ICVz
LCBwcmVtdWx0aXBseUFscGhhOiAlcyIsIHRoaXMsIGVudW1Ub1N0cmluZ01hcCgpW2ludGVybmFs
Rm9ybWF0XSwgZW51bVRvU3RyaW5nTWFwKClbZm9ybWF0XSwgZW51bVRvU3RyaW5nTWFwKClbdHlw
ZV0sIGZsaXBZID8gInRydWUiIDogImZhbHNlIiwgcHJlbXVsdGlwbHlBbHBoYSA/ICJ0cnVlIiA6
ICJmYWxzZSIpOwotCi0gICAgaWYgKCFtX3Byb2dyYW0pIHsKLSAgICAgICAgaWYgKCFpbml0aWFs
aXplQ29udGV4dE9iamVjdHMoKSkgewotICAgICAgICAgICAgTE9HKFdlYkdMLCAiVmlkZW9UZXh0
dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSglcCkgLSBVbmFi
bGUgdG8gaW5pdGlhbGl6ZSBPcGVuR0wgY29udGV4dCBvYmplY3RzLiIsIHRoaXMpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVm
ZmVyKTsKLSAgICAKLSAgICAvLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBvdXRwdXQgdGV4dHVy
ZS4KLSAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
XzJELCBvdXRwdXRUZXh0dXJlKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dEdMOjpMSU5FQVIpOwotICAgIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7Ci0gICAgbV9j
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9U
T19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0R0w6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0R0w6OkNMQU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRERpcmVj
dChHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOwotCi0gICAgbV9jb250ZXh0
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dEdMOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfMkQsIG91dHB1dFRleHR1cmUsIGxldmVsKTsKLSAgICBHQ0dMZW51bSBzdGF0dXMgPSBt
X2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZF
Ul9DT01QTEVURSkgewotICAgICAgICBMT0coV2ViR0wsICJWaWRlb1RleHR1cmVDb3BpZXJDVjo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVwKSAtIFVuYWJsZSB0byBjcmVhdGUg
ZnJhbWVidWZmZXIgZm9yIG91dHB1dFRleHR1cmUuIiwgdGhpcyk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9wcm9ncmFt
KTsKLSAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAg
Ly8gQmluZCBhbmQgc2V0IHVwIHRoZSB0ZXh0dXJlIGZvciB0aGUgdmlkZW8gc291cmNlLgotICAg
IG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTApOwot
ICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB2aWRlb1RleHR1
cmVOYW1lKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0
LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHRH
TDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFy
Z2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRl
eHRHTDo6TElORUFSKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJl
VGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4
dEdMOjpDTEFNUF9UT19FREdFKTsKLSAgICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9U
ZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNz
Q29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLQotICAgIC8vIENvbmZpZ3VyZSB0aGUgZHJhd2lu
ZyBwYXJhbWV0ZXJzLgotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fdGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiwgMCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMmYobV90ZXh0dXJlRGltZW5zaW9u
c1VuaWZvcm1Mb2NhdGlvbiwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBtX2NvbnRleHQtPnVuaWZv
cm0xaShtX2ZsaXBZVW5pZm9ybUxvY2F0aW9uLCBmbGlwWSk7Ci0gICAgbV9jb250ZXh0LT51bmlm
b3JtMWkobV9zd2FwQ29sb3JDaGFubmVsc1VuaWZvcm1Mb2NhdGlvbiwgc3dhcENvbG9yQ2hhbm5l
bHMpOwotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fcHJlbXVsdGlwbHlVbmlmb3JtTG9jYXRp
b24sIHByZW11bHRpcGx5QWxwaGEpOwotCi0gICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgot
ICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9wb3NpdGlvbkF0dHJpYnV0
ZUxvY2F0aW9uKTsKLSAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0R0w6
OkFSUkFZX0JVRkZFUiwgbV92ZXJ0ZXhCdWZmZXIpOwotICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliUG9pbnRlcihtX3Bvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4
dEdMOjpGTE9BVCwgZmFsc2UsIDAsIDApOwotICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHcmFw
aGljc0NvbnRleHRHTDo6VFJJQU5HTEVTLCAwLCA2KTsKLQotICAgIC8vIENsZWFuLXVwLgotICAg
IG1fY29udGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCAwKTsKLSAgICBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNlZGYyZDU4YWEyODU0YzNiMmY0OTI4NjZhNTA3MGRkZWFiMGRhMTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKLSNpbXBvcnQgPHd0Zi9VbnNhZmVQb2ludGVy
Lmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIqIENWSW1hZ2VCdWZmZXJSZWY7Ci10eXBl
ZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwotdHlwZWRlZiBDVkltYWdl
QnVmZmVyUmVmIENWT3BlbkdMVGV4dHVyZVJlZjsKLXR5cGVkZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBD
Vk9wZW5HTEVTVGV4dHVyZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBWaWRl
b1RleHR1cmVDb3BpZXJDViB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmKTsKLSAg
ICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKLQotICAgIGJvb2wgY29weUltYWdlVG9QbGF0Zm9y
bVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKLQotICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9Ci0K
LXByaXZhdGU6Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxh
dGZvcm1HTE9iamVjdCBpbnB1dFRleHR1cmUsIEdDR0xlbnVtIGlucHV0VGFyZ2V0LCBzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NH
TGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFksIGJvb2wgc3dhcENvbG9yQ2hhbm5lbHMpOwotCi0gICAgYm9vbCBpbml0aWFs
aXplQ29udGV4dE9iamVjdHMoKTsKLSAgICBib29sIGluaXRpYWxpemVVVkNvbnRleHRPYmplY3Rz
KCk7Ci0KLSAgICB1bnNpZ25lZCBsYXN0VGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2xhc3RUZXh0dXJlU2VlZC5nZXQodGV4dHVyZSk7Ci0gICAg
fQotCi0gICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYgbm9uLW51bGwsIG11c3QgYmUg
cmVsZWFzZWQgdmlhIHRoZQotICAgIC8vIGRldGFjaCBjYWxsIGJlbG93LgotICAgIHZvaWQqIGF0
dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5cGUs
IElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOwotICAgIHZvaWQgZGV0YWNoSU9TdXJmYWNl
RnJvbVRleHR1cmUodm9pZCogaGFuZGxlKTsKLQotICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gbV9zaGFyZWRDb250ZXh0OwotICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4g
bV9jb250ZXh0OwotCi0gICAgUGxhdGZvcm1HTE9iamVjdCBtX2ZyYW1lYnVmZmVyIHsgMCB9Owot
ICAgIFBsYXRmb3JtR0xPYmplY3QgbV9wcm9ncmFtIHsgMCB9OwotICAgIFBsYXRmb3JtR0xPYmpl
Y3QgbV92ZXJ0ZXhCdWZmZXIgeyAwIH07Ci0gICAgR0NHTGludCBtX3RleHR1cmVVbmlmb3JtTG9j
YXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV90ZXh0dXJlRGltZW5zaW9uc1VuaWZvcm1Mb2Nh
dGlvbiB7IC0xIH07Ci0gICAgR0NHTGludCBtX2ZsaXBZVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsK
LSAgICBHQ0dMaW50IG1fc3dhcENvbG9yQ2hhbm5lbHNVbmlmb3JtTG9jYXRpb24geyAtMSB9Owot
ICAgIEdDR0xpbnQgbV9wcmVtdWx0aXBseVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07Ci0gICAgR0NH
TGludCBtX3Bvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24geyAtMSB9OwotICAgIFBsYXRmb3JtR0xP
YmplY3QgbV95dXZQcm9ncmFtIHsgMCB9OwotICAgIFBsYXRmb3JtR0xPYmplY3QgbV95dXZWZXJ0
ZXhCdWZmZXIgeyAwIH07Ci0gICAgR0NHTGludCBtX3lUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsg
LTEgfTsKLSAgICBHQ0dMaW50IG1fdXZUZXh0dXJlVW5pZm9ybUxvY2F0aW9uIHsgLTEgfTsKLSAg
ICBHQ0dMaW50IG1feXV2RmxpcFlVbmlmb3JtTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQg
bV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07Ci0gICAgR0NHTGludCBtX3l1dlBv
c2l0aW9uQXR0cmlidXRlTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV95VGV4dHVyZVNp
emVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwotICAgIEdDR0xpbnQgbV91dlRleHR1cmVTaXplVW5p
Zm9ybUxvY2F0aW9uIHsgLTEgfTsKLQotICAgIGJvb2wgbV9sYXN0RmxpcFkgeyBmYWxzZSB9Owot
ICAgIFVuc2FmZVBvaW50ZXI8SU9TdXJmYWNlUmVmPiBtX2xhc3RTdXJmYWNlOwotICAgIHVpbnQz
Ml90IG1fbGFzdFN1cmZhY2VTZWVkIHsgMCB9OwotCi0gICAgdXNpbmcgVGV4dHVyZVNlZWRNYXAg
PSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPEdDR0x1aW50PiwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwotICAgIFRleHR1cmVT
ZWVkTWFwIG1fbGFzdFRleHR1cmVTZWVkOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCBjZTY1MTA5NTU3MTM0MDYyMzI4NDMwY2E5ODJkNWQwNjNhMTdmYWU0
Li5kMWVmNjM0ODFlN2Q1NTA2Zjg0YmYyYTczOWUxOTc4ODZlNjIyZjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNTEwLDYgKzUxMCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShBVkZPVU5EQVRJT04pCisgICAgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFs
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgRGVzdGluYXRpb24gPSBEZXN0aW5h
dGlvbjo6T2Zmc2NyZWVuLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCA9
IG51bGxwdHIpOwogCkBAIC03NDksNiArNzUzLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9o
YXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0R0xDVj4gbV9jdjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>