<?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>233179</bug_id>
          
          <creation_ts>2021-11-16 01:19:27 -0800</creation_ts>
          <short_desc>[WebGPU] Start preparing for serializing commands to the GPU process</short_desc>
          <delta_ts>2021-11-16 20:29:49 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1815389</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-16 01:19:27 -0800</bug_when>
    <thetext>[WebGPU] Start preparing for serializing commands to the GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815395</commentid>
    <comment_count>1</comment_count>
      <attachid>444358</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-16 01:44:32 -0800</bug_when>
    <thetext>Created attachment 444358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815478</commentid>
    <comment_count>2</comment_count>
      <attachid>444358</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-16 07:54:04 -0800</bug_when>
    <thetext>Comment on attachment 444358
Patch

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

r=me with many nits.  Comments about namespaces and std::function apply several times in the patch.

&gt; Source/WebKit/Shared/WebGPU/WebGPUBindGroupDescriptor.h:34
&gt; +namespace WebKit {
&gt; +namespace WebGPU {

namespace WebKit::WebGPU

&gt; Source/WebKit/Shared/WebGPU/WebGPUBindGroupEntry.h:32
&gt; +#include &lt;utility&gt;
&gt; +#include &lt;variant&gt;

I don&apos;t see these used directly

&gt; Source/WebKit/Shared/WebGPU/WebGPUBindGroupEntry.h:37
&gt; +enum class BindingResourceType {

: uint8_t

&gt; Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h:68
&gt; +    virtual const PAL::WebGPU::Adapter* convertAdapterFromBacking(WebGPUIdentifier) = 0;

Do we want to return raw pointers here?  What will be the lifetime of these objects?

&gt; Source/WebKit/Shared/WebGPU/WebGPUDepthStencilState.h:40
&gt; +    bool depthWriteEnabled;

Do we want to have default initializers for these to avoid uninitialized memory?

&gt; Source/WebKit/Shared/WebGPU/WebGPUDeviceDescriptor.h:40
&gt; +    // Vector&lt;KeyValuePair&lt;String, uint64_t&gt;&gt; requiredLimits;

Can we avoid adding commented code like this?

&gt; Source/WebKit/Shared/WebGPU/WebGPUOrigin3D.h:43
&gt; +}

You have comments elsewhere indicating that this closes a namespace.

&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteAdapterProxy.h:62
&gt; +    Deque&lt;std::function&lt;void(Ref&lt;PAL::WebGPU::Device&gt;)&gt;&gt; m_callbacks;

Can we use WTF::Function instead of std::function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815612</commentid>
    <comment_count>3</comment_count>
      <attachid>444358</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-16 12:50:39 -0800</bug_when>
    <thetext>Comment on attachment 444358
Patch

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

&gt;&gt; Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h:68
&gt;&gt; +    virtual const PAL::WebGPU::Adapter* convertAdapterFromBacking(WebGPUIdentifier) = 0;
&gt; 
&gt; Do we want to return raw pointers here?  What will be the lifetime of these objects?

These return non-owning nullable references.

This is used in the GPU Process. WebGPU objects will be owned by a registry, and the registry will receive messages to create / delete things. When the GPU Process receives a rendering command, that command will have one of the WebKit::WebGPU structs as its parameter, which will hold WebGPUIdentifiers inside it. There will be a function to convert a WebKit::WebGPU struct to a PAL::WebGPU struct, thereby replacing the WebGPUIdentifiers with references to objects inside the registry. That function will take one of these ConvertFromBackingContext objects as a parameter. This interface will be implemented by the registry, and it will receive the WebGPUIdentifier and return a non-owning reference to the WebGPU object it owns internally. Then, the PAL::WebGPU class complete with non-owning references will be passed down into WebGPU.framework where the rendering command will be executed.

&gt;&gt; Source/WebKit/Shared/WebGPU/WebGPUDepthStencilState.h:40
&gt;&gt; +    bool depthWriteEnabled;
&gt; 
&gt; Do we want to have default initializers for these to avoid uninitialized memory?

Yes. That&apos;s a big change, though, so I&apos;ll do it in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815616</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-16 13:19:59 -0800</bug_when>
    <thetext>Committed r285881 (244307@main): &lt;https://commits.webkit.org/244307@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815617</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-16 13:20:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/85472586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815779</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-11-16 18:44:12 -0800</bug_when>
    <thetext>This broke WinCairo, as your cq- shows... :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815805</commentid>
    <comment_count>7</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-11-16 20:29:49 -0800</bug_when>
    <thetext>Fixed cmake ENABLE(GPU_PROCESS) build in r285881.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444358</attachid>
            <date>2021-11-16 01:44:32 -0800</date>
            <delta_ts>2021-11-16 07:54:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233179-20211116014431.patch</filename>
            <type>text/plain</type>
            <size>368862</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NDA2MzI2
OWMwZWNkYmQ1YzA3ODZkZjc3MWIxOTM4MzQyZmE3NDg0Li5hMWY1Y2ExZDE3NTU2YTllYTg5OWE3
OTY5ZGU4Y2QxODdkZGQ1NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAyMS0xMS0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJHUFVdIFN0YXJ0IHByZXBhcmluZyBmb3Igc2VyaWFsaXppbmcgY29tbWFuZHMg
dG8gdGhlIEdQVSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaW55IGNsZWFudXBzLiBGb3J3YXJkLWRlY2xhcmUgdGhpbmdzIHRoYXQgY2Fu
IGJlIGZvcndhcmQgZGVjbGFyZWQuCisKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQWRhcHRlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOgorICAgICAgICAq
IHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaDoKKyAgICAgICAg
KiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaDoK
KyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50Lmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzVGltZXN0YW1wV3JpdGVzLmg6CisKIDIwMjEtMTEtMTUgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbm90aGVyIDxtb2RlbD4gYmFja2VuZCBiYWNr
ZWQgYnkgU2NlbmVLaXQgdG8gcHJvdmUgb3V0IE1vZGVsUGxheWVyIGluZnJhc3RydWN0dXJlIGEg
Yml0IG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNzAzODQxY2YyMzdmZmEzZGM3YmRiOWYzMWNiNDg1YzY4NTNm
YTgwNC4uODNjMmJjYjE2ZWIzNThkYmU2Mzc5NmU5ZTU0MDIzMmViMjc2OTdmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMTYgQEAKKzIwMjEtMTEtMTYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBTdGFydCBwcmVwYXJpbmcgZm9yIHNl
cmlhbGl6aW5nIGNvbW1hbmRzIHRvIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGludGVyYWN0aW9uIGJldHdlZW4gV2Vi
R1BVIGFuZCB0aGUgR1BVIHByb2Nlc3Mgd2lsbCB3b3JrIGFzIHN1Y2g6CisKKyAgICAgICAgMS4g
V2UgaGF2ZSBhIHZpcnR1YWwgaW50ZXJmYWNlIGluIFBBTCB3aGljaCBob2xkcyAzIHRoaW5nczoK
KyAgICAgICAgICAgICAgIGEpIFJlZmNvdW50ZWQgb2JqZWN0cyAoY29tbWFuZCBidWZmZXIsIHF1
ZXVlLCBkZXZpY2UsIGV0Yy4pLgorICAgICAgICAgICAgICAgYikgU3RydWN0cyBob2xkaW5nIGRl
c2NyaXB0b3JzIGZvciBjb21tYW5kcy4gRS5nLiBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUo
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgYykgRW51bXMKKyAgICAg
ICAgICAgVGhlIHZpcnR1YWwgaW50ZXJmYWNlIGhvbGRzIGFsbCAzIG9mIHRoZXNlIHRoaW5ncy4g
Rm9yIHJlZmNvdW50ZWQgb2JqZWN0cywgaXQgaG9sZHMgdmlydHVhbCBpbnRlcmZhY2VzIHdpdGgg
bm8KKyAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLiAoVGhlcmUgaXMgb25lIGltcGxlbWVudGF0
aW9uIG9mIHRoZXNlIGludGVyZmFjZXMgd2hpY2ggY29ubmVjdHMgdGhlbSB0byBXZWJHUFUuZnJh
bWV3b3JrLikKKyAgICAgICAgMi4gVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGltcGxlbWVudGF0aW9u
IG9mIHRoZXNlIHZpcnR1YWwgaW50ZXJmYWNlcywgY2FsbGVkIFJlbW90ZSoqKlByb3h5LCBpbgor
ICAgICAgICAgICBXZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVLiBUaGUgaW1w
bGVtZW50YXRpb24gb2YgYWxsIHRoZSBtZXRob2RzIGluIHRoaXMgaW1wbGVtZW50YXRpb24gd2ls
bCBzaW1wbHkKKyAgICAgICAgICAgc2VuZCBtZXNzYWdlcyB0byB0aGUgR1BVIHByb2Nlc3MuIElu
IHRoaXMgcGF0Y2gsIHRoZXNlIG1ldGhvZHMgYXJlIHN0aWxsIHN0dWJzIC0gdGhleSdsbCBiZSBm
aWxsZWQgaW4gaW4gYQorICAgICAgICAgICBzdWJzZXF1ZW50IHBhdGNoLgorICAgICAgICAzLiBU
aGUgYXJndW1lbnRzIHRvIHRoZSBjb21tYW5kcyBjb25zaXN0IG9mIHRoZSBzdHJ1Y3RzIGFuZCBl
bnVtcyBmcm9tIFBBTC4gSG93ZXZlciwgd2UgY2FuJ3QgdXNlIHRoZSBzdHJ1Y3RzCisgICAgICAg
ICAgIGRpcmVjdGx5LCBiZWNhdXNlIHRoZSBzdHJ1Y3RzIGhvbGQgcmVmZXJlbmNlcyB0byB0aGUg
cmVmY291bnRlZCBvYmplY3RzLiBFLmcuIGEgQmluZEdyb3VwRGVzY3JpcHRvciBob2xkcyBhCisg
ICAgICAgICAgIHJlZmVyZW5jZSB0byB0aGUgQnVmZmVyIHdoaWNoIHNob3VsZCBiZSBwYXJ0IG9m
IHRoZSBiaW5kIGdyb3VwLiBXZSBjYW4ndCBzZW5kIHJlZmNvdW50ZWQgb2JqZWN0cyBhY3Jvc3Mg
SVBDLAorICAgICAgICAgICBzbyBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIG9iamVjdHMsIHdlIHNl
bmQgYSBXZWJHUFVJZGVudGlmaWVyIGluc3RlYWQuIEV2ZXJ5IHJlZmNvdW50ZWQgb2JqZWN0IGdl
dHMgYSB1bmlxdWUKKyAgICAgICAgICAgV2ViR1BVIGlkZW50aWZpZXIuIEhvd2V2ZXIsIGJlY2F1
c2UgdGhlc2UgcmVmZXJlbmNlcyB0byBSZWZDb3VudGVkIG9iamVjdHMgYXJlIGJ1cmllZCBkZWVw
IGluc2lkZSBuZXN0ZWQgc3RydWN0cywKKyAgICAgICAgICAgd2UgY2FuJ3Qgc2ltcGx5IHVzZSB0
aGUgc3RydWN0cyBvdXQgb2YgdGhlIGJveC4gSW5zdGVhZCwgd2UgaGF2ZSB0byBoYXZlIGEgcGFy
YWxsZWwgc2V0IG9mIHN0cnVjdHMsIHdoZXJlIHRoZQorICAgICAgICAgICByZWZlcmVuY2VzIGFy
ZSByZXBsYWNlZCB3aXRoIFdlYkdQVUlkZW50aWZpZXJzLiBUaGVzZSBzdHJ1Y3RzIHdpbGwgYmUg
dGhlIG9uZXMgYWN0dWFsbHkgc2VudCBhY3Jvc3MgdGhlIHdpcmUuCisgICAgICAgIDQuIFRoZSBl
bnVtcyBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbSwgc28gdGhvc2UgYXJlIHVudG91Y2hlZC4gQSBz
dWJzZXF1ZW50IHBhdGNoIHdpbGwgYmUgYWRkaW5nIHRoZSBFbnVtVHJhaXRzCisgICAgICAgICAg
IGRpcmVjdGx5IGluIFBBTCB0byBtYWtlIHRoZW0gc2VyaWFsaXphYmxlLgorICAgICAgICA1LiBV
cG9uIHJlY2VpdmluZyBhIHN0cnVjdCBmcm9tIHRoZSB3aXJlLCB3ZSdyZSBnb2luZyB0byBoYXZl
IHRvIGNvbnZlcnQgaXQgYmFjayBpbnRvIGl0cyBjb3JyZXNwb25kaW5nIFBBTCB0eXBlLAorICAg
ICAgICAgICB3aGljaCBtZWFucyB3ZSBoYXZlIHRvIGZpbmQgdGhlIG9iamVjdCBhc3NvY2lhdGVk
IHdpdGggdGhlIFdlYkdQVUlkZW50aWZpZXIuIFRoZSBzZXJpYWxpemVycyB0aGVtc2VsdmVzIGNh
bid0IGRvCisgICAgICAgICAgIHRoaXMsIGJlY2F1c2UgdGhleSBsYWNrIHRoZSBjb250ZXh0IG5l
Y2Vzc2FyeSBmb3IgcGVyZm9ybWluZyB0aGUgbG9va3VwLiBUaGlzIHBhdGNoIGFkZHMgdHdvIG5l
dyBjb250ZXh0IG9iamVjdHMKKyAgICAgICAgICAgd2hpY2ggd2UnbGwgdXNlIG91cnNlbHZlcyB3
aGVuIGltcGxlbWVudGluZyBvdXIgb3duIGNvbnZlcnNpb25zIC0gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQgYW5kCisgICAgICAgICAgIENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuIE9ubHkgdGhl
IGZpcnN0IG9uZSBpcyBpbXBsZW1lbnRlZCBpbiB0aGlzIHBhdGNoOyB0aGUgc2Vjb25kIHdpbGwg
YmUgaW1wbGVtZW50ZWQgaW4gYQorICAgICAgICAgICBzdWJzZXF1ZW50IHBhdGNoLgorICAgICAg
ICA2LiBUaGUgR1BVIHByb2Nlc3Mgc2lkZSB3b24ndCBhY3R1YWxseSBpbXBsZW1lbnQgdGhlIHZp
cnR1YWwgaW50ZXJmYWNlIC0gb25seSB0aGUgd2ViIHByb2Nlc3Mgc2lkZSB3aWxsIGltcGxlbWVu
dCBpdC4KKyAgICAgICAgICAgSW5zdGVhZCwgdGhlIEdQVSBwcm9jZXNzIGhhcyB0byBtYW5hZ2Ug
bGlmZXRpbWUgb2YgdGhlIG9iamVjdHMuIEp1c3QgbGlrZSBob3cgMkQgY2FudmFzIGluIHRoZSBH
UFUgcHJvY2VzcyBoYXMKKyAgICAgICAgICAgYSBSZW1vdGVSZXNvdXJjZUNhY2hlLCB0aGUgV2Vi
R1BVIG9iamVjdHMgd2lsbCBiZSBvd25lZCBieSBhIGhpZ2gtbGV2ZWwgb2JqZWN0IGluIHRoZSBH
UFUgcHJvY2Vzcy4gVGhlCisgICAgICAgICAgIG93bmVyc2hpcCB3aWxsIGJlIHRvcC1kb3duIGlu
IHRoZSBHUFUgcHJvY2Vzcywgd2hlcmUgRGV2aWNlcyBoYXZlIHN0cm9uZyByZWZlcmVuY2VzIHRv
IFRleHR1cmVzLCBhbmQgVGV4dHVyZXMKKyAgICAgICAgICAgaGF2ZSBzdHJvbmcgcmVmZXJlbmNl
cyB0byBUZXh0dXJlVmlld3MuIE9uIHRoZSBvdGhlciBoYW5kLCBpbiB0aGUgV2ViIHByb2Nlc3Ms
IG93bmVyc2hpcCB3aWxsIGJlIGJvdHRvbS11cDoKKyAgICAgICAgICAgSmF2YVNjcmlwdCB3aWxs
IGhhdmUgc3Ryb25nIHJlZmVyZW5jZXMgdG8gVGV4dHVyZVZpZXdzLCBUZXh0dXJlVmlld3Mgd2ls
bCBoYXZlIHN0cm9uZyByZWZlcmVuY2VzIHRvIFRleHR1cmVzLCBhbmQKKyAgICAgICAgICAgVGV4
dHVyZXMgd2lsbCBoYXZlIHN0cm9uZyByZWZlcmVuY2VzIHRvIERldmljZXMuIFRoaXMgd29ya3Mg
b3V0IHF1aXRlIG5pY2VseSAtIGl0IG1lYW5zIHRoYXQsIHdoZW4gR0MgcnVucyBhbmQKKyAgICAg
ICAgICAgYSBUZXh0dXJlVmlldyBnZXRzIGRlbGV0ZWQsIHRoZSBUZXh0dXJlVmlldyB0ZWxscyBp
dHMgb3duZXIgdGhhdCBpdCdzIGdldHRpbmcgZGVzdHJveWVkLCBpdHMgb3duZXIgc2VuZHMgYQor
ICAgICAgICAgICBtZXNzYWdlIHRvIHRoZSBHUFUgcHJvY2VzcywgYW5kIHRoZSBjb3JyZXNwb25k
aW5nIG93bmVyIGluIHRoZSBHUFUgcHJvY2VzcyBsb29rcyB1cCBpdHMgcmVsZXZhbnQgY2hpbGQg
aW4gaXRzCisgICAgICAgICAgIGNoaWxkcmVuIGxpc3QsIGFuZCBkZWxldGUgaXQuIEVhc3kgcGVh
c3kuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlICh5ZXQpLiBXZSdyZSBnZXR0aW5nIGNsb3NlLCB0aG91Z2ghCisKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRW50cnkuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgu
CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVC
dWZmZXJCaW5kaW5nLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBv
bmVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VUJsZW5kU3RhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQ
VS9XZWJHUFVCdWZmZXJCaW5kaW5nLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuaC4KKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgu
CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZh
c0NvbmZpZ3VyYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5oLgorICAgICAgICAqIFNoYXJlZC9X
ZWJHUFUvV2ViR1BVQ29sb3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmguCisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuaC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1h
bmRFbmNvZGVyRGVzY3JpcHRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmguCisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBh
c3NUaW1lc3RhbXBXcml0ZXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1h
Z2VDb3B5QnVmZmVyLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYkdQ
VS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmguCisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0
b3IuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNELmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NUaW1lc3RhbXBXcml0ZXMuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmguCisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50
U3RhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJH
UFVJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAq
IFNoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5k
aW5nLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUltYWdlQ29weVRleHR1cmUuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdl
Q29weVRleHR1cmVUYWdnZWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmguCisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oLgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZm
ZXIuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUltYWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT3Jp
Z2luMkQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmguCisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVPcmlnaW4zRC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oLgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5o
LgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2UuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0
RGVzY3JpcHRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmguCisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaC4KKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJE
ZXNjcmlwdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50LmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oLgorICAg
ICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzTGF5b3V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oLgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
VGltZXN0YW1wV3JpdGVzLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oLgorICAgICAgICAqIFNoYXJlZC9X
ZWJHUFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuaC4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdl
Q29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2Ny
aXB0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oLgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUlt
YWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRl
eHR1cmVCaW5kaW5nTGF5b3V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5oLgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgu
CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmguCisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oLgorICAgICAgICAq
IFNoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QXR0cmlidXRlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5o
LgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oLgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BV
VmVydGV4U3RhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZUFkYXB0ZXJQcm94eTo6UmVtb3RlQWRhcHRlclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVBZGFwdGVyUHJveHk6On5SZW1vdGVBZGFwdGVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6cmVxdWVzdERldmljZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQ
cm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVC
aW5kR3JvdXBMYXlvdXRQcm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJpbmRHcm91cExheW91dFByb3h5Ojp+UmVtb3RlQmlu
ZEdyb3VwTGF5b3V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJpbmRH
cm91cExheW91dFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCaW5kR3JvdXBQcm94eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmguCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdyb3VwUHJveHk6OlJlbW90
ZUJpbmRHcm91cFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5kR3Jv
dXBQcm94eTo6flJlbW90ZUJpbmRHcm91cFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVCaW5kR3JvdXBQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
QWRhcHRlckltcGwuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQnVmZmVyUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5o
LgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZm
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6On5S
ZW1vdGVCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVy
UHJveHk6Om1hcEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQ
cm94eTo6Z2V0TWFwcGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1
ZmZlclByb3h5Ojp1bm1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVy
UHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclBy
b3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJv
eHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oLgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6UmVtb3RlQ29tbWFuZEJ1ZmZl
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kQnVmZmVyUHJv
eHk6On5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5Ojp+UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6YmVnaW5SZW5kZXJQYXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpiZWdpbkNvbXB1
dGVQYXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5Ojpjb3B5QnVmZmVyVG9CdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9CdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6
OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5OjpmaWxsQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cG9wRGVidWdHcm91cCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6aW5z
ZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHk6OndyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpyZXNvbHZlUXVlcnlTZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRl
cm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OlJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6flJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5OjpkaXNwYXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNoSW5kaXJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpiZWdpblBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQ
YXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21w
dXRlUGFzc0VuY29kZXJQcm94eTo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpwb3BEZWJ1Z0dyb3VwKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6aW5z
ZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaC4K
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6UmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5Ojp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpnZXRCaW5k
R3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVy
SW1wbC5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVE
ZXZpY2VQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpSZW1vdGVEZXZpY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlRGV2aWNlUHJveHk6On5SZW1vdGVEZXZpY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFsVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJp
bmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJv
eHk6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVEZXZpY2VQcm94eTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
RGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlckJ1bmRs
ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5Ojpj
cmVhdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJv
eHk6OnB1c2hFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZp
Y2VQcm94eTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
RGV2aWNlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHku
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oLgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpSZW1vdGVFeHRlcm5hbFRleHR1
cmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJl
UHJveHk6On5SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1
cmVQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVHUFVQcm94eTo6
UmVtb3RlR1BVUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUdQVVByb3h5
Ojp+UmVtb3RlR1BVUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUdQVVBy
b3h5OjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVVByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmguCisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6UmVtb3RlUGlwZWxpbmVMYXlvdXRQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eTo6flJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQWRhcHRlckltcGwuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxB
dHRhY2htZW50LmguCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVlcnlTZXRQcm94
eTo6UmVtb3RlUXVlcnlTZXRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
UXVlcnlTZXRQcm94eTo6flJlbW90ZVF1ZXJ5U2V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVF1ZXJ5U2V0UHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVF1ZXJ5U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQWRhcHRlckltcGwuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVldWVQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6On5SZW1vdGVRdWV1ZVByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5OjpzdWJtaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6Om9uU3VibWl0dGVkV29ya0RvbmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OndyaXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5Ojp3cml0ZVRleHR1cmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OmNvcHlFeHRlcm5hbEltYWdl
VG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVldWVQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6flJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRWZXJ0ZXhC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eTo6ZHJhdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kaXJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4
ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6cG9wRGVidWdH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
clByb3h5OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5OjpSZW1vdGVSZW5kZXJCdW5kbGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6On5SZW1vdGVSZW5kZXJCdW5kbGVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OnNl
dExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5Ojp+UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRWZXJ0
ZXhCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyUHJveHk6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kaXJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkSW5k
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHk6OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6Omluc2Vy
dERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0U2Npc3NvclJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEJsZW5kQ29uc3Rh
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OnNldFN0ZW5jaWxSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmJlZ2luT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZE9jY2x1c2lv
blF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQaXBlbGluZVN0YXRpc3Rp
Y3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXJQcm94eTo6ZXhlY3V0ZUJ1bmRsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5OjpSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5Ojp+UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJQaXBlbGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVNhbXBsZXJQcm94eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmguCisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2FtcGxlclByb3h5OjpSZW1vdGVTYW1wbGVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNhbXBsZXJQcm94eTo6flJlbW90ZVNhbXBs
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2FtcGxlclByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlU2FtcGxlclByb3h5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oLgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6On5SZW1v
dGVTaGFkZXJNb2R1bGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hh
ZGVyTW9kdWxlUHJveHk6OmNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LmguCisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlVGV4dHVyZVByb3h5OjpS
ZW1vdGVUZXh0dXJlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1
cmVQcm94eTo6flJlbW90ZVRleHR1cmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGVWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6
OlJlbW90ZVRleHR1cmVWaWV3UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVRleHR1cmVWaWV3UHJveHk6On5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpzZXRMYWJlbEludGVybmFsKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXdQcm94eS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorCiAyMDIxLTExLTE1ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI4NTgxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaAppbmRleCA0NmQyZGI1
MDg1ODM5OWU2NGE4YWZkN2RlYjhlMjk1OGZiNGE3Y2QxLi42OWQzMmVhNWM1NjY4MWE5OThlYzE3
MTFhZWFlYTcxZWYwYTQ2ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oCkBAIC02
MSw5ICs2MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXMsIFdHUFVEZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwog
ICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiwgc3RkOjpmdW5j
dGlvbjx2b2lkKFJlZjxEZXZpY2U+KT4mJikgZmluYWw7CiAKLSAgICBXR1BVQWRhcHRlciBtX2Jh
Y2tpbmcgeyBudWxscHRyIH07Ci0KICAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmPERl
dmljZT4pPj4gbV9jYWxsYmFja3M7CisKKyAgICBXR1BVQWRhcHRlciBtX2JhY2tpbmcgeyBudWxs
cHRyIH07CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oCmluZGV4
IDY1YTRmMzNjMmE4ZWVjZmI1ZTNlZTNhNWJkYzVkNDlkMDE0YjI5YzIuLmFiZTkyNGQ0MzYyZTA4
YzQwZGQxZjI1MWJjYWUyYTQzNTcyMDA1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmgKQEAgLTI2LDEzICsyNiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJX
ZWJHUFVCaW5kR3JvdXBFbnRyeS5oIgotI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5o
IgogI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFz
cyBCaW5kR3JvdXBMYXlvdXQ7CisKIHN0cnVjdCBCaW5kR3JvdXBEZXNjcmlwdG9yIDogcHVibGlj
IE9iamVjdERlc2NyaXB0b3JCYXNlIHsKICAgICBCaW5kR3JvdXBMYXlvdXQmIGxheW91dDsKICAg
ICBWZWN0b3I8QmluZEdyb3VwRW50cnk+IGVudHJpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmgK
aW5kZXggNWE0MzAxMWJkYTM1NmM2NDcyYzM0NmMzNmRmMTc3MzRlMWMwNTI1Zi4uNjBmM2IyZjQ5
NGU2YjQ1ODYyZWFjMDI5NWRmYmZmMGNmZWRhZmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcu
aApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIldlYkdQVUJ1
ZmZlci5oIgogI2luY2x1ZGUgIldlYkdQVUludGVncmFsVHlwZXMuaCIKICNpbmNsdWRlIDxvcHRp
b25hbD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zMyw2ICszMiw4IEBACiBuYW1lc3BhY2Ug
UEFMIHsKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBCdWZmZXI7CisKIHN0cnVjdCBCdWZm
ZXJCaW5kaW5nIHsKICAgICBCdWZmZXImIGJ1ZmZlcjsKICAgICBTaXplNjQgb2Zmc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmgKaW5kZXggNjQ4ZDk2
YTAwNTBlNjM5NmY1MWI2OWI4NmU5ODU1NDIzMjg1Zjg3OS4uOThmYzI1MjNjMjA1ZThlODU4Yzc5
Mzg4ZGE3OGNlMTFkN2YyY2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlcy5oCkBAIC0yNywxMyArMjcsMTQgQEAKIAogI2luY2x1ZGUgIldlYkdQVUNv
bXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5
cGVzLmgiCi0jaW5jbHVkZSAiV2ViR1BVUXVlcnlTZXQuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIG5hbWVzcGFjZSBX
ZWJHUFUgewogCitjbGFzcyBRdWVyeVNldDsKKwogc3RydWN0IENvbXB1dGVQYXNzVGltZXN0YW1w
V3JpdGUgewogICAgIFF1ZXJ5U2V0JiBxdWVyeVNldDsKICAgICBTaXplMzIgcXVlcnlJbmRleDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUltYWdlQ29weUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgKaW5kZXggZGYyNmQ0YjA4NTUxMDc3ZDMwMGQ5Y2Uy
ZWVhZmY5YmFhNjA4MWUxMi4uNzJmZTg5NjJkNGM4ZjI3Njg4Mzk5MDEzMWIxMjM4YzA3YTk3MmUx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVSW1hZ2VDb3B5QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdQ
VUltYWdlRGF0YUxheW91dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFBB
TCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgQnVmZmVyOworCiBzdHJ1Y3QgSW1hZ2VD
b3B5QnVmZmVyIDogcHVibGljIEltYWdlRGF0YUxheW91dCB7CiAgICAgQnVmZmVyJiBidWZmZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5oCmluZGV4IDk2YzAxYTI5MGQ4MTZiZGU0
NTcwYzJmYmVhZGI0ZGZhYTQwOTEwMTkuLmUxNzk2MzgwZGRmNzZkOTRhY2M2NDNhZjliMWY0MjU2
MmQzNDZmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmgKQEAgLTI3LDcgKzI3LDYg
QEAKIAogI2luY2x1ZGUgIldlYkdQVUludGVncmFsVHlwZXMuaCIKICNpbmNsdWRlICJXZWJHUFVP
cmlnaW4zRC5oIgotI2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHUFVU
ZXh0dXJlQXNwZWN0LmgiCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtMzUsNiArMzQsOCBAQAogbmFtZXNwYWNlIFBBTCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsK
IAorY2xhc3MgVGV4dHVyZTsKKwogc3RydWN0IEltYWdlQ29weVRleHR1cmUgewogICAgIFRleHR1
cmUmIHRleHR1cmU7CiAgICAgSW50ZWdlckNvb3JkaW5hdGUgbWlwTGV2ZWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKaW5kZXggZmExOGJkYTAyZTczNGI1YTVjNDYy
MGI2NjVhOTBhMjIzZTY1MGMxZC4uZmUxODc0YjdkZTlkMjBiYjAzMjk0ODg4ZTdmZjRiNTgwM2Yw
OWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMjYs
MTEgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2Ny
aXB0b3JCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXQuaCIKIAogbmFtZXNw
YWNlIFBBTCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgUGlwZWxpbmVMYXlvdXQ7CisK
IHN0cnVjdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JC
YXNlIHsKICAgICBQaXBlbGluZUxheW91dCogbGF5b3V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKaW5kZXggMmQ1ZDg0MDY4YWUxNjJhYjhhMWFlNjJm
MTAzYzYxNzI4ZDZkMDhhMC4uOWQyNmYyOTBkZjYwOTEwMDQyZGJhOWE4MWRiYzNiNGJlNzk4ZWE4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmgKQEAgLTI1
LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBM
YXlvdXQuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgogI2luY2x1
ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzMsNiArMzIsOCBAQAog
bmFtZXNwYWNlIFBBTCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgQmluZEdyb3VwTGF5
b3V0OworCiBzdHJ1Y3QgUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERl
c2NyaXB0b3JCYXNlIHsKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxCaW5kR3Jv
dXBMYXlvdXQ+PiBiaW5kR3JvdXBMYXlvdXRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVT
dGFnZS5oCmluZGV4IDYxMDZjMDg5NjBiNGIxN2U4MTUzNWI2NjdmYzA3ZDdmOWZjYzcxZjkuLmQz
NjI1OTQzM2I5MTJhNDczMWRhYmE4NDc5YzFhNTZkYjcyMmRkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2UuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgogI2luY2x1ZGUgPHd0Zi9LZXlWYWx1ZVBhaXIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzMs
NiArMzIsOCBAQAogbmFtZXNwYWNlIFBBTCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3Mg
U2hhZGVyTW9kdWxlOworCiB1c2luZyBQaXBlbGluZUNvbnN0YW50VmFsdWUgPSBkb3VibGU7IC8v
IE1heSByZXByZXNlbnQgV0dTTOKAmXMgYm9vbCwgZjMyLCBpMzIsIHUzMi4KIAogc3RydWN0IFBy
b2dyYW1tYWJsZVN0YWdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQuaAppbmRleCAzNGIxNjBjZTE4ZjkxNjQxMDIzOWU0YWJlMWY4MmQ0MDlhYjdiNWVhLi5k
NDU3MDYxMDAwZWZkMjk5ZGNkZjM1MmY4NDQxOWQyZTQyMzNiMDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5j
bHVkZSAiV2ViR1BVQ29sb3IuaCIKICNpbmNsdWRlICJXZWJHUFVMb2FkT3AuaCIKICNpbmNsdWRl
ICJXZWJHUFVTdG9yZU9wLmgiCi0jaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKICNpbmNs
dWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0zNiw2ICszNSw4IEBACiBuYW1lc3BhY2UgUEFMIHsKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCitjbGFzcyBUZXh0dXJlVmlldzsKKwogc3RydWN0IFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnQgewogICAgIFRleHR1cmVWaWV3JiB2aWV3OwogICAgIFRleHR1cmVWaWV3KiByZXNvbHZlVGFy
Z2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LmgKaW5kZXggOWE0NGU1MjM0NWU0MGFiZGRmMmNjNzQ3ZDg2ZTk1N2RhNjA3OTk3Zi4u
M2ZiYTYyZWMzZGQ0NmI4MDU3NWUzMGRmZDU2NzM2YTAyMGUzZmMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5oCkBAIC0yOCwx
MyArMjgsMTQgQEAKICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5cGVzLmgiCiAjaW5jbHVkZSAi
V2ViR1BVTG9hZE9wLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3RvcmVPcC5oIgotI2luY2x1ZGUgIldl
YkdQVVRleHR1cmVWaWV3LmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKIG5hbWVzcGFjZSBQQUwgewogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK2NsYXNzIFRleHR1
cmVWaWV3OworCiBzdHJ1Y3QgUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQgewogICAg
IFRleHR1cmVWaWV3JiB2aWV3OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0
YW1wV3JpdGVzLmgKaW5kZXggZTk0OGJkY2U2NWVhNjQ0ZTQ2NzUxNzQ5Zjg2ZGI1YjcwYmRjZTgw
Yi4uZGJjMmU5OGY4MWM1ZmEwMThmODM4MTJiZGFmYjAxODM2ZjdiODA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1Rp
bWVzdGFtcFdyaXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuaApAQCAtMjYsNyArMjYsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJHUFVJbnRlZ3JhbFR5cGVzLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVUXVlcnlTZXQuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1w
TG9jYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMzQsNiArMzMsOCBAQAogbmFtZXNwYWNlIFBBTCB7CiBuYW1lc3BhY2UgV2ViR1BVIHsK
IAorY2xhc3MgUXVlcnlTZXQ7CisKIHN0cnVjdCBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUgewog
ICAgIFF1ZXJ5U2V0JiBxdWVyeVNldDsKICAgICBTaXplMzIgcXVlcnlJbmRleDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhNWU1YjE4MDMzNjI3Y2Q3M2RhYTc4MjY0ZDM5NThlYzg1NGZlNTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cEVudHJ5LmgiCisjaW5jbHVkZSAiV2Vi
R1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFj
ZSBXZWJHUFUgeworCitzdHJ1Y3QgQmluZEdyb3VwRGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3RE
ZXNjcmlwdG9yQmFzZSB7CisgICAgV2ViR1BVSWRlbnRpZmllciBiaW5kR3JvdXBMYXlvdXQ7Cisg
ICAgVmVjdG9yPEJpbmRHcm91cEVudHJ5PiBlbnRyaWVzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU0NWZlODMyYjUy
MzY4ZWRmNTg2MGIzNjIxMmFiNTFjZGNmNTNhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJp
bmRpbmcuaCIKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx2YXJpYW50PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJH
UFUgeworCitlbnVtIGNsYXNzIEJpbmRpbmdSZXNvdXJjZVR5cGUgeworICAgIFNhbXBsZXIsCisg
ICAgVGV4dHVyZVZpZXcsCisgICAgQnVmZmVyQmluZGluZywKKyAgICBFeHRlcm5hbFRleHR1cmUs
Cit9OworCitzdHJ1Y3QgQmluZEdyb3VwRW50cnkgeworICAgIFBBTDo6V2ViR1BVOjpJbmRleDMy
IGJpbmRpbmc7CisgICAgQnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5nOworICAgIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBCaW5kaW5nUmVzb3VyY2VUeXBlIHR5cGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjYjNlOGVhODY0MmIxYWVhNjZmMGJjNTkxNjMz
NTQ1ZmQyMzM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwTGF5b3V0
RW50cnkuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BV
IHsKKworc3RydWN0IEJpbmRHcm91cExheW91dERlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVz
Y3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxCaW5kR3JvdXBMYXlvdXRFbnRyeT4gZW50cmllczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0
RW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlv
dXRFbnRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMWE4ZjNlMTQzMzg4NzgwMjQ1YzQ2NTE5NDIxODg3MTU1
ZWQ1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0RW50cnkuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0LmgiCisj
aW5jbHVkZSAiV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5oIgorI2luY2x1ZGUg
IldlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmgiCisjaW5jbHVkZSAiV2ViR1BVU3RvcmFnZVRl
eHR1cmVCaW5kaW5nTGF5b3V0LmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlv
dXQuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVNoYWRlclN0YWdlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQ
VSB7CisKK3N0cnVjdCBCaW5kR3JvdXBMYXlvdXRFbnRyeSB7CisgICAgUEFMOjpXZWJHUFU6Oklu
ZGV4MzIgYmluZGluZzsKKyAgICBQQUw6OldlYkdQVTo6U2hhZGVyU3RhZ2VGbGFncyB2aXNpYmls
aXR5OworCisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJCaW5kaW5nTGF5b3V0PiBidWZmZXI7Cisg
ICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gc2FtcGxlcjsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHR1cmVCaW5kaW5nTGF5b3V0PiB0ZXh0dXJlOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0PiBzdG9yYWdlVGV4dHVyZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IGV4dGVybmFsVGV4dHVyZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBvbmVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEwZDkyYjJiODZmMjI4MjU4MGRiYTZjNjVhZTZkZTg1ODlhZjcxNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21w
b25lbnQuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJsZW5kRmFjdG9yLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCbGVuZE9wZXJhdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgQmxlbmRDb21wb25lbnQg
eworICAgIFBBTDo6V2ViR1BVOjpCbGVuZE9wZXJhdGlvbiBvcGVyYXRpb247CisgICAgUEFMOjpX
ZWJHUFU6OkJsZW5kRmFjdG9yIHNyY0ZhY3RvcjsKKyAgICBQQUw6OldlYkdQVTo6QmxlbmRGYWN0
b3IgZHN0RmFjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFj
ZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVC
bGVuZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjljMzQxYjkwYTU3NzBkMjFlZTE2YWFjOTkzM2Y0YjllMjQyNGFiNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxl
bmRTdGF0ZS5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIldlYkdQVUJsZW5kQ29tcG9uZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
bmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBCbGVuZFN0YXRlIHsKKyAgICBCbGVuZENvbXBv
bmVudCBjb2xvcjsKKyAgICBCbGVuZENvbXBvbmVudCBhbHBoYTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWY4YzgyYTQw
MWMxYmQxMDc3ODEyZTNhYWYxMGUyYTRhN2JjNzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuaApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVJbnRlZ3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgQnVmZmVyQmluZGluZyB7
CisgICAgV2ViR1BVSWRlbnRpZmllciBidWZmZXI7CisgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBv
ZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZ0xheW91
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2OTU1NTRjMDhkODU5NTFjOWQwOTlmNGQ5YjEwNjU4Y2M2Mjg3NTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVm
ZmVyQmluZGluZ0xheW91dC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGlu
Z1R5cGUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlw
ZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0
IEJ1ZmZlckJpbmRpbmdMYXlvdXQgeworICAgIFBBTDo6V2ViR1BVOjpCdWZmZXJCaW5kaW5nVHlw
ZSB0eXBlOworICAgIGJvb2wgaGFzRHluYW1pY09mZnNldDsKKyAgICBQQUw6OldlYkdQVTo6U2l6
ZTY0IG1pbkJpbmRpbmdTaXplOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQnVmZmVyRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViNmUxNDdkZDA4ZGM3YzRhZWMzZWYx
YWExMmRkY2Q5NjY4MGU1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2NyaXB0b3JC
YXNlLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJVc2FnZS5o
PgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgQnVmZmVy
RGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgUEFMOjpXZWJH
UFU6OlNpemU2NCBzaXplOworICAgIFBBTDo6V2ViR1BVOjpCdWZmZXJVc2FnZUZsYWdzIHVzYWdl
OworICAgIGJvb2wgbWFwcGVkQXRDcmVhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjM2MDVh
ZGRlYzU4OTUyM2FkZTZkMGI0MmVmNTBkNTFkNGY5YzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJH
UFVFeHRlbnQzRC5oIgorI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxj
c3RkaW50PgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQ2FudmFzQ29tcG9zaXRpbmdBbHBoYU1vZGUuaD4KKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVByZWRlZmluZWRDb2xvclNwYWNlLmg+CisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRm9ybWF0Lmg+CisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBE
ZXZpY2U7CisKK3VzaW5nIFRleHR1cmVVc2FnZUZsYWdzID0gdWludDMyX3Q7IC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBoZXJlLgorCitzdHJ1Y3QgQ2FudmFzQ29uZmlndXJhdGlv
biB7CisgICAgV2ViR1BVSWRlbnRpZmllciBkZXZpY2U7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1
cmVGb3JtYXQgZm9ybWF0OworICAgIFRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOyAvLyBUZXh0dXJl
VXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQKKyAgICBQQUw6OldlYkdQVTo6UHJlZGVmaW5lZENvbG9y
U3BhY2UgY29sb3JTcGFjZTsKKyAgICBQQUw6OldlYkdQVTo6Q2FudmFzQ29tcG9zaXRpbmdBbHBo
YU1vZGUgY29tcG9zaXRpbmdBbHBoYU1vZGU7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlbnQzRD4g
c2l6ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy
ODVhNDk2ODkyMzUzMGViZGUyNDJkNzE5ZmNhMTQzOWE3NzRjMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuaApAQCAtMCwwICsxLDQ1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx2YXJpYW50PgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IENvbG9yRGlj
dCB7CisgICAgZG91YmxlIHI7CisgICAgZG91YmxlIGc7CisgICAgZG91YmxlIGI7CisgICAgZG91
YmxlIGE7Cit9OworCit1c2luZyBDb2xvciA9IHN0ZDo6dmFyaWFudDxWZWN0b3I8ZG91YmxlPiwg
Q29sb3JEaWN0PjsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk3NWZlOTk4ZGEwNWI4YmI2
YmM5YmZmMzFiY2RiOTRmZTU4ZDgxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmgKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVQmxlbmRTdGF0ZS5o
IgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQ29sb3JXcml0ZS5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZUZvcm1hdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgewor
CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZSB7CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3Jt
YXQgZm9ybWF0OworCisgICAgc3RkOjpvcHRpb25hbDxCbGVuZFN0YXRlPiBibGVuZDsKKyAgICBQ
QUw6OldlYkdQVTo6Q29sb3JXcml0ZUZsYWdzIHdyaXRlTWFzazsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllYzY5YzhmN2IzZDBkZWQzYTdjZGExNTJkMTBiZWI3ZWFjZjIzZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgQ29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgeworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDliMTA2NWViMmVkYjNmN2Y2OGNmMzEyMmUxNTE4ZDAzNDE5NjA4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1h
bmRFbmNvZGVyRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBDb21tYW5kRW5j
b2RlckRlc2NyaXB0b3IgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgeworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OTg4MzdjZjRmMzE3ZjkzMGNjYTgyNjU0YmE0ODNmYjczNTEzNDdhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQYXNzRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmgiCisj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvciA6
IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgQ29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZXMgdGltZXN0YW1wV3JpdGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTIwYTk4ZGM3YjMwYjNhZjJhNjY2ZDdhMjFkNWIyOGUxMTViMDE1MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFt
cFdyaXRlcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSB7CisgICAg
V2ViR1BVSWRlbnRpZmllciBxdWVyeVNldDsKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5
SW5kZXg7CisgICAgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzVGltZXN0YW1wTG9jYXRpb24gbG9j
YXRpb247Cit9OworCit1c2luZyBDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcyA9IFZlY3RvcjxD
b21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlPjsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjI4ODJlMjc2NTJmZDg0ZTNkMzY3ZTM0OTU3MWUzODM2OWE5YWJkMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgor
I2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
IDogcHVibGljIFBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFByb2dyYW1tYWJsZVN0YWdl
IGNvbXB1dGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFmNDY0MWVlZjBjZGMx
NTA4N2JiZTJiM2Y5YzhlZWZjYzI2YjIxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgKQEAgLTAs
MCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2Ns
YXNzIEFkYXB0ZXI7CitjbGFzcyBCaW5kR3JvdXA7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7Citj
bGFzcyBCdWZmZXI7CitjbGFzcyBDb21tYW5kQnVmZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7
CitjbGFzcyBDb21wdXRlUGFzc0VuY29kZXI7CitjbGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFz
cyBEZXZpY2U7CitjbGFzcyBHUFU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1ZXJ5
U2V0OworY2xhc3MgUXVldWU7CitjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVu
ZGVyQnVuZGxlOworY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW5kZXJQaXBlbGlu
ZTsKK2NsYXNzIFNhbXBsZXI7CitjbGFzcyBTaGFkZXJNb2R1bGU7CitjbGFzcyBUZXh0dXJlOwor
Y2xhc3MgVGV4dHVyZVZpZXc7CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3Bh
Y2UgUEFMCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNz
IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udmVydEZyb21CYWNr
aW5nQ29udGV4dCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6
OkFkYXB0ZXIqIGNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAw
OworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCogY29udmVydEJpbmRH
cm91cEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0
IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQqIGNvbnZlcnRCaW5kR3JvdXBMYXlvdXRGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBQQUw6Oldl
YkdQVTo6QnVmZmVyKiBjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikg
PSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIqIGNvbnZl
cnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZp
cnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBjb252ZXJ0Q29tbWFuZEVu
Y29kZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOCBjb252ZXJ0Q29tcHV0ZVBhc3NFbmNv
ZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSogY29udmVydENvbXB1dGVQaXBlbGluZUZyb21C
YWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFBBTDo6V2Vi
R1BVOjpEZXZpY2UqIGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBQQUw6OldlYkdQVTo6R1BVKiBjb252ZXJ0R1BVRnJvbUJh
Y2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJH
UFU6OlBpcGVsaW5lTGF5b3V0KiBjb252ZXJ0UGlwZWxpbmVMYXlvdXRGcm9tQmFja2luZyhXZWJH
UFVJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlT
ZXQqIGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIpID0gMDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IFBBTDo6V2ViR1BVOjpRdWV1ZSogY29udmVydFF1ZXVlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZUVuY29kZXIqIGNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZSogY29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50
aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5j
b2RlciogY29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmll
cikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lKiBj
b252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlciogY29udmVydFNhbXBsZXJGcm9t
QmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBQQUw6Oldl
YkdQVTo6U2hhZGVyTW9kdWxlKiBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmUq
IGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllcikgPSAwOworICAgIHZp
cnR1YWwgY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3KiBjb252ZXJ0VGV4dHVyZVZpZXdG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWNjMmI4ZTQwZTFiM2ViMWVl
NDczNjdmNjM5YmEzZWY5YWE5ZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIEFk
YXB0ZXI7CitjbGFzcyBCaW5kR3JvdXA7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitjbGFzcyBC
dWZmZXI7CitjbGFzcyBDb21tYW5kQnVmZmVyOworY2xhc3MgQ29tbWFuZEVuY29kZXI7CitjbGFz
cyBDb21wdXRlUGFzc0VuY29kZXI7CitjbGFzcyBDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBEZXZp
Y2U7CitjbGFzcyBHUFU7CitjbGFzcyBQaXBlbGluZUxheW91dDsKK2NsYXNzIFF1ZXJ5U2V0Owor
Y2xhc3MgUXVldWU7CitjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOworY2xhc3MgUmVuZGVyQnVu
ZGxlOworY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBSZW5kZXJQaXBlbGluZTsKK2Ns
YXNzIFNhbXBsZXI7CitjbGFzcyBTaGFkZXJNb2R1bGU7CitjbGFzcyBUZXh0dXJlOworY2xhc3Mg
VGV4dHVyZVZpZXc7CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgUEFM
CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRvQmFja2luZ0Nv
bnRleHQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgp
ID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BV
SWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAm
KSA9IDA7CisgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkdQ
VUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJikg
PSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRl
bnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJikgPSAwOworICAgIHZpcnR1YWwg
V2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUmKSA9IDA7CisgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZSYpID0gMDsKKyAgICB2aXJ0dWFsIFdl
YkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6R1BVJikg
PSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkdQVUlk
ZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmKSA9
IDA7CisgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OlF1ZXVlJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJikg
PSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKSA9IDA7CisgICAgdmlydHVhbCBXZWJHUFVJZGVu
dGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNv
ZGVyJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYpID0gMDsKKyAgICB2aXJ0dWFsIFdl
YkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BV
SWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlJikg
PSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkOWViODgzZGU4ZDc1ZWJiZjZmZDg3NGIxYjI4NmJm
MjYwOGJlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmgiCisjaW5j
bHVkZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
YXJlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVn
cmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVG
b3JtYXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3Ry
dWN0IERlcHRoU3RlbmNpbFN0YXRlIHsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdCBm
b3JtYXQ7CisKKyAgICBib29sIGRlcHRoV3JpdGVFbmFibGVkOworICAgIFBBTDo6V2ViR1BVOjpD
b21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlOworCisgICAgU3RlbmNpbEZhY2VTdGF0ZSBzdGVu
Y2lsRnJvbnQ7CisgICAgU3RlbmNpbEZhY2VTdGF0ZSBzdGVuY2lsQmFjazsKKworICAgIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZT4gc3RlbmNpbFJlYWRNYXNrOworICAg
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0ZW5jaWxWYWx1ZT4gc3RlbmNpbFdyaXRlTWFz
azsKKworICAgIFBBTDo6V2ViR1BVOjpEZXB0aEJpYXMgZGVwdGhCaWFzOworICAgIGZsb2F0IGRl
cHRoQmlhc1Nsb3BlU2NhbGU7CisgICAgZmxvYXQgZGVwdGhCaWFzQ2xhbXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzM0ODMyZTYyMjIzMGQ1YTRjYmE2YzZlZWI1NGUxNWI5YzczYTEzMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIKKyNpbmNsdWRlIDxjc3RkaW50PgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRmVhdHVyZU5hbWUuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9LZXlWYWx1ZVBhaXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7
CisKK3N0cnVjdCBEZXZpY2VEZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNl
IHsKKyAgICBWZWN0b3I8UEFMOjpXZWJHUFU6OkZlYXR1cmVOYW1lPiByZXF1aXJlZEZlYXR1cmVz
OworICAgIC8vIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IHJlcXVpcmVk
TGltaXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlbnQz
RC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNELmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTAwNmY0MmQ4NDJiZjAyNTMzY2Y5NTFmN2I0ZDE3NThlMDI0MzAxMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlbnQzRC5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgorI2luY2x1ZGUgPHZhcmlh
bnQ+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgRXh0ZW50M0REaWN0IHsKKyAgICBQQUw6OldlYkdQVTo6
SW50ZWdlckNvb3JkaW5hdGUgd2lkdGg7CisgICAgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGlu
YXRlIGhlaWdodDsKKyAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgZGVwdGhPckFy
cmF5TGF5ZXJzOworfTsKKwordXNpbmcgRXh0ZW50M0QgPSBzdGQ6OnZhcmlhbnQ8VmVjdG9yPFBB
TDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZT4sIEV4dGVudDNERGljdD47CisKK30KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1
cmVCaW5kaW5nTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0
ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwYWUzOThlMGMyNGJkMjM1
NzUyNzZhMmNjNzlmM2IyNDY5YWI0YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5oCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktp
dCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IEV4dGVybmFsVGV4dHVyZUJpbmRpbmdM
YXlvdXQgeworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5h
bFRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkMjhmMWVkMThmNGMyYmFk
MzAyOTdmNzhkNmJjODFlMjk0NmM1ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9i
amVjdERlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVQcmVkZWZpbmVkQ29sb3JTcGFjZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFj
ZSBXZWJHUFUgeworCitzdHJ1Y3QgRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBP
YmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgUEFMOjpXZWJHUFU6OlByZWRlZmluZWRDb2xvclNw
YWNlIGNvbG9yU3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNw
YWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUZyYWdtZW50U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIyYWU3YTVjMTRhZDE1MTM2YmMzZDQwNTNmOTNhNTYw
ZjU1YzgzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVGcmFnbWVudFN0YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5oIgorI2luY2x1ZGUg
IldlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgRnJhZ21lbnRT
dGF0ZSA6IHB1YmxpYyBQcm9ncmFtbWFibGVTdGFnZSB7CisgICAgVmVjdG9yPENvbG9yVGFyZ2V0
U3RhdGU+IHRhcmdldHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNw
YWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJZGVudGlm
aWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTk1MGQyZDdhZDMyZjg0Yzk3MjI2MGI4YjY2NTcyOTkyZDhjMWFi
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZp
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gV2ViR1BVSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgV2ViR1BVSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8V2ViR1BVSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWQzM2ZlZjZmNmU5YmY4NDliOTUxNjIzOTBiNTg3ZjE4YWIwNjViMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlC
dWZmZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViR1BVSW1hZ2VEYXRhTGF5
b3V0LmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgSW1hZ2VDb3B5QnVmZmVyIDogcHVibGljIEltYWdlRGF0
YUxheW91dCB7CisgICAgV2ViR1BVSWRlbnRpZmllciBidWZmZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjIzY2VjY2JkYzQ4ZDViZTI3NDZmNmYwNzVlYjVjMGJiMDk4MGY4YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlF
eHRlcm5hbEltYWdlLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiV2ViR1BVT3JpZ2luMkQuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNp
bmNsdWRlIDx2YXJpYW50PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUg
eworCitzdHJ1Y3QgSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSB7CisgICAgLy8gc3RkOjp2YXJpYW50
PFJlZlB0cjxJbWFnZUJpdG1hcD4sIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4+IHNvdXJjZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiBvcmlnaW47Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY0MDlm
YzNlMjJlZmExY2MyZjliMmViOGJiZDcxNzVmNzdkMjYyMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BV
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIldlYkdQVU9yaWdpbjNELmgiCisjaW5jbHVkZSA8b3B0
aW9uYWw+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVz
Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlQXNwZWN0Lmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZSB7CisgICAgV2ViR1BVSWRlbnRpZmll
ciB0ZXh0dXJlOworICAgIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSBtaXBMZXZlbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiBvcmlnaW47CisgICAgUEFMOjpXZWJHUFU6OlRl
eHR1cmVBc3BlY3QgYXNwZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzN2EzNWFlNWMz
MjNkNzllZjJjNmJiZGUzZmVmMTdjNDg1MDIyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQ
VUltYWdlQ29weVRleHR1cmUuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVByZWRlZmluZWRDb2xvclNwYWNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNl
IFdlYkdQVSB7CisKK3N0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkIDogcHVibGljIEltYWdl
Q29weVRleHR1cmUgeworICAgIFBBTDo6V2ViR1BVOjpQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xv
clNwYWNlOworICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODVlZTk0
NWI3Y2YzZjA1NmZjOGU5YTUyMjkzMWU0OGM0YTk4OWY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9wdGlvbmFs
PgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgSW1hZ2VE
YXRhTGF5b3V0IHsKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IGJ5dGVzUGVyUm93OworICAgIHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OlNpemUzMj4gcm93c1BlckltYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVNdWx0aXNhbXBsZVN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3NDQ1
ZTZjMTdlNDc3MjIxZmFhMjZiNjAwNmI0ZjlkMDM4MzQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgTXVsdGlzYW1wbGVTdGF0ZSB7CisgICAg
UEFMOjpXZWJHUFU6OlNpemUzMiBjb3VudDsKKyAgICBQQUw6OldlYkdQVTo6U2FtcGxlTWFzayBt
YXNrOworICAgIGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc4YjM3NmVlZGZhMjdjMjVkOTQxYjU0Zjk3ZjM1ODMwYTYxZGQxYWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRv
ckJhc2UuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1l
c3BhY2UgV2ViR1BVIHsKKworc3RydWN0IE9iamVjdERlc2NyaXB0b3JCYXNlIHsKKyAgICBTdHJp
bmcgbGFiZWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdp
bjJELmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luMkQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNDlmMmNiM2YzOTEzZGNiNGI0NDJlMWFjZTBlMmYwOTYzNTUwMjYxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmgK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8dmFy
aWFudD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFt
ZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBPcmlnaW4yRERpY3QgeworICAgIFBBTDo6V2ViR1BV
OjpJbnRlZ2VyQ29vcmRpbmF0ZSB4OworICAgIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0
ZSB5OworfTsKKwordXNpbmcgT3JpZ2luMkQgPSBzdGQ6OnZhcmlhbnQ8VmVjdG9yPFBBTDo6V2Vi
R1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZT4sIE9yaWdpbjJERGljdD47CisKK30KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIyNDFj
OTZlZDQyYTJmY2ZmOTI4YTU4ZTFlMGRkYzI5NmJmYzgyMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5oCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgorI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUg
eworCitzdHJ1Y3QgT3JpZ2luM0REaWN0IHsKKyAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3Jk
aW5hdGUgeDsKKyAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgeTsKKyAgICBQQUw6
OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgejsKK307CisKK3VzaW5nIE9yaWdpbjNEID0gc3Rk
Ojp2YXJpYW50PFZlY3RvcjxQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGU+LCBPcmlnaW4z
RERpY3Q+OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjY5ODNjNjM3
ZjJmNjc3NGJiYzNhY2ZmMzFkZDVkNWE4YTUxZGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAt
MCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJH
UFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFBpcGVs
aW5lRGVzY3JpcHRvckJhc2UgOiBwdWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgeworICAgIFdl
YkdQVUlkZW50aWZpZXIgbGF5b3V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGJh
YzhkM2NhNGNjNTVkYTI4YjIzMGJmZGI0MGI4ZTAxNDM3ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRv
ci5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9y
QmFzZS5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JCYXNlIHsKKyAgICBWZWN0
b3I8V2ViR1BVSWRlbnRpZmllcj4gYmluZEdyb3VwTGF5b3V0czsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNThiYTAz
ZTM2ZTllMGY1ODc0NTQ3MWM1MWY2MTU2YWJiZDc3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxvcHRpb25hbD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUN1bGxNb2RlLmg+CisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVGcm9udEZhY2UuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUluZGV4Rm9ybWF0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVQcmltaXRpdmVUb3BvbG9neS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgUHJpbWl0aXZlU3RhdGUgeworICAgIFBBTDo6
V2ViR1BVOjpQcmltaXRpdmVUb3BvbG9neSB0b3BvbG9neTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpJbmRleEZvcm1hdD4gc3RyaXBJbmRleEZvcm1hdDsKKyAgICBQQUw6OldlYkdQ
VTo6RnJvbnRGYWNlIGZyb250RmFjZTsKKyAgICBQQUw6OldlYkdQVTo6Q3VsbE1vZGUgY3VsbE1v
ZGU7CisKKyAgICAvLyBSZXF1aXJlcyAiZGVwdGgtY2xpcC1jb250cm9sIiBmZWF0dXJlLgorICAg
IGJvb2wgdW5jbGlwcGVkRGVwdGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8g
bmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTY1ZjA4ODk0YjM0OTViMTFk
NWExNWRiOGJkNGRiNjM2NzNjYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPHd0Zi9LZXlWYWx1ZVBhaXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJHUFUgeworCit1c2luZyBQaXBlbGluZUNvbnN0YW50VmFsdWUgPSBkb3VibGU7IC8vIE1heSBy
ZXByZXNlbnQgV0dTTOKAmXMgYm9vbCwgZjMyLCBpMzIsIHUzMi4KKworc3RydWN0IFByb2dyYW1t
YWJsZVN0YWdlIHsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1vZHVsZTsKKyAgICBTdHJpbmcgZW50
cnlQb2ludDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUGlwZWxpbmVDb25zdGFu
dFZhbHVlPj4gY29uc3RhbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDY5MDZlZDgyMjEzMjE2MmYz
YmI3MjAyOWZhNDMxZmUzZTFiZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2Ny
aXB0b3JCYXNlLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3Jh
bFR5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZVN0
YXRpc3RpY05hbWUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5
VHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citu
YW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFF1ZXJ5U2V0RGVzY3JpcHRvciA6IHB1YmxpYyBP
YmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgUEFMOjpXZWJHUFU6OlF1ZXJ5VHlwZSB0eXBlOwor
ICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgY291bnQ7CisgICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpQ
aXBlbGluZVN0YXRpc3RpY05hbWU+IHBpcGVsaW5lU3RhdGlzdGljczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZmExMDIzYzg4ODVhMWY0MzA0NDE3YWI0M2Y3NDM2ZmY0YTU1NjY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1
bmRsZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgUmVuZGVyQnVuZGxlRGVz
Y3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRl
c2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTExOWVhMWIyMzI4Y2Q3YzBmZWUwMzM2ZTQ2ZjUzYjgx
ZmQ2Yjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0xheW91
dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3Qg
UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IgOiBwdWJsaWMgUmVuZGVyUGFzc0xheW91dCB7
CisgICAgYm9vbCBkZXB0aFJlYWRPbmx5OworICAgIGJvb2wgc3RlbmNpbFJlYWRPbmx5OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNDhhMmQzMTJjYzkxZDBhMmNmOWVlZmIyZmUw
NjU5ZmM2ZmQ4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVUNvbG9yLmgiCisjaW5j
bHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVTG9hZE9wLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTdG9y
ZU9wLmg+CisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUg
eworCitzdHJ1Y3QgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCB7CisgICAgV2ViR1BVSWRlbnRp
ZmllciB2aWV3OworICAgIFdlYkdQVUlkZW50aWZpZXIgcmVzb2x2ZVRhcmdldDsKKworICAgIHN0
ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgQ29sb3JEaWN0
PiBsb2FkVmFsdWU7CisgICAgUEFMOjpXZWJHUFU6OlN0b3JlT3Agc3RvcmVPcDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NGVjNjgzZDE0NjIxZWMzOWNl
MWUwODIwNWQ2ZThkNzI3Mjc1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJH
UFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRl
Z3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVMb2FkT3Au
aD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN0b3JlT3AuaD4KKyNpbmNs
dWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50IHsKKyAgICBXZWJHUFVJZGVudGlmaWVyIHZpZXc7CisKKyAgICBzdGQ6OnZhcmlhbnQ8
UEFMOjpXZWJHUFU6OkxvYWRPcCwgZmxvYXQ+IGRlcHRoTG9hZFZhbHVlOworICAgIFBBTDo6V2Vi
R1BVOjpTdG9yZU9wIGRlcHRoU3RvcmVPcDsKKyAgICBib29sIGRlcHRoUmVhZE9ubHk7CisKKyAg
ICBzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgUEFMOjpXZWJHUFU6OlN0ZW5jaWxW
YWx1ZT4gc3RlbmNpbExvYWRWYWx1ZTsKKyAgICBQQUw6OldlYkdQVTo6U3RvcmVPcCBzdGVuY2ls
U3RvcmVPcDsKKyAgICBib29sIHN0ZW5jaWxSZWFkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2ODVmMjY2NjkxZGVkODYzNDgxY2NhNjE1YTBlMWI1NTEyYmVjZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRv
ckJhc2UuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmgiCisj
aW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaCIKKyNpbmNs
dWRlICJXZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmgiCisjaW5jbHVkZSA8b3B0aW9u
YWw+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgT2Jq
ZWN0RGVzY3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
PiBjb2xvckF0dGFjaG1lbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQ+IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ7CisgICAgV2ViR1BVSWRlbnRp
ZmllciBvY2NsdXNpb25RdWVyeVNldDsKKyAgICBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzIHRp
bWVzdGFtcFdyaXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3Bh
Y2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
UmVuZGVyUGFzc0xheW91dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NMYXlvdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDBiMDk5ZDlmYjhhZDgzMTNhNjkxMzEwYTJm
NmIzM2I0MzBhNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5o
IgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVSW50ZWdyYWxUeXBlcy5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
VGV4dHVyZUZvcm1hdC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFJlbmRlclBhc3NMYXlvdXQgOiBw
dWJsaWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxQQUw6OldlYkdQVTo6VGV4
dHVyZUZvcm1hdD4gY29sb3JGb3JtYXRzOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlRleHR1cmVGb3JtYXQ+IGRlcHRoU3RlbmNpbEZvcm1hdDsKKyAgICBQQUw6OldlYkdQVTo6U2l6
ZTMyIHNhbXBsZUNvdW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlM2U1NDVh
NmYzNTA4MjQ4ODY0ODZlMmZkNjQ2ZDVkYjBjYmYwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5o
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NUaW1lc3RhbXBMb2NhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQ
VSB7CisKK3N0cnVjdCBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUgeworICAgIFdlYkdQVUlkZW50
aWZpZXIgcXVlcnlTZXQ7CisgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4OworICAg
IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wTG9jYXRpb24gbG9jYXRpb247Cit9Owor
Cit1c2luZyBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzID0gVmVjdG9yPFJlbmRlclBhc3NUaW1l
c3RhbXBXcml0ZT47CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YTY3OTg5ZDJlYjM1MjY4YmQyMTZjN2M1Mzg5NjRhODcwZTIwYTU4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIldlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmgiCisjaW5jbHVkZSAiV2ViR1BVRnJhZ21l
bnRTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkdQVU11bHRpc2FtcGxlU3RhdGUuaCIKKyNpbmNsdWRl
ICJXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiV2ViR1BVUHJpbWl0
aXZlU3RhdGUuaCIKKyNpbmNsdWRlICJXZWJHUFVWZXJ0ZXhTdGF0ZS5oIgorI2luY2x1ZGUgPG9w
dGlvbmFsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1
Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIFBpcGVsaW5lRGVzY3JpcHRvckJh
c2UgeworICAgIFZlcnRleFN0YXRlIHZlcnRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPFByaW1pdGl2
ZVN0YXRlPiBwcmltaXRpdmU7CisgICAgc3RkOjpvcHRpb25hbDxEZXB0aFN0ZW5jaWxTdGF0ZT4g
ZGVwdGhTdGVuY2lsOworICAgIHN0ZDo6b3B0aW9uYWw8TXVsdGlzYW1wbGVTdGF0ZT4gbXVsdGlz
YW1wbGU7CisgICAgc3RkOjpvcHRpb25hbDxGcmFnbWVudFN0YXRlPiBmcmFnbWVudDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjVmY2YzYjdlOWZlZWEyNzExOGUyNzUwYTcxYWE5Yjc5MTFiMWE5
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVBvd2VyUHJlZmVyZW5jZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJPcHRpb25zIHsKKyAgICBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpQb3dlclByZWZlcmVuY2U+IHBvd2VyUHJlZmVyZW5j
ZTsKKyAgICBib29sIGZvcmNlRmFsbGJhY2tBZGFwdGVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGRiMTQzZDExODRiY2NjMjdhZDY1ZWI0NjI3YzA1OWM3ZmE5NWY0NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91
dC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdUeXBlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBTYW1wbGVyQmlu
ZGluZ0xheW91dCB7CisgICAgUEFMOjpXZWJHUFU6OlNhbXBsZXJCaW5kaW5nVHlwZSB0eXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRv
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTQwNzg2NTNkNTkwYjk1ZTdiZGNjZGZlNDBlNTQ3MjcxN2Y0YjY2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1w
bGVyRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIldlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSA8
Y3N0ZGludD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUFkZHJlc3NNb2RlLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21wYXJlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUZpbHRlck1vZGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BV
IHsKKworc3RydWN0IFNhbXBsZXJEZXNjcmlwdG9yIDogcHVibGljIE9iamVjdERlc2NyaXB0b3JC
YXNlIHsKKyAgICBQQUw6OldlYkdQVTo6QWRkcmVzc01vZGUgYWRkcmVzc01vZGVVOworICAgIFBB
TDo6V2ViR1BVOjpBZGRyZXNzTW9kZSBhZGRyZXNzTW9kZVY7CisgICAgUEFMOjpXZWJHUFU6OkFk
ZHJlc3NNb2RlIGFkZHJlc3NNb2RlVzsKKyAgICBQQUw6OldlYkdQVTo6RmlsdGVyTW9kZSBtYWdG
aWx0ZXI7CisgICAgUEFMOjpXZWJHUFU6OkZpbHRlck1vZGUgbWluRmlsdGVyOworICAgIFBBTDo6
V2ViR1BVOjpGaWx0ZXJNb2RlIG1pcG1hcEZpbHRlcjsKKyAgICBmbG9hdCBsb2RNaW5DbGFtcDsK
KyAgICBmbG9hdCBsb2RNYXhDbGFtcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpD
b21wYXJlRnVuY3Rpb24+IGNvbXBhcmU7CisgICAgdWludDE2X3QgbWF4QW5pc290cm9weTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTVmNmJhMzQ0YjlkZDk1N2NhYTdhOTVkYjQzYjE3OTgw
NGY3NTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvciA6IHB1
YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgU3RyaW5nIGNvZGU7CisgICAgLy8gSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4gc291cmNlTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZTljZWYy
MDkxMzU3ZDY4MTY1NzYzNTQyM2IwY2I0MmQ2ZTBlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5oCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tcGFyZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVTdGVuY2lsT3BlcmF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworbmFtZXNwYWNlIFdlYkdQVSB7CisKK3N0cnVjdCBTdGVuY2lsRmFjZVN0YXRlIHsKKyAgICBQ
QUw6OldlYkdQVTo6Q29tcGFyZUZ1bmN0aW9uIGNvbXBhcmU7CisgICAgUEFMOjpXZWJHUFU6OlN0
ZW5jaWxPcGVyYXRpb24gZmFpbE9wOworICAgIFBBTDo6V2ViR1BVOjpTdGVuY2lsT3BlcmF0aW9u
IGRlcHRoRmFpbE9wOworICAgIFBBTDo6V2ViR1BVOjpTdGVuY2lsT3BlcmF0aW9uIHBhc3NPcDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVC
aW5kaW5nTGF5b3V0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFn
ZVRleHR1cmVCaW5kaW5nTGF5b3V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODlhNmQ5YTI2OTEwMjExMjYxZDM5
MmY4MDRkMzgzMzA2YzY4NzFlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQWNjZXNzLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlRm9ybWF0Lmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0RpbWVuc2lvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgU3RvcmFnZVRleHR1cmVCaW5kaW5n
TGF5b3V0IHsKKyAgICBQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVBY2Nlc3MgYWNjZXNzOwor
ICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlRm9ybWF0IGZvcm1hdDsKKyAgICBQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXdEaW1lbnNpb24gdmlld0RpbWVuc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlQmluZGluZ0xheW91dC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkwOTlmMDcyOWJiYTkxZTdlYWE3MDMyYzA3ZTAzNDA5ZWRjOTNlNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlv
dXQuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVTYW1wbGVUeXBlLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0RpbWVuc2lvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgVGV4dHVy
ZUJpbmRpbmdMYXlvdXQgeworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlU2FtcGxlVHlwZSBzYW1w
bGVUeXBlOworICAgIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0RpbWVuc2lvbiB2aWV3RGltZW5z
aW9uOworICAgIGJvb2wgbXVsdGlzYW1wbGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVjMDMxNGI5Mjll
NDBhZTM2ZTM1YzIwNjQ1ZDEzNGE0Mjk2OGQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVUV4dGVu
dDNELmgiCisjaW5jbHVkZSAiV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuaCIKKyNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVEaW1lbnNpb24uaD4KKyNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVGb3JtYXQuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVVc2FnZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3IgOiBwdWJs
aWMgT2JqZWN0RGVzY3JpcHRvckJhc2UgeworICAgIEV4dGVudDNEIHNpemU7CisgICAgUEFMOjpX
ZWJHUFU6OkludGVnZXJDb29yZGluYXRlIG1pcExldmVsQ291bnQ7CisgICAgUEFMOjpXZWJHUFU6
OlNpemUzMiBzYW1wbGVDb3VudDsKKyAgICBQQUw6OldlYkdQVTo6VGV4dHVyZURpbWVuc2lvbiBk
aW1lbnNpb247CisgICAgUEFMOjpXZWJHUFU6OlRleHR1cmVGb3JtYXQgZm9ybWF0OworICAgIFBB
TDo6V2ViR1BVOjpUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWE3Nzk0YjRiNGVlZjA3ZjJmYWIyMTJjNDlmZDMxOTc0ZTdlNWMyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFs
PgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgor
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZUFzcGVjdC5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZUZvcm1hdC5oPgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEaW1lbnNpb24uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFRleHR1cmVW
aWV3RGVzY3JpcHRvciA6IHB1YmxpYyBPYmplY3REZXNjcmlwdG9yQmFzZSB7CisgICAgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZUZvcm1hdD4gZm9ybWF0OworICAgIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGltZW5zaW9uPiBkaW1lbnNpb247CisgICAg
UEFMOjpXZWJHUFU6OlRleHR1cmVBc3BlY3QgYXNwZWN0OworICAgIFBBTDo6V2ViR1BVOjpJbnRl
Z2VyQ29vcmRpbmF0ZSBiYXNlTWlwTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6SW50ZWdlckNvb3JkaW5hdGU+IG1pcExldmVsQ291bnQ7CisgICAgUEFMOjpXZWJHUFU6Oklu
dGVnZXJDb29yZGluYXRlIGJhc2VBcnJheUxheWVyOworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OkludGVnZXJDb29yZGluYXRlPiBhcnJheUxheWVyQ291bnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
ODlmYjY4N2EzODYxZTc5YzI4MzEwM2ZiZGEyZWJlNDUzZTBiNTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QXR0cmlidXRlLmgKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVzLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVWZXJ0ZXhGb3JtYXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CituYW1lc3BhY2UgV2ViR1BVIHsKKworc3RydWN0IFZlcnRleEF0dHJpYnV0ZSB7CisgICAgUEFM
OjpXZWJHUFU6OlZlcnRleEZvcm1hdCBmb3JtYXQ7CisgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBv
ZmZzZXQ7CisKKyAgICBQQUw6OldlYkdQVTo6SW5kZXgzMiBzaGFkZXJMb2NhdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzY0YzJiNDA5MTJiNGMyOGJjMTMyY2RiNjkyMDY5ZjFiNDQwMmM3YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhC
dWZmZXJMYXlvdXQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJXZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVZlcnRleFN0ZXBNb2RlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitzdHJ1Y3QgVmVy
dGV4QnVmZmVyTGF5b3V0IHsKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGFycmF5U3RyaWRlOwor
ICAgIFBBTDo6V2ViR1BVOjpWZXJ0ZXhTdGVwTW9kZSBzdGVwTW9kZTsKKyAgICBWZWN0b3I8VmVy
dGV4QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVZlcnRleFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1NTU0OGVkYjBhODI1MmVhZTQyMTgwYmNm
ZDlkOWUyMGViMmQzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgiCisjaW5j
bHVkZSAiV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmgiCisjaW5jbHVkZSA8b3B0aW9uYWw+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitzdHJ1Y3QgVmVydGV4U3RhdGUgOiBwdWJsaWMgUHJvZ3JhbW1hYmxlU3RhZ2Ug
eworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFZlcnRleEJ1ZmZlckxheW91dD4+IGJ1ZmZlcnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMGM3MjJmMmEwNzk1MTQ1NmU4MDc4NzVhZjc1OThiMWIxOTM1MmU0OC4uNjc2
ZGFkZGFjODgzMTk2YzZhMzQ0YTlmYjFhNmQ0Y2Q0MWFmOGNiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01
OTUsNiArNTk1LDI5IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3Zp
ZGVyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuY3BwCitXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwCitX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuY3BwCitX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwCitXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcAor
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHku
Y3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
RGV2aWNlUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXRQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWVyeVNldFByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXVlUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwCitXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcAorV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwCitXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0MzFkNDBiMDU2YTVhZGQyYzQxZjExYTM1ZDA0YTU0
ZWYxMjgwMzEuLmQ1M2I2Y2U5ZWJkMDNjM2RkYTBiMzk4ZjhiZTgwMDk1MGZkMzY0ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg4
LDYgKzM4OCw3IEBACiAJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi87IH07
CiAJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclVJUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJ
UHJveHlNZXNzYWdlcy5oICovOyB9OworCQkxQ0I3NDY0RDI3NDM4MEM4MDBGMTk4NzQgLyogV2Vi
R1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNzQ2NEIyNzQzODBDODAwRjE5ODc0IC8qIFdl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJMUNCQkU0QTAx
OUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkJFNDlFMTlCNjZD
NTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0JCRTQ5RjE5QjY2
QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovOyB9OwogCQkxQ0YxOEYz
RjI2QkI1RDk1MDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGMThGM0UyNkJCNUQ5MDAwNEIxNzIy
IC8qIExvZ0luaXRpYWxpemF0aW9uLmNwcCAqLzsgfTsKQEAgLTI4OTgsNiArMjg5OSwxMTIgQEAK
IAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJUHJveHlNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSVBy
b3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0MzEyN0M4ODJB
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9y
VUlQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclVJUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQkxQ0I3NDYxQTI3NDM2RUU0MDBGMTk4NzQgLyogUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVUZXh0dXJlVmlld1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDQjc0NjFCMjc0MzZFRTQwMEYxOTg3NCAvKiBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYxQzI3NDM2RUU1MDBGMTk4
NzQgLyogUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQjc0NjFEMjc0MzZFRTUwMEYxOTg3NCAvKiBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYxRTI3NDM2RUU1MDBGMTk4NzQgLyogUmVtb3RlRGV2
aWNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRGV2aWNlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYxRjI3NDM2RUU1MDBGMTk4NzQgLyog
UmVtb3RlQWRhcHRlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUFkYXB0ZXJQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjIwMjc0MzZFRTUw
MEYxOTg3NCAvKiBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQjc0NjIxMjc0MzZFRTUwMEYxOTg3NCAvKiBSZW1vdGVTYW1wbGVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlU2FtcGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDQjc0NjIyMjc0MzZFRTYwMEYxOTg3NCAvKiBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYyMzI3NDM2RUU2MDBG
MTk4NzQgLyogUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0I3NDYyNDI3NDM2RUU2MDBGMTk4NzQgLyogUmVtb3RlRGV2aWNlUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlRGV2aWNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2MjUyNzQzNkVFNjAwRjE5ODc0IC8qIFJlbW90ZUV4dGVybmFs
VGV4dHVyZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjI2Mjc0MzZFRTYwMEYxOTg3
NCAvKiBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0I3NDYyNzI3NDM2RUU2MDBGMTk4NzQgLyogUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2MjgyNzQzNkVFNzAwRjE5ODc0IC8qIFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2MjkyNzQzNkVFNzAwRjE5ODc0IC8qIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYyQTI3NDM2RUU3MDBGMTk4NzQg
LyogUmVtb3RlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQnVmZmVyUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2MkIyNzQzNkVFNzAwRjE5ODc0
IC8qIFJlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
VGV4dHVyZVZpZXdQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0
NjJDMjc0MzZFRTcwMEYxOTg3NCAvKiBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDQjc0NjJEMjc0MzZFRTcwMEYxOTg3NCAvKiBSZW1vdGVRdWV1ZVByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVF1ZXVlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0I3NDYyRTI3NDM2RUU3MDBGMTk4NzQgLyogUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjJGMjc0MzZFRTgw
MEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUNCNzQ2MzAyNzQzNkVFODAwRjE5ODc0IC8qIFJlbW90ZUFkYXB0ZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVBZGFwdGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNzQ2MzEyNzQzNkVFODAwRjE5ODc0IC8qIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVNoYWRlck1vZHVsZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDQjc0NjMyMjc0MzZFRTgwMEYxOTg3NCAvKiBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYzMzI3
NDM2RUU4MDBGMTk4NzQgLyogUmVtb3RlQmluZEdyb3VwUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQmluZEdyb3VwUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2MzQyNzQzNkVFODAwRjE5ODc0IC8qIFJlbW90ZVF1ZXVlUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlUXVldWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3
NDYzNTI3NDM2RUU5MDBGMTk4NzQgLyogUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0I3NDYzNjI3NDM2RUU5MDBGMTk4NzQgLyogUmVtb3RlUXVlcnlT
ZXRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVRdWVyeVNldFByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjM3Mjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVR
dWVyeVNldFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVF1ZXJ5U2V0UHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYzODI3NDM2RUU5MDBGMTk4
NzQgLyogUmVtb3RlQnVmZmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQnVm
ZmVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYzOTI3NDM2
RUU5MDBGMTk4NzQgLyogUmVtb3RlVGV4dHVyZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZVRleHR1cmVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDYzQTI3
NDM2RUU5MDBGMTk4NzQgLyogUmVtb3RlU2FtcGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZVNhbXBsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQjc0NjNCMjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0I3NDYzQzI3NDM2RUVBMDBGMTk4NzQgLyogUmVtb3RlUmVuZGVyUGlw
ZWxpbmVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJQaXBlbGluZVBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2M0QyNzQzNkVFQTAw
RjE5ODc0IC8qIFJlbW90ZUJpbmRHcm91cFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUJpbmRHcm91cFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2M0UyNzQzNkVFQTAwRjE5ODc0IC8qIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2M0YyNzQzNkVFQTAwRjE5ODc0IC8qIFJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2
NDAyNzQzNkVFQTAwRjE5ODc0IC8qIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I3NDY0MTI3NDM2RUVBMDBGMTk4NzQgLyogUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY0MjI3NDM2RUVCMDBGMTk4NzQg
LyogUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5k
ZXJQaXBlbGluZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjQz
Mjc0MzZFRUIwMEYxOTg3NCAvKiBSZW1vdGVUZXh0dXJlUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlVGV4dHVyZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNzQ2NDcyNzQzN0E3RjAwRjE5ODc0IC8qIFdlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjQ5Mjc0MzdGQzUwMEYxOTg3NCAvKiBX
ZWJHUFVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2NEEyNzQzODBDODAwRjE5ODc0IC8qIFdl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjRCMjc0MzgwQzgwMEYxOTg3NCAvKiBXZWJHUFVEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNzQ2NjIyNzQzOUExQTAwRjE5ODc0IC8qIFJlbW90ZUdQVVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNCNzQ2NjMyNzQzOUExQTAwRjE5ODc0IC8qIFJlbW90ZUdQVVByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDQjc0NjY2Mjc0MzlDQUUwMEYxOTg3NCAvKiBXZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUNCNzQ2NjcyNzQzOUNBRTAwRjE5ODc0IC8qIFdlYkdQVVNhbXBsZXJCaW5k
aW5nTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjY4Mjc0MzlDQUUwMEYxOTg3NCAv
KiBXZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUlt
YWdlQ29weUV4dGVybmFsSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2NjkyNzQzOUNBRTAwRjE5ODc0IC8qIFdlYkdQVU11bHRpc2FtcGxlU3RhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQ0I3NDY2QTI3NDM5Q0FGMDBGMTk4NzQgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjZCMjc0MzlDQUYwMEYx
OTg3NCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNzQ2NkMyNzQzOUNBRjAwRjE5ODc0IC8qIFdlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjZEMjc0MzlDQUYwMEYxOTg3NCAvKiBXZWJHUFVQ
cmltaXRpdmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQcmltaXRpdmVTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY2RTI3NDM5Q0IwMDBGMTk4NzQgLyog
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2NkYy
NzQzOUNCMDAwRjE5ODc0IC8qIFdlYkdQVUV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY3MDI3NDM5Q0IwMDBGMTk4NzQgLyogV2Vi
R1BVT3JpZ2luMkQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVT3JpZ2luMkQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2NzEyNzQzOUNCMDAwRjE5ODc0IC8qIFdlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjcyMjc0MzlDQjAwMEYxOTg3
NCAvKiBXZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVmVydGV4
QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjczMjc0MzlD
QjEwMEYxOTg3NCAvKiBXZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVN0ZW5jaWxGYWNlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2NzQyNzQzOUNCMTAwRjE5ODc0IC8qIFdlYkdQVUltYWdlQ29weVRleHR1cmVUYWdnZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY3NTI3NDM5Q0IxMDBGMTk4NzQgLyogV2ViR1BVVGV4
dHVyZUJpbmRpbmdMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVGV4dHVyZUJpbmRpbmdM
YXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2NzYyNzQzOUNCMTAw
RjE5ODc0IC8qIFdlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I3NDY3NzI3NDM5Q0IyMDBGMTk4NzQgLyogV2ViR1BVQ29sb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUNCNzQ2NzgyNzQzOUNCMjAwRjE5ODc0IC8qIFdlYkdQVUJsZW5kQ29tcG9uZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVUJsZW5kQ29tcG9uZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDQjc0Njc5Mjc0MzlDQjIwMEYxOTg3NCAvKiBXZWJHUFVDb2xvclRhcmdldFN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2N0EyNzQzOUNCMjAwRjE5ODc0IC8qIFdlYkdQVUZyYWdt
ZW50U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVRnJhZ21lbnRTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY3QjI3NDM5Q0IzMDBGMTk4NzQgLyogV2ViR1BV
UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVu
ZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUNCNzQ2N0MyNzQzOUNCMzAwRjE5ODc0IC8qIFdlYkdQVUJsZW5kU3RhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQmxlbmRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0I3NDY3RDI3NDM5Q0IzMDBGMTk4NzQgLyogV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUltYWdlQ29weUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I3NDY3RTI3NDM5Q0IzMDBGMTk4NzQgLyogV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNC
NzQ2N0YyNzQzOUNCNDAwRjE5ODc0IC8qIFdlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0I3NDY4MDI3NDM5Q0I0MDBGMTk4NzQgLyogV2ViR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY4MTI3NDM5Q0I0MDBGMTk4
NzQgLyogV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2ODIy
NzQzOUNCNDAwRjE5ODc0IC8qIFdlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQ0I3NDY4MzI3NDM5Q0I1MDBGMTk4NzQgLyogV2ViR1BVQ29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2ODUyNzQzOUNCNTAw
RjE5ODc0IC8qIFdlYkdQVURldmljZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
RGV2aWNlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY4
NjI3NDM5Q0I1MDBGMTk4NzQgLyogV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0Njg3Mjc0MzlDQjYwMEYxOTg3NCAvKiBXZWJHUFVF
eHRlbnQzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVFeHRlbnQzRC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0I3NDY4ODI3NDM5Q0I2MDBGMTk4NzQgLyogV2ViR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2ODkyNzQzOUNCNjAwRjE5ODc0IC8q
IFdlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDQjc0NjhBMjc0MzlDQjYwMEYxOTg3NCAvKiBXZWJHUFVCaW5kR3JvdXBFbnRyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I3NDY4QjI3NDM5Q0I3MDBGMTk4NzQgLyogV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjhDMjc0MzlDQjcwMEYxOTg3NCAvKiBX
ZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjhE
Mjc0MzlDQjcwMEYxOTg3NCAvKiBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0I3NDY4RTI3NDM5Q0I4MDBGMTk4NzQgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY4RjI3NDM5Q0I4MDBGMTk4NzQg
LyogV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVZlcnRl
eEJ1ZmZlckxheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY5MDI3
NDM5Q0I4MDBGMTk4NzQgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVCdWZmZXJCaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0
NjkxMjc0MzlDQjgwMEYxOTg3NCAvKiBXZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVJlbmRlclBhc3NMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNCNzQ2OTIyNzQzOUNCOTAwRjE5ODc0IC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2OTMyNzQzOUNCOTAwRjE5ODc0
IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVm
ZmVyQmluZGluZ0xheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY5
NDI3NDM5Q0I5MDBGMTk4NzQgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDQjc0Njk1Mjc0MzlDQjkwMEYxOTg3NCAvKiBXZWJHUFVCaW5kR3Jv
dXBMYXlvdXRFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRy
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY5NjI3NDM5Q0JBMDBGMTk4
NzQgLyogV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0I3NDY5NzI3NDM5Q0JBMDBGMTk4NzQgLyogV2ViR1BVQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY5ODI3NDM5Q0JCMDBGMTk4NzQg
LyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0I3NDY5OTI3NDM5Q0JCMDBGMTk4NzQgLyogV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdy
aXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjlBMjc0MzlDQkIwMEYxOTg3NCAv
KiBXZWJHUFVWZXJ0ZXhTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVWZXJ0ZXhTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0I3NDY5QjI3NDM5Q0JCMDBGMTk4NzQg
LyogV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVJbWFnZUNv
cHlUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NjlEMjc0MzlD
QkMwMEYxOTg3NCAvKiBXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2OUUyNzQzOUNCQzAwRjE5ODc0IC8qIFdlYkdQVVF1ZXJ5U2V0
RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2OUYyNzQzOUNCQzAwRjE5ODc0IC8q
IFdlYkdQVUltYWdlRGF0YUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVJbWFnZURhdGFM
YXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNzQ2QTAyNzQzOUNCRDAw
RjE5ODc0IC8qIFdlYkdQVU9yaWdpbjNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVU9yaWdpbjNE
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjc0NkE0Mjc0M0FEQkEwMEYxOTg3
NCAvKiBXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUNC
RjkwMTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY1ODUsNiArNjY5Miw3IEBACiAJCQkJNTFBRjFCM0QyNzFGNDZBNjAwMTUzOEU2IC8q
IE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90
ZUxheWVyVHJlZSAqLywKIAkJCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAq
LywKKwkJCQkxQ0I3NDY0NTI3NDM3OUYxMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTFBQkY0
Mzc4MUEzNjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxMTg1MDI2MDI2NzNC
MERBMDBBNjQyNUUgLyogWFIgKi8sCiAJCQkJRTNCQ0U4NzcyNjcyNTIxMjAwMTFEOERCIC8qIEFj
Y2Vzc2liaWxpdHlQcmVmZXJlbmNlcy5jcHAgKi8sCkBAIC03MDczLDYgKzcxODEsMTI2IEBACiAJ
CQlwYXRoID0gQXV0b21hdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTFDQjc0NjE5Mjc0MzZERTMwMEYxOTg3NCAvKiBXZWJHUFUgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDQjc0NjFGMjc0MzZFRTUwMEYxOTg3NCAvKiBS
ZW1vdGVBZGFwdGVyUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjMwMjc0MzZFRTgwMEYxOTg3NCAv
KiBSZW1vdGVBZGFwdGVyUHJveHkuaCAqLywKKwkJCQkxQ0I3NDYzRTI3NDM2RUVBMDBGMTk4NzQg
LyogUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwICovLAorCQkJCTFDQjc0NjFCMjc0MzZF
RTQwMEYxOTg3NCAvKiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oICovLAorCQkJCTFDQjc0
NjNEMjc0MzZFRUEwMEYxOTg3NCAvKiBSZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAgKi8sCisJCQkJ
MUNCNzQ2MzMyNzQzNkVFODAwRjE5ODc0IC8qIFJlbW90ZUJpbmRHcm91cFByb3h5LmggKi8sCisJ
CQkJMUNCNzQ2MzgyNzQzNkVFOTAwRjE5ODc0IC8qIFJlbW90ZUJ1ZmZlclByb3h5LmNwcCAqLywK
KwkJCQkxQ0I3NDYyQTI3NDM2RUU3MDBGMTk4NzQgLyogUmVtb3RlQnVmZmVyUHJveHkuaCAqLywK
KwkJCQkxQ0I3NDYxQzI3NDM2RUU1MDBGMTk4NzQgLyogUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5
LmNwcCAqLywKKwkJCQkxQ0I3NDYyQzI3NDM2RUU3MDBGMTk4NzQgLyogUmVtb3RlQ29tbWFuZEJ1
ZmZlclByb3h5LmggKi8sCisJCQkJMUNCNzQ2MjIyNzQzNkVFNjAwRjE5ODc0IC8qIFJlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjQwMjc0MzZFRUEwMEYxOTg3NCAv
KiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmggKi8sCisJCQkJMUNCNzQ2MjMyNzQzNkVFNjAw
RjE5ODc0IC8qIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcCAqLywKKwkJCQkxQ0I3
NDYyNjI3NDM2RUU2MDBGMTk4NzQgLyogUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCAq
LywKKwkJCQkxQ0I3NDYzRjI3NDM2RUVBMDBGMTk4NzQgLyogUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
UHJveHkuY3BwICovLAorCQkJCTFDQjc0NjFEMjc0MzZFRTUwMEYxOTg3NCAvKiBSZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eS5oICovLAorCQkJCTFDQjc0NjFFMjc0MzZFRTUwMEYxOTg3NCAvKiBS
ZW1vdGVEZXZpY2VQcm94eS5jcHAgKi8sCisJCQkJMUNCNzQ2MjQyNzQzNkVFNjAwRjE5ODc0IC8q
IFJlbW90ZURldmljZVByb3h5LmggKi8sCisJCQkJMUNCNzQ2MjAyNzQzNkVFNTAwRjE5ODc0IC8q
IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmNwcCAqLywKKwkJCQkxQ0I3NDYyNTI3NDM2RUU2
MDBGMTk4NzQgLyogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaCAqLywKKwkJCQkxQ0I3NDY2
MjI3NDM5QTFBMDBGMTk4NzQgLyogUmVtb3RlR1BVUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjYz
Mjc0MzlBMUEwMEYxOTg3NCAvKiBSZW1vdGVHUFVQcm94eS5oICovLAorCQkJCTFDQjc0NjI3Mjc0
MzZFRTYwMEYxOTg3NCAvKiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcCAqLywKKwkJCQkx
Q0I3NDYyRjI3NDM2RUU4MDBGMTk4NzQgLyogUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oICov
LAorCQkJCTFDQjc0NjM3Mjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVRdWVyeVNldFByb3h5LmNw
cCAqLywKKwkJCQkxQ0I3NDYzNjI3NDM2RUU5MDBGMTk4NzQgLyogUmVtb3RlUXVlcnlTZXRQcm94
eS5oICovLAorCQkJCTFDQjc0NjJEMjc0MzZFRTcwMEYxOTg3NCAvKiBSZW1vdGVRdWV1ZVByb3h5
LmNwcCAqLywKKwkJCQkxQ0I3NDYzNDI3NDM2RUU4MDBGMTk4NzQgLyogUmVtb3RlUXVldWVQcm94
eS5oICovLAorCQkJCTFDQjc0NjI5Mjc0MzZFRTcwMEYxOTg3NCAvKiBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjI4Mjc0MzZFRTcwMEYxOTg3NCAvKiBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaCAqLywKKwkJCQkxQ0I3NDY0MTI3NDM2RUVB
MDBGMTk4NzQgLyogUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjNC
Mjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oICovLAorCQkJCTFD
Qjc0NjMyMjc0MzZFRTgwMEYxOTg3NCAvKiBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNw
cCAqLywKKwkJCQkxQ0I3NDYyRTI3NDM2RUU3MDBGMTk4NzQgLyogUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eS5oICovLAorCQkJCTFDQjc0NjNDMjc0MzZFRUEwMEYxOTg3NCAvKiBSZW1vdGVS
ZW5kZXJQaXBlbGluZVByb3h5LmNwcCAqLywKKwkJCQkxQ0I3NDY0MjI3NDM2RUVCMDBGMTk4NzQg
LyogUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oICovLAorCQkJCTFDQjc0NjNBMjc0MzZFRTkw
MEYxOTg3NCAvKiBSZW1vdGVTYW1wbGVyUHJveHkuY3BwICovLAorCQkJCTFDQjc0NjIxMjc0MzZF
RTUwMEYxOTg3NCAvKiBSZW1vdGVTYW1wbGVyUHJveHkuaCAqLywKKwkJCQkxQ0I3NDYzNTI3NDM2
RUU5MDBGMTk4NzQgLyogUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwICovLAorCQkJCTFDQjc0
NjMxMjc0MzZFRTgwMEYxOTg3NCAvKiBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oICovLAorCQkJ
CTFDQjc0NjQzMjc0MzZFRUIwMEYxOTg3NCAvKiBSZW1vdGVUZXh0dXJlUHJveHkuY3BwICovLAor
CQkJCTFDQjc0NjM5Mjc0MzZFRTkwMEYxOTg3NCAvKiBSZW1vdGVUZXh0dXJlUHJveHkuaCAqLywK
KwkJCQkxQ0I3NDYyQjI3NDM2RUU3MDBGMTk4NzQgLyogUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5j
cHAgKi8sCisJCQkJMUNCNzQ2MUEyNzQzNkVFNDAwRjE5ODc0IC8qIFJlbW90ZVRleHR1cmVWaWV3
UHJveHkuaCAqLywKKwkJCQkxQ0I3NDY0QTI3NDM4MEM4MDBGMTk4NzQgLyogV2ViR1BVRG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAgKi8sCisJCQkJMUNCNzQ2NEIyNzQzODBDODAw
RjE5ODc0IC8qIFdlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gV2ViR1BVOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUNCNzQ2OEIyNzQzOUNCNzAwRjE5ODc0IC8q
IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaCAqLywKKwkJCQkxQ0I3NDY4QTI3NDM5Q0I2MDBG
MTk4NzQgLyogV2ViR1BVQmluZEdyb3VwRW50cnkuaCAqLywKKwkJCQkxQ0I3NDY2QTI3NDM5Q0FG
MDBGMTk4NzQgLyogV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5oICovLAorCQkJCTFD
Qjc0Njk1Mjc0MzlDQjkwMEYxOTg3NCAvKiBXZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5oICov
LAorCQkJCTFDQjc0Njc4Mjc0MzlDQjIwMEYxOTg3NCAvKiBXZWJHUFVCbGVuZENvbXBvbmVudC5o
ICovLAorCQkJCTFDQjc0NjdDMjc0MzlDQjMwMEYxOTg3NCAvKiBXZWJHUFVCbGVuZFN0YXRlLmgg
Ki8sCisJCQkJMUNCNzQ2OTAyNzQzOUNCODAwRjE5ODc0IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcu
aCAqLywKKwkJCQkxQ0I3NDY5MzI3NDM5Q0I5MDBGMTk4NzQgLyogV2ViR1BVQnVmZmVyQmluZGlu
Z0xheW91dC5oICovLAorCQkJCTFDQjc0NjY2Mjc0MzlDQUUwMEYxOTg3NCAvKiBXZWJHUFVCdWZm
ZXJEZXNjcmlwdG9yLmggKi8sCisJCQkJMUNCNzQ2N0YyNzQzOUNCNDAwRjE5ODc0IC8qIFdlYkdQ
VUNhbnZhc0NvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQkxQ0I3NDY3NzI3NDM5Q0IyMDBGMTk4NzQg
LyogV2ViR1BVQ29sb3IuaCAqLywKKwkJCQkxQ0I3NDY3OTI3NDM5Q0IyMDBGMTk4NzQgLyogV2Vi
R1BVQ29sb3JUYXJnZXRTdGF0ZS5oICovLAorCQkJCTFDQjc0NjgzMjc0MzlDQjUwMEYxOTg3NCAv
KiBXZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvci5oICovLAorCQkJCTFDQjc0NjkyMjc0MzlD
QjkwMEYxOTg3NCAvKiBXZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaCAqLywKKwkJCQkx
Q0I3NDY5NzI3NDM5Q0JBMDBGMTk4NzQgLyogV2ViR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yLmgg
Ki8sCisJCQkJMUNCNzQ2ODkyNzQzOUNCNjAwRjE5ODc0IC8qIFdlYkdQVUNvbXB1dGVQYXNzVGlt
ZXN0YW1wV3JpdGVzLmggKi8sCisJCQkJMUNCNzQ2NzYyNzQzOUNCMTAwRjE5ODc0IC8qIFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKKwkJCQkxQ0I3NDZBNDI3NDNBREJBMDBG
MTk4NzQgLyogV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oICovLAorCQkJCTFDQjc0
NjQ3Mjc0MzdBN0YwMEYxOTg3NCAvKiBXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oICov
LAorCQkJCTFDQjc0NjcxMjc0MzlDQjAwMEYxOTg3NCAvKiBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZS5oICovLAorCQkJCTFDQjc0Njg1Mjc0MzlDQjUwMEYxOTg3NCAvKiBXZWJHUFVEZXZpY2VEZXNj
cmlwdG9yLmggKi8sCisJCQkJMUNCNzQ2ODcyNzQzOUNCNjAwRjE5ODc0IC8qIFdlYkdQVUV4dGVu
dDNELmggKi8sCisJCQkJMUNCNzQ2NkYyNzQzOUNCMDAwRjE5ODc0IC8qIFdlYkdQVUV4dGVybmFs
VGV4dHVyZUJpbmRpbmdMYXlvdXQuaCAqLywKKwkJCQkxQ0I3NDY4NjI3NDM5Q0I1MDBGMTk4NzQg
LyogV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oICovLAorCQkJCTFDQjc0NjdBMjc0
MzlDQjIwMEYxOTg3NCAvKiBXZWJHUFVGcmFnbWVudFN0YXRlLmggKi8sCisJCQkJMUNCNzQ2NDky
NzQzN0ZDNTAwRjE5ODc0IC8qIFdlYkdQVUlkZW50aWZpZXIuaCAqLywKKwkJCQkxQ0I3NDY3RDI3
NDM5Q0IzMDBGMTk4NzQgLyogV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmggKi8sCisJCQkJMUNCNzQ2
NjgyNzQzOUNBRTAwRjE5ODc0IC8qIFdlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuaCAqLywK
KwkJCQkxQ0I3NDY5QjI3NDM5Q0JCMDBGMTk4NzQgLyogV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5o
ICovLAorCQkJCTFDQjc0Njc0Mjc0MzlDQjEwMEYxOTg3NCAvKiBXZWJHUFVJbWFnZUNvcHlUZXh0
dXJlVGFnZ2VkLmggKi8sCisJCQkJMUNCNzQ2OUYyNzQzOUNCQzAwRjE5ODc0IC8qIFdlYkdQVUlt
YWdlRGF0YUxheW91dC5oICovLAorCQkJCTFDQjc0NjY5Mjc0MzlDQUUwMEYxOTg3NCAvKiBXZWJH
UFVNdWx0aXNhbXBsZVN0YXRlLmggKi8sCisJCQkJMUNCNzQ2NkMyNzQzOUNBRjAwRjE5ODc0IC8q
IFdlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmggKi8sCisJCQkJMUNCNzQ2NzAyNzQzOUNCMDAw
RjE5ODc0IC8qIFdlYkdQVU9yaWdpbjJELmggKi8sCisJCQkJMUNCNzQ2QTAyNzQzOUNCRDAwRjE5
ODc0IC8qIFdlYkdQVU9yaWdpbjNELmggKi8sCisJCQkJMUNCNzQ2OTQyNzQzOUNCOTAwRjE5ODc0
IC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQkxQ0I3NDY5ODI3NDM5
Q0JCMDBGMTk4NzQgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmggKi8sCisJCQkJ
MUNCNzQ2NkQyNzQzOUNBRjAwRjE5ODc0IC8qIFdlYkdQVVByaW1pdGl2ZVN0YXRlLmggKi8sCisJ
CQkJMUNCNzQ2ODgyNzQzOUNCNjAwRjE5ODc0IC8qIFdlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmgg
Ki8sCisJCQkJMUNCNzQ2OUUyNzQzOUNCQzAwRjE5ODc0IC8qIFdlYkdQVVF1ZXJ5U2V0RGVzY3Jp
cHRvci5oICovLAorCQkJCTFDQjc0NjgyMjc0MzlDQjQwMEYxOTg3NCAvKiBXZWJHUFVSZW5kZXJC
dW5kbGVEZXNjcmlwdG9yLmggKi8sCisJCQkJMUNCNzQ2N0IyNzQzOUNCMzAwRjE5ODc0IC8qIFdl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmggKi8sCisJCQkJMUNCNzQ2OUQyNzQz
OUNCQzAwRjE5ODc0IC8qIFdlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaCAqLywKKwkJ
CQkxQ0I3NDY3RTI3NDM5Q0IzMDBGMTk4NzQgLyogV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQuaCAqLywKKwkJCQkxQ0I3NDY2RTI3NDM5Q0IwMDBGMTk4NzQgLyogV2ViR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKKwkJCQkxQ0I3NDY5MTI3NDM5Q0I4MDBGMTk4NzQg
LyogV2ViR1BVUmVuZGVyUGFzc0xheW91dC5oICovLAorCQkJCTFDQjc0Njk5Mjc0MzlDQkIwMEYx
OTg3NCAvKiBXZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmggKi8sCisJCQkJMUNCNzQ2
OEUyNzQzOUNCODAwRjE5ODc0IC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICov
LAorCQkJCTFDQjc0NjhDMjc0MzlDQjcwMEYxOTg3NCAvKiBXZWJHUFVSZXF1ZXN0QWRhcHRlck9w
dGlvbnMuaCAqLywKKwkJCQkxQ0I3NDY2NzI3NDM5Q0FFMDBGMTk4NzQgLyogV2ViR1BVU2FtcGxl
ckJpbmRpbmdMYXlvdXQuaCAqLywKKwkJCQkxQ0I3NDY4RDI3NDM5Q0I3MDBGMTk4NzQgLyogV2Vi
R1BVU2FtcGxlckRlc2NyaXB0b3IuaCAqLywKKwkJCQkxQ0I3NDY2QjI3NDM5Q0FGMDBGMTk4NzQg
LyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAorCQkJCTFDQjc0NjczMjc0MzlD
QjEwMEYxOTg3NCAvKiBXZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmggKi8sCisJCQkJMUNCNzQ2OTYy
NzQzOUNCQTAwRjE5ODc0IC8qIFdlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5oICov
LAorCQkJCTFDQjc0Njc1Mjc0MzlDQjEwMEYxOTg3NCAvKiBXZWJHUFVUZXh0dXJlQmluZGluZ0xh
eW91dC5oICovLAorCQkJCTFDQjc0NjgxMjc0MzlDQjQwMEYxOTg3NCAvKiBXZWJHUFVUZXh0dXJl
RGVzY3JpcHRvci5oICovLAorCQkJCTFDQjc0NjgwMjc0MzlDQjQwMEYxOTg3NCAvKiBXZWJHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCAqLywKKwkJCQkxQ0I3NDY3MjI3NDM5Q0IwMDBGMTk4NzQg
LyogV2ViR1BVVmVydGV4QXR0cmlidXRlLmggKi8sCisJCQkJMUNCNzQ2OEYyNzQzOUNCODAwRjE5
ODc0IC8qIFdlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5oICovLAorCQkJCTFDQjc0NjlBMjc0MzlD
QkIwMEYxOTg3NCAvKiBXZWJHUFVWZXJ0ZXhTdGF0ZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBX
ZWJHUFU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRDBFQ0VBOTIzRkM4
NEJCMDBEMTcyRjYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtODc5MCw2ICs5MDE4LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAorCQkJ
CTFDQjc0NjE5Mjc0MzZERTMwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJRjQwOTRDQkEyNTUz
MDQ3RTAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5
NENCOTI1NTMwNDdFMDAzRDczRTMgLyogRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuaCAqLywKIAkJ
CQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggKi8sCkBAIC0xMjUxMCw2ICsxMjczOSw3IEBACiAJCQkJQkMwRTYwNzMxMkQ2QkMyMDAwMTJB
NzJBIC8qIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUJF
MUYyMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDUwMzY3NjFCQ0VEMTlGMDBFMjBCQjMgLyogV2ViR2VzdHVyZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkxQ0I3NDY0RDI3NDM4MEM4MDBGMTk4NzQgLyogV2ViR1BVRG93
bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODhC
MzMxQkM2RTlDRDAwQUJBNUMyIC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMyNjExNjEyMTQwNTRGNDAwMDgwNkU3IC8qIFdlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRl
clByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmZkM2RjYTQzNDMyZGNmOWIwNWQ2YTAzZmE5ZTU0NmFl
OWQyOTZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmNwcApAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXJQ
cm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2Ug
V2ViR1BVIHsKKworUmVtb3RlQWRhcHRlclByb3h5OjpSZW1vdGVBZGFwdGVyUHJveHkoU3RyaW5n
JiYgbmFtZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBmZWF0dXJlcywgUEFMOjpX
ZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgOiBB
ZGFwdGVyKFdURk1vdmUobmFtZSksIGZlYXR1cmVzLCBsaW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVy
KQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKK3sKK30KKworUmVtb3RlQWRhcHRlclByb3h5Ojp+UmVtb3RlQWRhcHRlclByb3h5KCkKK3sK
K30KKwordm9pZCBSZW1vdGVBZGFwdGVyUHJveHk6OnJlcXVlc3REZXZpY2UoY29uc3QgUEFMOjpX
ZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWY8UEFMOjpXZWJHUFU6OkRldmljZT4pPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJB
TShkZXNjcmlwdG9yKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmI0ZTgxMGU2ZTRlOTAzYjZjMTNkNTlhN2JkNGM1NzFkZDEwZmNiYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFk
YXB0ZXJQcm94eS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BV
IHsKKworY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKK2NsYXNzIFJlbW90ZUFkYXB0
ZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQ
QUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3Vw
cG9ydGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXJQcm94eShXVEZNb3ZlKG5hbWUpLCBmZWF0
dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlciwgY29udmVydFRvQmFja2luZ0NvbnRleHQp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVBZGFwdGVyUHJveHkoKTsKKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKwor
ICAgIFJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9y
dGVkRmVhdHVyZXMmLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiwgYm9vbCBpc0ZhbGxi
YWNrQWRhcHRlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZUFkYXB0
ZXJQcm94eShjb25zdCBSZW1vdGVBZGFwdGVyUHJveHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVB
ZGFwdGVyUHJveHkoUmVtb3RlQWRhcHRlclByb3h5JiYpID0gZGVsZXRlOworICAgIFJlbW90ZUFk
YXB0ZXJQcm94eSYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZUFkYXB0ZXJQcm94eSYpID0gZGVsZXRl
OworICAgIFJlbW90ZUFkYXB0ZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUFkYXB0ZXJQcm94eSYm
KSA9IGRlbGV0ZTsKKworICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2luZzsgfQorCisgICAgdm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFBBTDo6V2Vi
R1BVOjpEZXZpY2VEZXNjcmlwdG9yJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQ
VTo6RGV2aWNlPik+JiYpIGZpbmFsOworCisgICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKFJl
ZjxQQUw6OldlYkdQVTo6RGV2aWNlPik+PiBtX2NhbGxiYWNrczsKKworICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFJl
ZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc3YjVkYTRhOWRkNTEzYjVmMDAyZTkx
MzBmNjlmM2I5YmRhYzc0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcApA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1vdGVCaW5kR3JvdXBMYXlv
dXRQcm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sKK30KKworUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHk6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVt
b3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBs
YWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWIwMTMwNzc2ZDY1NGYyZmQzN2EwZWFhYmIwNWQwZjQwM2ZmM2I4YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
V2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QmluZEdyb3VwTGF5b3V0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQ
VSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFzcyBSZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5
PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisgICAgUmVtb3RlQmluZEdy
b3VwTGF5b3V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZUJp
bmRHcm91cExheW91dFByb3h5KGNvbnN0IFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5JikgPSBk
ZWxldGU7CisgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkmJikgPSBkZWxldGU7CisgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkmIG9w
ZXJhdG9yPShjb25zdCBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSYpID0gZGVsZXRlOworICAg
IFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkmJikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsg
V2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFJlZjxDb252ZXJ0VG9CYWNraW5n
Q29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2NkYjJhYjEzYjUzNjljNzdlZWViZTIwMGJmOWE5OTA4ODgyYjA2ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJpbmRHcm91cFByb3h5LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cFByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1v
dGVCaW5kR3JvdXBQcm94eTo6UmVtb3RlQmluZEdyb3VwUHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sKK30KKworUmVtb3RlQmluZEdyb3Vw
UHJveHk6On5SZW1vdGVCaW5kR3JvdXBQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlQmluZEdy
b3VwUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmlu
ZEdyb3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDMzZjFiODkzMWE1NDM0YmMx
YmVkYWYzMDU1ODEwYzY1ZjZjMTY2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
CitjbGFzcyBSZW1vdGVCaW5kR3JvdXBQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6
QmluZEdyb3VwIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cFByb3h5
PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwUHJv
eHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1v
dGVCaW5kR3JvdXBQcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisgICAgUmVtb3RlQmluZEdyb3VwUHJveHkoQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZUJpbmRHcm91cFByb3h5KGNvbnN0
IFJlbW90ZUJpbmRHcm91cFByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlQmluZEdyb3VwUHJv
eHkoUmVtb3RlQmluZEdyb3VwUHJveHkmJikgPSBkZWxldGU7CisgICAgUmVtb3RlQmluZEdyb3Vw
UHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVCaW5kR3JvdXBQcm94eSYpID0gZGVsZXRlOwor
ICAgIFJlbW90ZUJpbmRHcm91cFByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQmluZEdyb3VwUHJveHkm
JikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkzNjAzZTM5OTYz
ODFkMzYxMTJmNmEzNWI1ZDA0NDBkYTgyNDZkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNw
cApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUJ1ZmZlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1vdGVCdWZmZXJQcm94eTo6UmVtb3Rl
QnVmZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKK3sKK30KKworUmVtb3RlQnVmZmVyUHJveHk6On5SZW1vdGVCdWZmZXJQcm94eSgpCit7
Cit9CisKK3ZvaWQgUmVtb3RlQnVmZmVyUHJveHk6Om1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBN
b2RlRmxhZ3MgbWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0obWFwTW9kZUZs
YWdzKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOworfQorCithdXRvIFJlbW90ZUJ1ZmZlclByb3h5OjpnZXRNYXBwZWRSYW5nZShzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6U2l6ZTY0PiBzaXplKSAtPiBNYXBwZWRSYW5nZQoreworICAgIFVOVVNFRF9QQVJBTShv
ZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICByZXR1cm4geyB9OworfQorCit2
b2lkIFJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCgpCit7Cit9CisKK3ZvaWQgUmVtb3RlQnVmZmVy
UHJveHk6OmRlc3Ryb3koKQoreworfQorCit2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJl
bEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE2OTE3MDJiMWU5NmUyYWQzODFhM2FkZWVlMDU2MzFhNTRkYTRiM2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldl
YkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1
ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworY2xh
c3MgUmVtb3RlQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJ1ZmZlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVCdWZmZXJQcm94eT4gY3JlYXRlKENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlclByb3h5KGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVtb3RlQnVmZmVyUHJveHkoKTsK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKKworICAgIFJlbW90ZUJ1ZmZlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7
CisKKyAgICBSZW1vdGVCdWZmZXJQcm94eShjb25zdCBSZW1vdGVCdWZmZXJQcm94eSYpID0gZGVs
ZXRlOworICAgIFJlbW90ZUJ1ZmZlclByb3h5KFJlbW90ZUJ1ZmZlclByb3h5JiYpID0gZGVsZXRl
OworICAgIFJlbW90ZUJ1ZmZlclByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlQnVmZmVyUHJv
eHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVCdWZmZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUJ1
ZmZlclByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICB2b2lkIG1hcEFzeW5jKFBBTDo6V2Vi
R1BVOjpNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zm
c2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemVGb3JNYXAsIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBNYXBwZWRSYW5nZSBnZXRNYXBwZWRSYW5n
ZShzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6U2l6ZTY0PikgZmluYWw7CisgICAgdm9pZCB1bm1hcCgpIGZpbmFsOwor
CisgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+
IG1fY2FsbGJhY2tzOworCisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViR1BV
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhZDEwYjhiMTQxNTcwMDg3NTdkMTA1NTE0MGY3YjJjNzg2YjQxOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUg
eworCitSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgOiBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQoreworfQor
CitSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6On5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKQor
eworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChj
b25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkOTNmYzZkMzkwZTYxYTQ1YjlmNzAxODA1MjJmNzFiZjA1MmIy
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNl
IFdlYkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFzcyBSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5
PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZl
clByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKKyAgICBSZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eShjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmKSA9IGRlbGV0ZTsKKyAg
ICBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5JiYpID0g
ZGVsZXRlOworICAgIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSYgb3BlcmF0b3I9KGNvbnN0IFJl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eSYpID0gZGVsZXRlOworICAgIFJlbW90ZUNvbW1hbmRCdWZm
ZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSYmKSA9IGRlbGV0ZTsK
KworICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorCisgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpIH07CisgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZjZDY3NTlj
NWIzNWY3YmU2NWE2NGRhZDdhOTA3YWMwOTg1ZTc0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCIKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5o
IgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQ
VSB7CisKK1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAg
IDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sK
K30KKworUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6flJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkoKQoreworfQorCitSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5OjpiZWdpblJlbmRlclBhc3MoY29uc3QgUEFMOjpXZWJHUFU6OlJl
bmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7Cit9
CisKK1JlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5OjpiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZlclRv
QnVmZmVyKAorICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIHNvdXJjZSwKKyAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IHNvdXJjZU9mZnNldCwKKyAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVm
ZmVyJiBkZXN0aW5hdGlvbiwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zm
c2V0LAorICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
c291cmNlKTsKKyAgICBVTlVTRURfUEFSQU0oc291cmNlT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFS
QU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHNpemUpOworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHk6OmNvcHlCdWZmZXJUb1RleHR1cmUoCisgICAgY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29w
eUJ1ZmZlciYgc291cmNlLAorICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
JiBkZXN0aW5hdGlvbiwKKyAgICBjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXpl
KQoreworICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKK30KKwordm9pZCBSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKAorICAgIGNvbnN0IFBBTDo6V2Vi
R1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsCisgICAgY29uc3QgUEFMOjpXZWJHUFU6Oklt
YWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sCisgICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVu
dDNEJiBjb3B5U2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKKyAgICBVTlVTRURf
UEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7Cit9CisKK3Zv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weVRleHR1cmVUb1RleHR1cmUoCisgICAg
Y29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwKKyAgICBjb25zdCBQ
QUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCisgICAgY29uc3QgUEFM
OjpXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc291cmNl
KTsKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShjb3B5
U2l6ZSk7Cit9CisKK3ZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcigK
KyAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwKKyAgICBQQUw6Oldl
YkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAorICAgIFBBTDo6V2ViR1BVOjpTaXplNjQg
c2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJB
TShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworfQorCit2b2lk
IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3Vw
TGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworfQorCit2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQoreworfQorCit2b2lkIFJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxh
YmVsKQoreworICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eTo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0JiBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQoreworICAg
IFVOVVNFRF9QQVJBTShxdWVyeVNldCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOwor
fQorCit2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnJlc29sdmVRdWVyeVNldCgKKyAg
ICBjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LAorICAgIFBBTDo6V2ViR1BV
OjpTaXplMzIgZmlyc3RRdWVyeSwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5Q291bnQs
CisgICAgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgZGVzdGluYXRpb24sCisgICAgUEFMOjpX
ZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVl
cnlTZXQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdFF1ZXJ5KTsKKyAgICBVTlVTRURfUEFSQU0o
cXVlcnlDb3VudCk7CisgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURf
UEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOworfQorCitSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRC
dWZmZXI+IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbmlzaChjb25zdCBQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIFJl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQp
OworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2YjVhOGJlNzE2MjI2ZmZkNGY4NzMxZDhhOGRmNDRmMTc4
MTIzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KworI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFt
ZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFz
cyBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29t
bWFuZEVuY29kZXJQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgflJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAgIFJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoY29uc3QgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYp
ID0gZGVsZXRlOworICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBv
cGVyYXRvcj0oY29uc3QgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYpID0gZGVsZXRlOworICAg
IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yJikgZmluYWw7CisgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29k
ZXI+IGJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NEZXNjcmlwdG9yPiYpIGZpbmFsOworCisgICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZm
ZXIoCisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIHNvdXJjZSwKKyAgICAgICAg
UEFMOjpXZWJHUFU6OlNpemU2NCBzb3VyY2VPZmZzZXQsCisgICAgICAgIGNvbnN0IFBBTDo6V2Vi
R1BVOjpCdWZmZXImIGRlc3RpbmF0aW9uLAorICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRl
c3RpbmF0aW9uT2Zmc2V0LAorICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0KSBmaW5hbDsKKwor
ICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZSgKKyAgICAgICAgY29uc3QgUEFMOjpXZWJHUFU6
OkltYWdlQ29weUJ1ZmZlciYgc291cmNlLAorICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1h
Z2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpF
eHRlbnQzRCYgY29weVNpemUpIGZpbmFsOworCisgICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVy
KAorICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLAor
ICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwK
KyAgICAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkgZmluYWw7CisK
KyAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKAorICAgICAgICBjb25zdCBQQUw6OldlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLAorICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BV
OjpFeHRlbnQzRCYgY29weVNpemUpIGZpbmFsOworCisgICAgdm9pZCBmaWxsQnVmZmVyKAorICAg
ICAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwKKyAgICAgICAgUEFM
OjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKKyAgICAgICAgUEFMOjpXZWJHUFU6
OlNpemU2NCkgZmluYWw7CisKKyAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3Vw
TGFiZWwpIGZpbmFsOworICAgIHZvaWQgcG9wRGVidWdHcm91cCgpIGZpbmFsOworICAgIHZvaWQg
aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpIGZpbmFsOworCisgICAgdm9p
ZCB3cml0ZVRpbWVzdGFtcChjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBQQUw6OldlYkdQ
VTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOworCisgICAgdm9pZCByZXNvbHZlUXVlcnlTZXQo
CisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsCisgICAgICAgIFBBTDo6V2Vi
R1BVOjpTaXplMzIgZmlyc3RRdWVyeSwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVy
eUNvdW50LAorICAgICAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwK
KyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkgZmluYWw7CisK
KyAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+IGZpbmlzaChjb25zdCBQQUw6Oldl
YkdQVTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImKSBmaW5hbDsKKworICAgIHZvaWQgc2V0TGFi
ZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYkdQVUlkZW50aWZpZXIg
bV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFJlZjxDb252
ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzYjNjMWY1YzU4MzhkMWVmMDMwZmY4
NDllMGVhMjZhNDcwZTQxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNw
cApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHk6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHko
KQoreworfQorCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGlu
ZShjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCit7
CisgICAgVU5VU0VEX1BBUkFNKGNvbXB1dGVQaXBlbGluZSk7Cit9CisKK3ZvaWQgUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpTaXplMzI+IHopCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAgIFVOVVNFRF9QQVJB
TSh5KTsKKyAgICBVTlVTRURfUEFSQU0oeik7Cit9CisKK3ZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHk6OmRpc3BhdGNoSW5kaXJlY3QoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYg
aW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJl
Y3RPZmZzZXQpOworfQorCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpiZWdp
blBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVl
cnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKK3sKKyAgICBVTlVTRURfUEFS
QU0ocXVlcnlTZXQpOworICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKK30KKwordm9pZCBS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnko
KQoreworfQorCit2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQYXNzKCkK
K3sKK30KKwordm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3Vw
KFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3Vw
JiBiaW5kR3JvdXAsCisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZl
ckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsK
KyAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0cyk7
Cit9CisKK3ZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQ
QUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYg
YmluZEdyb3VwLAorICAgIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVy
LAorICAgIHNpemVfdCBkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVuZ3RoLAorICAgIFBBTDo6
V2ViR1BVOjpTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCisgICAgUEFMOjpXZWJHUFU6
OlNpemUzMiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKKyAgICBVTlVTRURfUEFSQU0oZHlu
YW1pY09mZnNldHNBcnJheUJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRz
QXJyYXlCdWZmZXJMZW5ndGgpOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFT
dGFydCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7Cit9CisK
K3ZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmlu
ZyYmIGdyb3VwTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworfQorCit2
b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpwb3BEZWJ1Z0dyb3VwKCkKK3sKK30K
Kwordm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIo
U3RyaW5nJiYgbWFya2VyTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsK
K30KKwordm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5h
bChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzIyNGMxNWQzZjY0ODVkZmRiYzY3YWZl
NTM2ZGRjZTQ4NDQxZmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaApA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3MgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CisKK2NsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKKyAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworCisgICAgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHkoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmKSA9IGRlbGV0
ZTsKKyAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eSYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JikgPSBkZWxl
dGU7CisgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKKworICAgIFdlYkdQVUlkZW50aWZp
ZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorCisgICAgdm9pZCBzZXRQ
aXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJikgZmluYWw7CisgICAg
dm9pZCBkaXNwYXRjaChQQUw6OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemUzMj4geSwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPikgZmlu
YWw7CisgICAgdm9pZCBkaXNwYXRjaEluZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXIm
IGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KSBmaW5h
bDsKKworICAgIHZvaWQgYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6Oldl
YkdQVTo6UXVlcnlTZXQmLCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpIGZpbmFsOwor
ICAgIHZvaWQgZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKSBmaW5hbDsKKworICAgIHZvaWQg
ZW5kUGFzcygpIGZpbmFsOworCisgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6Oklu
ZGV4MzIsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLAorICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYpIGZpbmFsOwor
CisgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIsIGNvbnN0IFBBTDo6
V2ViR1BVOjpCaW5kR3JvdXAmLAorICAgICAgICBjb25zdCB1aW50MzJfdCogZHluYW1pY09mZnNl
dHNBcnJheUJ1ZmZlciwKKyAgICAgICAgc2l6ZV90IGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXJM
ZW5ndGgsCisgICAgICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3Rh
cnQsCisgICAgICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHluYW1pY09mZnNldHNEYXRhTGVuZ3Ro
KSBmaW5hbDsKKworICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkg
ZmluYWw7CisgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCkgZmluYWw7CisgICAgdm9pZCBpbnNlcnRE
ZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkgZmluYWw7CisKKyAgICB2b2lkIHNldExh
YmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlmaWVy
IG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmODMxZjZlYTZjYzMyM2VkMjk2MmE5NmJkNzdk
MTk3NmY3M2I2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHAKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
CisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQorICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKK3sKK30KKworUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6On5SZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eSgpCit7Cit9CisKK1JlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0PiBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQz
Ml90IGluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgcmV0dXJuIFJlbW90
ZUJpbmRHcm91cExheW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7
Cit9CisKK3ZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OnNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3OGY1NzY1NzUwMTQxMDFlMTc5YmVmZTVjMDg2MWQ5
ZjM1NTBiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
bmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitj
bGFzcyBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSgpOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisg
ICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsK
KworICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KGNvbnN0IFJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkmJikgPSBkZWxldGU7CisgICAgUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSYp
ID0gZGVsZXRlOworICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5JiBvcGVyYXRvcj0oUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkmJikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlm
aWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworICAgIFJlZjxQQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiBnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5k
ZXgpIGZpbmFsOworCisgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworCisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpIH07CisgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURl
dmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGQ0Y2EzN2U5MDRiY2U3YzVh
OWM2MjY0MDg3OWZkZjhkM2E4MThmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuY3BwCkBAIC0w
LDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZURldmljZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlICJSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUJpbmRH
cm91cFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVRdWVy
eVNldFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZVNhbXBsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlVGV4dHVyZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BV
IHsKKworUmVtb3RlRGV2aWNlUHJveHk6OlJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQ
VTo6U3VwcG9ydGVkRmVhdHVyZXM+JiYgZmVhdHVyZXMsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9y
dGVkTGltaXRzPiYmIGxpbWl0cywgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorICAgIDogRGV2aWNlKFdURk1vdmUoZmVhdHVyZXMpLCBXVEZNb3ZlKGxp
bWl0cykpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQoreworfQorCitSZW1vdGVEZXZpY2VQcm94eTo6flJlbW90ZURldmljZVByb3h5KCkK
K3sKK30KKwordm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6ZGVzdHJveSgpCit7Cit9CisKK1JlZjxQ
QUw6OldlYkdQVTo6QnVmZmVyPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQnVmZmVyKGNvbnN0
IFBBTDo6V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gUmVtb3RlQnVmZmVyUHJveHk6OmNyZWF0
ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKK30KKworUmVmPFBBTDo6V2ViR1BVOjpUZXh0
dXJlPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlVGV4dHVyZShjb25zdCBQQUw6OldlYkdQVTo6
VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOworICAgIHJldHVybiBSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KTsKK30KKworUmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVyPiBSZW1vdGVE
ZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcihjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAg
IHJldHVybiBSZW1vdGVTYW1wbGVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KTsKK30KKworUmVmPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+IFJlbW90ZURldmlj
ZVByb3h5OjppbXBvcnRFeHRlcm5hbFRleHR1cmUoY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOworICAgIHJldHVybiBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6Y3JlYXRlKG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQpOworfQorCitSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91
cExheW91dD4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBQ
QUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7Cit9CisKK1JlZjxQ
QUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVQaXBl
bGluZUxheW91dChjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4g
UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQpOworfQorCitSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4gUmVtb3RlRGV2aWNlUHJveHk6
OmNyZWF0ZUJpbmRHcm91cChjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRvciYg
ZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJu
IFJlbW90ZUJpbmRHcm91cFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7
Cit9CisKK1JlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiBSZW1vdGVEZXZpY2VQcm94eTo6
Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICBy
ZXR1cm4gUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KTsKK30KKworUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+IFJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6Y3JlYXRl
KG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworfQorCitSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3Qg
UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFJlbW90ZVJlbmRlclBpcGVs
aW5lUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKK30KKwordm9pZCBS
ZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIHN0ZDo6ZnVuY3Rp
b248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJik+JiYgY2FsbGJhY2sp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIFVOVVNFRF9QQVJBTShjYWxs
YmFjayk7Cit9CisKK3ZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlclBpcGVsaW5l
QXN5bmMoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+
JiYpPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICBV
TlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCitSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3Qgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiYgZGVzY3JpcHRv
cikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFJlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKK30K
KworUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPiBSZW1vdGVEZXZpY2VQcm94
eTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmNy
ZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKK30KKworUmVmPFBBTDo6V2ViR1BVOjpR
dWVyeVNldD4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFBBTDo6V2Vi
R1BVOjpRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOworICAgIHJldHVybiBSZW1vdGVRdWVyeVNldFByb3h5OjpjcmVhdGUobV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OnB1
c2hFcnJvclNjb3BlKFBBTDo6V2ViR1BVOjpFcnJvckZpbHRlciBlcnJvckZpbHRlcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZXJyb3JGaWx0ZXIpOworfQorCit2b2lkIFJlbW90ZURldmljZVByb3h5
Ojpwb3BFcnJvclNjb3BlKHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpFcnJvcj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNr
KTsKK30KKwordm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MmY5ZmMzNDQxMmE1ZGZmOTg2MTg3MDVjM2U2NTUxOWRjOGZiYjY4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2
aWNlUHJveHkuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2UuaD4KKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsK
KworY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKK2NsYXNzIFJlbW90ZURldmljZVBy
b3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpEZXZpY2UgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0ZShSZWY8UEFMOjpXZWJHUFU6OlN1cHBv
cnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0
cz4mJiBsaW1pdHMsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURldmljZVBy
b3h5KFdURk1vdmUoZmVhdHVyZXMpLCBXVEZNb3ZlKGxpbWl0cyksIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KSk7CisgICAgfQorCisgICAgflJlbW90ZURldmljZVByb3h5KCk7CisKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKKyAg
ICBSZW1vdGVEZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYm
LCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmKTsKKworICAgIFJlbW90ZURldmljZVByb3h5KGNvbnN0IFJlbW90ZURldmljZVByb3h5
JikgPSBkZWxldGU7CisgICAgUmVtb3RlRGV2aWNlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmJikg
PSBkZWxldGU7CisgICAgUmVtb3RlRGV2aWNlUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVE
ZXZpY2VQcm94eSYpID0gZGVsZXRlOworICAgIFJlbW90ZURldmljZVByb3h5JiBvcGVyYXRvcj0o
UmVtb3RlRGV2aWNlUHJveHkmJikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJh
Y2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQgZGVzdHJveSgp
IGZpbmFsOworCisgICAgUmVmPFBBTDo6V2ViR1BVOjpCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihjb25z
dCBQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYpIGZpbmFsOworICAgIFJlZjxQQUw6Oldl
YkdQVTo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZURl
c2NyaXB0b3ImKSBmaW5hbDsKKyAgICBSZWY8UEFMOjpXZWJHUFU6OlNhbXBsZXI+IGNyZWF0ZVNh
bXBsZXIoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJikgZmluYWw7CisgICAg
UmVmPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmU+IGltcG9ydEV4dGVybmFsVGV4dHVyZShj
b25zdCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYpIGZpbmFsOworCisg
ICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91
dChjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpIGZpbmFsOwor
ICAgIFJlZjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0
KGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3ImKSBmaW5hbDsKKyAg
ICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4gY3JlYXRlQmluZEdyb3VwKGNvbnN0IFBBTDo6
V2ViR1BVOjpCaW5kR3JvdXBEZXNjcmlwdG9yJikgZmluYWw7CisKKyAgICBSZWY8UEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFBBTDo6V2ViR1BVOjpT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yJikgZmluYWw7CisgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpIGZpbmFsOworICAgIFJlZjxQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImKSBmaW5hbDsKKyAgICB2b2lkIGNyZWF0ZUNvbXB1dGVQaXBl
bGluZUFzeW5jKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwg
c3RkOjpmdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmKT4m
JikgZmluYWw7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFBBTDo6
V2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVm
PFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJik+JiYpIGZpbmFsOworCisgICAgUmVmPFBB
TDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3Qgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiYpIGZpbmFs
OworICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlUmVuZGVy
QnVuZGxlRW5jb2Rlcihjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2Ny
aXB0b3ImKSBmaW5hbDsKKworICAgIFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+IGNyZWF0ZVF1
ZXJ5U2V0KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3ImKSBmaW5hbDsKKwor
ICAgIHZvaWQgcHVzaEVycm9yU2NvcGUoUEFMOjpXZWJHUFU6OkVycm9yRmlsdGVyKSBmaW5hbDsK
KyAgICB2b2lkIHBvcEVycm9yU2NvcGUoc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OkVycm9yPiYmKT4mJikgZmluYWw7CisKKyAgICB2b2lkIHNldExhYmVsSW50
ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZv
aWQoUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYpPj4gbV9jcmVhdGVDb21wdXRl
UGlwZWxpbmVBc3luY0NhbGxiYWNrczsKKyAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVm
PFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJik+PiBtX2NyZWF0ZVJlbmRlclBpcGVsaW5l
QXN5bmNDYWxsYmFja3M7CisgICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OkVycm9yPiYmKT4+IG1fcG9wRXJyb3JTY29wZUNhbGxiYWNrczsKKwor
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSB9OworICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRl
eHR1cmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2NWJhYmQy
OTRjYjQ4NDBkZGNkOTdhNzk5M2VhY2NlNTNkMmIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIDogbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sKK30KKworUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6On5SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSgpCit7
Cit9CisKK3ZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OnNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDkyMmVkOWVmZWMyNDg5OWVjNGRmMjkxMDk4YWU4MjE0
OTJiNGFjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
bmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitj
bGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSgpOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisg
ICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsK
KworICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KGNvbnN0IFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmJikgPSBkZWxldGU7CisgICAgUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSYp
ID0gZGVsZXRlOworICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5JiBvcGVyYXRvcj0oUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmJikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlm
aWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQgc2V0
TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFJlZjxD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWQwZTZhNzg4ZDU5MjVlZTFjOTE3ZTA1ODE0OTFjNWFhNTk4ZWZlMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUdQVVByb3h5LmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1vdGVHUFVQcm94
eTo6UmVtb3RlR1BVUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQorICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKK3sKK30KKworUmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSgpCit7
Cit9CisKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2Vi
R1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZChS
ZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNF
RF9QQVJBTShvcHRpb25zKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVj
MGM1NDQ2YjQ1ZmM3NGIwZDFiMTgzZTc5MjJhN2ZlM2IxYWYwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVBy
b3h5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFzcyBSZW1vdGVHUFVQcm94eSBmaW5hbCA6IHB1
YmxpYyBQQUw6OldlYkdQVTo6R1BVIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQ
VVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVUHJv
eHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1v
dGVHUFVQcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworCisgICAgUmVtb3RlR1BVUHJveHkoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmKTsKKworICAgIFJlbW90ZUdQVVByb3h5KGNvbnN0IFJlbW90ZUdQVVByb3h5Jikg
PSBkZWxldGU7CisgICAgUmVtb3RlR1BVUHJveHkoUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7
CisgICAgUmVtb3RlR1BVUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFVQcm94eSYpID0g
ZGVsZXRlOworICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlR1BVUHJveHkmJikg
PSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgUEFMOjpXZWJH
UFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8UEFM
OjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmKSBmaW5hbDsKKworICAgIERlcXVlPHN0ZDo6ZnVuY3Rp
b248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPj4gbV9jYWxsYmFja3M7CisK
KyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVy
YXRlKCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVM
YXlvdXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTNhM2IxMzVk
ZmQ3MGVlMGFiZjUxNWMxYzA5ZWZiMWM3ODBkOGMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1vdGVQ
aXBlbGluZUxheW91dFByb3h5OjpSZW1vdGVQaXBlbGluZUxheW91dFByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVBp
cGVsaW5lTGF5b3V0UHJveHk6On5SZW1vdGVQaXBlbGluZUxheW91dFByb3h5KCkKK3sKK30KKwor
dm9pZCBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYgbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MTZjM2QxOTI3MjNiMzBhY2VkZGZjNzdmYzBmYzMyY2UzNTA1NDcxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVBpcGVsaW5lTGF5b3V0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdl
YkdQVSB7CisKK2NsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFzcyBSZW1vdGVQ
aXBlbGluZUxheW91dFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxh
eW91dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dFByb3h5
PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
flJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAgIFJlbW90ZVBpcGVsaW5l
TGF5b3V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZVBpcGVs
aW5lTGF5b3V0UHJveHkoY29uc3QgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSYpID0gZGVsZXRl
OworICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eSYmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5JiBvcGVyYXRvcj0o
Y29uc3QgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSYpID0gZGVsZXRlOworICAgIFJlbW90ZVBp
cGVsaW5lTGF5b3V0UHJveHkmIG9wZXJhdG9yPShSZW1vdGVQaXBlbGluZUxheW91dFByb3h5JiYp
ID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nOyB9CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5n
JikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50
aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVlcnlTZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQwYTI3YWU0
NDI0NTdjZTc5ZDAwNjA3OWQyNmEzZTJhNzNiZTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94
eS5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZW1vdGVRdWVyeVNldFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW1vdGVRdWVyeVNldFByb3h5
OjpSZW1vdGVRdWVyeVNldFByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRv
QmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVF1ZXJ5U2V0UHJveHk6On5SZW1vdGVRdWVy
eVNldFByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVRdWVyeVNldFByb3h5OjpkZXN0cm95KCkK
K3sKK30KKwordm9pZCBSZW1vdGVRdWVyeVNldFByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0
IFN0cmluZyYgbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNTA5NmNjNjk3ZWY1NTZlNGU1ZGU1OTBiMDhiMjdiZTAxNmI3ZGQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVlcnlTZXRQcm94eS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldlYkdQVUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK2NsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworCitjbGFzcyBSZW1vdGVRdWVyeVNldFByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpRdWVyeVNldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxS
ZW1vdGVRdWVyeVNldFByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUXVlcnlTZXRQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgflJlbW90ZVF1ZXJ5U2V0UHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAgIFJlbW90ZVF1
ZXJ5U2V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKworICAgIFJlbW90ZVF1ZXJ5
U2V0UHJveHkoY29uc3QgUmVtb3RlUXVlcnlTZXRQcm94eSYpID0gZGVsZXRlOworICAgIFJlbW90
ZVF1ZXJ5U2V0UHJveHkoUmVtb3RlUXVlcnlTZXRQcm94eSYmKSA9IGRlbGV0ZTsKKyAgICBSZW1v
dGVRdWVyeVNldFByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlUXVlcnlTZXRQcm94eSYpID0g
ZGVsZXRlOworICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkmIG9wZXJhdG9yPShSZW1vdGVRdWVyeVNl
dFByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKKwor
ICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OworICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVl
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYjVmNDJjYThlYTE5Y2VkNjFkMWMzMTQxYjU1MWQ2NWYx
YTM5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVRdWV1ZVByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJH
UFUgeworCitSZW1vdGVRdWV1ZVByb3h5OjpSZW1vdGVRdWV1ZVByb3h5KENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVF1ZXVl
UHJveHk6On5SZW1vdGVRdWV1ZVByb3h5KCkKK3sKK30KKwordm9pZCBSZW1vdGVRdWV1ZVByb3h5
OjpzdWJtaXQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OkNvbW1h
bmRCdWZmZXI+PiYmIGNvbW1hbmRCdWZmZXJzKQoreworICAgIFVOVVNFRF9QQVJBTShjb21tYW5k
QnVmZmVycyk7Cit9CisKK3ZvaWQgUmVtb3RlUXVldWVQcm94eTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOworfQorCit2b2lkIFJlbW90ZVF1ZXVlUHJveHk6OndyaXRlQnVmZmVyKAorICAg
IGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwKKyAgICBQQUw6OldlYkdQVTo6U2l6
ZTY0IGJ1ZmZlck9mZnNldCwKKyAgICBjb25zdCB2b2lkKiBzb3VyY2UsCisgICAgc2l6ZV90IGJ5
dGVMZW5ndGgsCisgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkYXRhT2Zmc2V0LAorICAgIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
YnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0oYnVmZmVyT2Zmc2V0KTsKKyAgICBVTlVTRURfUEFS
QU0oc291cmNlKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7CisgICAgVU5VU0VEX1BB
UkFNKGRhdGFPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKwordm9pZCBSZW1v
dGVRdWV1ZVByb3h5Ojp3cml0ZVRleHR1cmUoCisgICAgY29uc3QgUEFMOjpXZWJHUFU6OkltYWdl
Q29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAorICAgIGNvbnN0IHZvaWQqIHNvdXJjZSwKKyAgICBz
aXplX3QgYnl0ZUxlbmd0aCwKKyAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0
JiBkYXRhTGF5b3V0LAorICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgc2l6ZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShzb3VyY2Up
OworICAgIFVOVVNFRF9QQVJBTShieXRlTGVuZ3RoKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YUxh
eW91dCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworfQorCit2b2lkIFJlbW90ZVF1ZXVlUHJv
eHk6OmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKAorICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlJiBzb3VyY2UsCisgICAgY29uc3QgUEFMOjpXZWJHUFU6Oklt
YWdlQ29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAorICAgIGNvbnN0IFBBTDo6V2ViR1BV
OjpFeHRlbnQzRCYgY29weVNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CisgICAg
VU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOwor
fQorCit2b2lkIFJlbW90ZVF1ZXVlUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZDFmMjc4
YzczOTFjYzRiZmM3MGVlNWEyODNjNWNlYTg4MjYyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5
LmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKK2NsYXNzIFJlbW90ZVF1ZXVlUHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZVF1ZXVlUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVRdWV1ZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+UmVtb3RlUXVldWVQcm94eSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisgICAgUmVtb3RlUXVldWVQcm94eShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworCisgICAgUmVtb3RlUXVldWVQcm94eShjb25zdCBS
ZW1vdGVRdWV1ZVByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlUXVldWVQcm94eShSZW1vdGVR
dWV1ZVByb3h5JiYpID0gZGVsZXRlOworICAgIFJlbW90ZVF1ZXVlUHJveHkmIG9wZXJhdG9yPShj
b25zdCBSZW1vdGVRdWV1ZVByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlUXVldWVQcm94eSYg
b3BlcmF0b3I9KFJlbW90ZVF1ZXVlUHJveHkmJikgPSBkZWxldGU7CisKKyAgICBXZWJHUFVJZGVu
dGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKworICAgIHZvaWQg
c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5k
QnVmZmVyPj4mJikgZmluYWw7CisKKyAgICB2b2lkIG9uU3VibWl0dGVkV29ya0RvbmUoc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworCisgICAgdm9pZCB3cml0ZUJ1ZmZlcigKKyAgICAg
ICAgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYsCisgICAgICAgIFBBTDo6V2ViR1BVOjpTaXpl
NjQgYnVmZmVyT2Zmc2V0LAorICAgICAgICBjb25zdCB2b2lkKiBzb3VyY2UsCisgICAgICAgIHNp
emVfdCBieXRlTGVuZ3RoLAorICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRhdGFPZmZzZXQs
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4pIGZpbmFsOworCisg
ICAgdm9pZCB3cml0ZVRleHR1cmUoCisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNv
cHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKKyAgICAgICAgY29uc3Qgdm9pZCogc291cmNlLAorICAg
ICAgICBzaXplX3QgYnl0ZUxlbmd0aCwKKyAgICAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkltYWdl
RGF0YUxheW91dCYsCisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgc2l6ZSkg
ZmluYWw7CisKKyAgICB2b2lkIGNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKAorICAgICAgICBj
b25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSYgc291cmNlLAorICAgICAg
ICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgZGVzdGluYXRpb24s
CisgICAgICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpIGZpbmFsOwor
CisgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAg
RGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX2NhbGxiYWNrczsKKworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAg
IFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzUwNDhjZjEwYTgz
M2UwZjFkM2FmM2I3MTg1Mjk3ODdjNWY4NTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5LmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZVBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIDogbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sKK30KKworUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlclByb3h5Ojp+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KCkK
K3sKK30KKwordm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldFBpcGVsaW5l
KGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlbmRlclBpcGVsaW5lKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVyKGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZm
ZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0LCBQQUw6Oldl
YkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBz
aXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRl
eEZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNp
emUpOworfQorCit2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0VmVydGV4
QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZm
ZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2xvdCk7CisgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHNpemUpOworfQorCit2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94
eTo6ZHJhdyhQQUw6OldlYkdQVTo6U2l6ZTMyIHZlcnRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6
ZTMyIGluc3RhbmNlQ291bnQsCisgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdFZlcnRleCwg
UEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3RhbmNlKQoreworICAgIFVOVVNFRF9QQVJBTSh2
ZXJ0ZXhDb3VudCk7CisgICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOworICAgIFVOVVNF
RF9QQVJBTShmaXJzdFZlcnRleCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOwor
fQorCit2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQoUEFM
OjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNl
Q291bnQsCisgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluZGV4LAorICAgIFBBTDo6V2Vi
R1BVOjpTaWduZWRPZmZzZXQzMiBiYXNlVmVydGV4LAorICAgIFBBTDo6V2ViR1BVOjpTaXplMzIg
Zmlyc3RJbnN0YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7CisgICAgVU5V
U0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsK
KyAgICBVTlVTRURfUEFSQU0oYmFzZVZlcnRleCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5z
dGFuY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0lu
ZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6Oldl
YkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVj
dEJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKK30KKwordm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3Qg
UEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQg
aW5kaXJlY3RPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAg
ICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4
LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNP
ZmZzZXRzKQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGJp
bmRHcm91cCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6
SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLAor
ICAgIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyLAorICAgIHNpemVf
dCBkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVuZ3RoLAorICAgIFBBTDo6V2ViR1BVOjpTaXpl
NjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCisgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBkeW5h
bWljT2Zmc2V0c0RhdGFMZW5ndGgpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKKyAgICBV
TlVTRURfUEFSQU0oYmluZEdyb3VwKTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNB
cnJheUJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXJM
ZW5ndGgpOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCk7CisgICAg
VU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExh
YmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQoreworfQorCit2b2lkIFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYg
bWFya2VyTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKK30KKworUmVm
PFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94
eTo6ZmluaXNoKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gUmVt
b3RlUmVuZGVyQnVuZGxlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsK
K30KKwordm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTU3YzJmNDhkZDIzNTM2MDJkMjc4
OGVmZDZiMDI0ZjBhMzJmYTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
LmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKKworY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5IGZp
bmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eT4gY3JlYXRlKENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94
eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgIH0KKworICAgIH5SZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRG93bmNh
c3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworCisgICAgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5KGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSYpID0g
ZGVsZXRlOworICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHkmJikgPSBkZWxldGU7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
JikgPSBkZWxldGU7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5JiBvcGVyYXRv
cj0oUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2Vi
R1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAg
ICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYpIGZp
bmFsOworCisgICAgdm9pZCBzZXRJbmRleEJ1ZmZlcihjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVy
JiwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PikgZmluYWw7CisgICAgdm9pZCBzZXRW
ZXJ0ZXhCdWZmZXIoUEFMOjpXZWJHUFU6OkluZGV4MzIgc2xvdCwgY29uc3QgUEFMOjpXZWJHUFU6
OkJ1ZmZlciYsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplNjQ+KSBmaW5hbDsKKworICAgIHZvaWQgZHJhdyhQQUw6OldlYkdQVTo6U2l6
ZTMyIHZlcnRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCisgICAg
ICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RWZXJ0ZXgsIFBBTDo6V2ViR1BVOjpTaXplMzIg
Zmlyc3RJbnN0YW5jZSkgZmluYWw7CisgICAgdm9pZCBkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6
U2l6ZTMyIGluZGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKKyAg
ICAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluZGV4LAorICAgICAgICBQQUw6OldlYkdQ
VTo6U2lnbmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemUz
MiBmaXJzdEluc3RhbmNlKSBmaW5hbDsKKworICAgIHZvaWQgZHJhd0luZGlyZWN0KGNvbnN0IFBB
TDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGlu
ZGlyZWN0T2Zmc2V0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3Qg
UEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQg
aW5kaXJlY3RPZmZzZXQpIGZpbmFsOworCisgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJH
UFU6OkluZGV4MzIsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLAorICAgICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHlu
YW1pY09mZnNldHMpIGZpbmFsOworCisgICAgdm9pZCBzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6
OkluZGV4MzIsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmLAorICAgICAgICBjb25zdCB1
aW50MzJfdCogZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciwKKyAgICAgICAgc2l6ZV90IGR5bmFt
aWNPZmZzZXRzQXJyYXlCdWZmZXJMZW5ndGgsCisgICAgICAgIFBBTDo6V2ViR1BVOjpTaXplNjQg
ZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCisgICAgICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHlu
YW1pY09mZnNldHNEYXRhTGVuZ3RoKSBmaW5hbDsKKworICAgIHZvaWQgcHVzaERlYnVnR3JvdXAo
U3RyaW5nJiYgZ3JvdXBMYWJlbCkgZmluYWw7CisgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCkgZmlu
YWw7CisgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkgZmlu
YWw7CisKKyAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4gZmluaXNoKGNvbnN0IFBB
TDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJikgZmluYWw7CisKKyAgICB2b2lkIHNl
dExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlm
aWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8
Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkNTIzMWVhOTYwNzNjMjU3ZWIzYmI3ZTc4NWJiNWE4
NDM4YTk2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5jcHAKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJCdW5kbGVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CituYW1lc3BhY2UgV2ViR1BVIHsKKworUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OlJlbW90ZVJl
bmRlckJ1bmRsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKKyAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5Ojp+UmVtb3RlUmVuZGVy
QnVuZGxlUHJveHkoKQoreworfQorCit2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5OjpzZXRM
YWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YTkxZTBhMmJkODRlZTY4YzYyZTM4NDNh
MjkwZWY5MDExZjkxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCkBAIC0wLDAg
KzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKwor
Y2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5k
bGVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAgIFJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisKKyAgICBSZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eShjb25zdCBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eSYpID0gZGVsZXRlOwor
ICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JiYpID0g
ZGVsZXRlOworICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVt
b3RlUmVuZGVyQnVuZGxlUHJveHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVQ
cm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JiYpID0gZGVsZXRlOworCisg
ICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9
CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAg
ICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk1YjIy
NTUyYmE1MjAyN2JhODdkNTVmNDgwOGM4MWRlNGIyYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eS5jcHAKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsK
KworUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisg
ICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
eworfQorCitSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5Ojp+UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBl
bGluZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVuZGVyUGlwZWxpbmUpOworfQorCit2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVyKGNvbnN0IFBBTDo6V2Vi
R1BVOjpCdWZmZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
U2l6ZTY0PiBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9Q
QVJBTShpbmRleEZvcm1hdCk7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VE
X1BBUkFNKHNpemUpOworfQorCit2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNl
dFZlcnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBjb25zdCBQQUw6OldlYkdQ
VTo6QnVmZmVyJiBidWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNsb3Qp
OworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5OjpkcmF3KFBBTDo6V2ViR1BVOjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BV
OjpTaXplMzIgaW5zdGFuY2VDb3VudCwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVy
dGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCit7CisgICAgVU5VU0VEX1BB
UkFNKHZlcnRleENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7CisgICAg
VU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5j
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQo
UEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3Rh
bmNlQ291bnQsCisgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluZGV4LAorICAgIFBBTDo6
V2ViR1BVOjpTaWduZWRPZmZzZXQzMiBiYXNlVmVydGV4LAorICAgIFBBTDo6V2ViR1BVOjpTaXpl
MzIgZmlyc3RJbnN0YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7CisgICAg
VU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4
KTsKKyAgICBVTlVTRURfUEFSQU0oYmFzZVZlcnRleCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0
SW5zdGFuY2UpOworfQorCit2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJ
bmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpX
ZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJl
Y3RCdWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7Cit9CisKK3ZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBQ
QUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBp
bmRpcmVjdE9mZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOworICAg
IFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBj
b25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCisgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZz
ZXRzKQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGJpbmRH
cm91cCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4
MzIgaW5kZXgsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKKyAgICBj
b25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciwKKyAgICBzaXplX3QgZHlu
YW1pY09mZnNldHNBcnJheUJ1ZmZlckxlbmd0aCwKKyAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGR5
bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LAorICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHluYW1pY09m
ZnNldHNEYXRhTGVuZ3RoKQoreworICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VE
X1BBUkFNKGJpbmRHcm91cCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlC
dWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVuZ3Ro
KTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3RhcnQpOworICAgIFVOVVNF
RF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOworfQorCit2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCit7
CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworfQorCit2b2lkIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQoreworfQorCit2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVs
KQoreworICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwKKyAgICBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LAorICAgIGZsb2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhE
ZXB0aCkKK3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOworICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7CisgICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7CisgICAgVU5V
U0VEX1BBUkFNKG1pbkRlcHRoKTsKKyAgICBVTlVTRURfUEFSQU0obWF4RGVwdGgpOworfQorCit2
b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFNjaXNzb3JSZWN0KFBBTDo6V2Vi
R1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB4LCBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUg
eSwKKyAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgd2lkdGgsIFBBTDo6V2ViR1BV
OjpJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAg
IFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9Q
QVJBTShoZWlnaHQpOworfQorCit2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNl
dEJsZW5kQ29uc3RhbnQoUEFMOjpXZWJHUFU6OkNvbG9yIGNvbG9yKQoreworICAgIFVOVVNFRF9Q
QVJBTShjb2xvcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0
U3RlbmNpbFJlZmVyZW5jZShQQUw6OldlYkdQVTo6U3RlbmNpbFZhbHVlIHN0ZW5jaWxWYWx1ZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3RlbmNpbFZhbHVlKTsKK30KKwordm9pZCBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5OjpiZWdpbk9jY2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXpl
MzIgcXVlcnlJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Cit9CisKK3Zv
aWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kT2NjbHVzaW9uUXVlcnkoKQorewor
fQorCit2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0
aXN0aWNzUXVlcnkoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgUEFMOjpX
ZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7
CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHk6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKK3sKK30KKwordm9p
ZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4mJiByZW5kZXJC
dW5kbGVzKQoreworICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCdW5kbGVzKTsKK30KKwordm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQYXNzKCkKK3sKK30KKwordm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYg
bGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YjQyZDAwY2U0NjY5YzlmYzJiYThlMzQ5M2EyZjQ0YzQ1NGJmNzQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCkBAIC0wLDAgKzEsMTE1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworY2xhc3Mg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6
UmVuZGVyUGFzc0VuY29kZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAg
ICB9CisKKyAgICB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSgpOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworCisgICAg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOwor
CisgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShjb25zdCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eShSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOworICAgIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSYg
b3BlcmF0b3I9KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkmJikgPSBkZWxldGU7CisKKyAg
ICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0K
KworICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
JikgZmluYWw7CisKKyAgICB2b2lkIHNldEluZGV4QnVmZmVyKGNvbnN0IFBBTDo6V2ViR1BVOjpC
dWZmZXImLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zm
c2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+KSBmaW5hbDsKKyAgICB2b2lk
IHNldFZlcnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBjb25zdCBQQUw6Oldl
YkdQVTo6QnVmZmVyJiwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4pIGZpbmFsOworCisgICAgdm9pZCBkcmF3KFBBTDo6V2ViR1BV
OjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwK
KyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNp
emUzMiBmaXJzdEluc3RhbmNlKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdJbmRleGVkKFBBTDo6V2Vi
R1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50
LAorICAgICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5kZXgsCisgICAgICAgIFBBTDo6
V2ViR1BVOjpTaWduZWRPZmZzZXQzMiBiYXNlVmVydGV4LAorICAgICAgICBQQUw6OldlYkdQVTo6
U2l6ZTMyIGZpcnN0SW5zdGFuY2UpIGZpbmFsOworCisgICAgdm9pZCBkcmF3SW5kaXJlY3QoY29u
c3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXpl
NjQgaW5kaXJlY3RPZmZzZXQpIGZpbmFsOworICAgIHZvaWQgZHJhd0luZGV4ZWRJbmRpcmVjdChj
b25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNp
emU2NCBpbmRpcmVjdE9mZnNldCkgZmluYWw7CisKKyAgICB2b2lkIHNldEJpbmRHcm91cChQQUw6
OldlYkdQVTo6SW5kZXgzMiwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYsCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4m
JiBkeW5hbWljT2Zmc2V0cykgZmluYWw7CisKKyAgICB2b2lkIHNldEJpbmRHcm91cChQQUw6Oldl
YkdQVTo6SW5kZXgzMiwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYsCisgICAgICAgIGNv
bnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyLAorICAgICAgICBzaXplX3Qg
ZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlckxlbmd0aCwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNp
emU2NCBkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCwKKyAgICAgICAgUEFMOjpXZWJHUFU6OlNpemUz
MiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpIGZpbmFsOworCisgICAgdm9pZCBwdXNoRGVidWdH
cm91cChTdHJpbmcmJiBncm91cExhYmVsKSBmaW5hbDsKKyAgICB2b2lkIHBvcERlYnVnR3JvdXAo
KSBmaW5hbDsKKyAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVs
KSBmaW5hbDsKKworICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwKKyAgICAg
ICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwKKyAgICAgICAgZmxvYXQgbWluRGVwdGgsIGZs
b2F0IG1heERlcHRoKSBmaW5hbDsKKworICAgIHZvaWQgc2V0U2Npc3NvclJlY3QoUEFMOjpXZWJH
UFU6OkludGVnZXJDb29yZGluYXRlIHgsIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB5
LAorICAgICAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgd2lkdGgsIFBBTDo6V2Vi
R1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQpIGZpbmFsOworCisgICAgdm9pZCBzZXRCbGVu
ZENvbnN0YW50KFBBTDo6V2ViR1BVOjpDb2xvcikgZmluYWw7CisgICAgdm9pZCBzZXRTdGVuY2ls
UmVmZXJlbmNlKFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWUpIGZpbmFsOworCisgICAgdm9pZCBi
ZWdpbk9jY2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7
CisgICAgdm9pZCBlbmRPY2NsdXNpb25RdWVyeSgpIGZpbmFsOworCisgICAgdm9pZCBiZWdpblBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYsIFBBTDo6
V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkgZmluYWw7CisgICAgdm9pZCBlbmRQaXBlbGluZVN0
YXRpc3RpY3NRdWVyeSgpIGZpbmFsOworCisgICAgdm9pZCBleGVjdXRlQnVuZGxlcyhWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4mJikgZmlu
YWw7CisgICAgdm9pZCBlbmRQYXNzKCkgZmluYWw7CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2lu
ZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYWEwODU2NzI4YzdmM2ViZjc2OWJjYTk5OWYxMWNhNmNjYmJiOWRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHAKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQ
aXBlbGluZVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJS
ZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7
CisKK1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OlJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHko
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIDog
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3sKK30K
KworUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6flJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHko
KQoreworfQorCitSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4gUmVtb3RlUmVuZGVy
UGlwZWxpbmVQcm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4KQoreworICAg
IFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91dFBy
b3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVs
KQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQ
VQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzEwMjg2MTg0YzFhODk4M2Q0ZjhkZGZiMTZlY2I5Yzc4YjA1MTFjNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBpcGVsaW5lUHJveHkuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworY2xhc3MgUmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eT4gY3JlYXRlKENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVSZW5k
ZXJQaXBlbGluZVByb3h5KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVBy
b3h5KGNvbnN0IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5KFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmJikgPSBkZWxl
dGU7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eSYgb3BlcmF0b3I9KGNvbnN0IFJlbW90
ZVJlbmRlclBpcGVsaW5lUHJveHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eSYmKSA9IGRlbGV0ZTsK
KworICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorCisgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+IGdldEJpbmRHcm91
cExheW91dCh1aW50MzJfdCBpbmRleCkgZmluYWw7CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2lu
ZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTE5ZDU3YjBjMGZkZTgzOTFhZjVjMDBjMDRlYzJkZDVkMGViMmQ3ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNhbXBsZXJQcm94eS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVTYW1wbGVyUHJveHkuaCIKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisKK1JlbW90ZVNh
bXBsZXJQcm94eTo6UmVtb3RlU2FtcGxlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVNhbXBsZXJQcm94eTo6flJl
bW90ZVNhbXBsZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlU2FtcGxlclByb3h5OjpzZXRM
YWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxl
clByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQwM2Y4ZTA4MDhiZTI0ODczMjZmODM5ODE2Yzg4YjMwMGU4
MWYyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVNhbXBsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsK
KworY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKK2NsYXNzIFJlbW90ZVNhbXBsZXJQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2FtcGxlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVTYW1wbGVyUHJveHkoKTsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKworICAg
IFJlbW90ZVNhbXBsZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworCisgICAgUmVt
b3RlU2FtcGxlclByb3h5KGNvbnN0IFJlbW90ZVNhbXBsZXJQcm94eSYpID0gZGVsZXRlOworICAg
IFJlbW90ZVNhbXBsZXJQcm94eShSZW1vdGVTYW1wbGVyUHJveHkmJikgPSBkZWxldGU7CisgICAg
UmVtb3RlU2FtcGxlclByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlU2FtcGxlclByb3h5Jikg
PSBkZWxldGU7CisgICAgUmVtb3RlU2FtcGxlclByb3h5JiBvcGVyYXRvcj0oUmVtb3RlU2FtcGxl
clByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29u
c3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBSZWY8Q29udmVydFRvQmFja2luZ0Nv
bnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAzM2E5NTRmYzliNGQ5NWY1ZGYxYTlkYWQ4ZjBjMDU5YTg5ZDA3YmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5o
IgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BV
IHsKKworUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5KENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisK
K1JlbW90ZVNoYWRlck1vZHVsZVByb3h5Ojp+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKQorewor
fQorCit2b2lkIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5Ojpjb21waWxhdGlvbkluZm8oc3RkOjpm
dW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25JbmZvPiYmKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworfQorCit2b2lkIFJlbW90ZVNo
YWRlck1vZHVsZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7
CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVNoYWRlck1vZHVsZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMmE5
MWViNWM0ZmMxOTZiYThhYTRiNDRlMTdiMTdjYjkxYmM4YjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGVQcm94eS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKKworY2xhc3MgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKKworICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Jik7CisKKyAgICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShjb25zdCBSZW1vdGVTaGFkZXJNb2R1
bGVQcm94eSYpID0gZGVsZXRlOworICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KFJlbW90ZVNo
YWRlck1vZHVsZVByb3h5JiYpID0gZGVsZXRlOworICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5
JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkmKSA9IGRlbGV0ZTsKKyAg
ICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVNoYWRlck1vZHVsZVBy
b3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICB2b2lkIGNvbXBpbGF0aW9uSW5mbyhzdGQ6OmZ1
bmN0aW9uPHZvaWQoUmVmPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYpPiYmKSBmaW5h
bDsKKworICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKwor
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSB9OworICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2UyMjVhNTEzNmI3ZmExOTczZjk5YWI5
NzMyYTRmOWIyYTFmZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZVRleHR1cmVQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
UmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkdQVSB7CisK
K1JlbW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVyZVByb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICA6IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCit7Cit9CisKK1JlbW90ZVRleHR1cmVQ
cm94eTo6flJlbW90ZVRleHR1cmVQcm94eSgpCit7Cit9CisKK1JlZjxQQUw6OldlYkdQVTo6VGV4
dHVyZVZpZXc+IFJlbW90ZVRleHR1cmVQcm94eTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+JiBkZXNjcmlwdG9yKSBjb25z
dAoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gUmVtb3RlVGV4
dHVyZVZpZXdQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworfQorCit2
b2lkIFJlbW90ZVRleHR1cmVQcm94eTo6ZGVzdHJveSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlVGV4
dHVyZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCit7CisgICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRmYjllMDlmMTNmOThlMDI5M2U1
Y2MyNzg4M2JlZTA5YmQ0ZjBlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmVEaW1lbnNpb24uaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVRleHR1cmVGb3JtYXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2Ug
V2ViR1BVIHsKKworY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKK2NsYXNzIFJlbW90
ZVRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVyZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlUHJveHkoY29udmVydFRvQmFja2luZ0Nv
bnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlUHJveHkoKTsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKKworICAgIFJlbW90ZVRleHR1cmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOwor
CisgICAgUmVtb3RlVGV4dHVyZVByb3h5KGNvbnN0IFJlbW90ZVRleHR1cmVQcm94eSYpID0gZGVs
ZXRlOworICAgIFJlbW90ZVRleHR1cmVQcm94eShSZW1vdGVUZXh0dXJlUHJveHkmJikgPSBkZWxl
dGU7CisgICAgUmVtb3RlVGV4dHVyZVByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlVGV4dHVy
ZVByb3h5JikgPSBkZWxldGU7CisgICAgUmVtb3RlVGV4dHVyZVByb3h5JiBvcGVyYXRvcj0oUmVt
b3RlVGV4dHVyZVByb3h5JiYpID0gZGVsZXRlOworCisgICAgV2ViR1BVSWRlbnRpZmllciBiYWNr
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisKKyAgICBSZWY8UEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3PiBjcmVhdGVWaWV3KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgZGVzdHJv
eSgpIGZpbmFsOworCisgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworCisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpIH07CisgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVWaWV3UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJiMDA4M2I2
NzcyNDVjMjdjMTllMzA2NDJkNWM5MTFjMGFiYjE4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3
UHJveHkuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViR1BVIHsKKworUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eTo6UmVtb3RlVGV4dHVyZVZpZXdQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQoreworfQorCitSZW1vdGVUZXh0dXJlVmlld1By
b3h5Ojp+UmVtb3RlVGV4dHVyZVZpZXdQcm94eSgpCit7Cit9CisKK3ZvaWQgUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAg
IFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlld1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY5OTU4MzU4OWYx
MTMyNjljZWZlZWUxMzA5N2UxMzU1ZGI5YWI2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJv
eHkuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlldy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJHUFUgeworCitjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKKworY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXdQcm94eSBmaW5hbCA6IHB1YmxpYyBQ
QUw6OldlYkdQVTo6VGV4dHVyZVZpZXcgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVtb3Rl
VGV4dHVyZVZpZXdQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVRleHR1cmVWaWV3UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KCk7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CisKKyAgICBSZW1v
dGVUZXh0dXJlVmlld1Byb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisKKyAgICBSZW1v
dGVUZXh0dXJlVmlld1Byb3h5KGNvbnN0IFJlbW90ZVRleHR1cmVWaWV3UHJveHkmKSA9IGRlbGV0
ZTsKKyAgICBSZW1vdGVUZXh0dXJlVmlld1Byb3h5KFJlbW90ZVRleHR1cmVWaWV3UHJveHkmJikg
PSBkZWxldGU7CisgICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYgb3BlcmF0b3I9KGNvbnN0IFJl
bW90ZVRleHR1cmVWaWV3UHJveHkmKSA9IGRlbGV0ZTsKKyAgICBSZW1vdGVUZXh0dXJlVmlld1By
b3h5JiBvcGVyYXRvcj0oUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYmKSA9IGRlbGV0ZTsKKworICAg
IFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQor
CisgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAg
V2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CisgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ0YjQ0ZDE3N2U0YTgzOTFiMGRlZDMxNDFhMzgzMjM4NDdjOGMyOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVURv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKworI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUJp
bmRHcm91cExheW91dFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwUHJveHkuaCIK
KyNpbmNsdWRlICJSZW1vdGVCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIK
KyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUdQVVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVF1ZXJ5U2V0UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVRdWV1ZVByb3h5
LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgiCisjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oIgor
I2luY2x1ZGUgIlJlbW90ZVNhbXBsZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVNoYWRlck1v
ZHVsZVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVByb3h5LmgiCisjaW5jbHVkZSAi
UmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFj
ZSBXZWJHUFUgeworCitXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0Q29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0
ZXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZUFkYXB0ZXJQcm94eSY+
KGFkYXB0ZXIpLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXAmIGJpbmRHcm91cCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVt
b3RlQmluZEdyb3VwUHJveHkmPihiaW5kR3JvdXApLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRl
bnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkm
PihiaW5kR3JvdXBMYXlvdXQpLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
UmVtb3RlQnVmZmVyUHJveHkmPihidWZmZXIpLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRp
ZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmPihjb21tYW5k
QnVmZmVyKS5iYWNraW5nKCk7Cit9CisKK1dlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29t
bWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVyKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Jj4oY29tbWFuZEVuY29kZXIpLmJhY2tpbmco
KTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIm
IGNvbXB1dGVQYXNzRW5jb2RlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmPihjb21wdXRlUGFzc0VuY29kZXIpLmJhY2tpbmco
KTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNv
bXB1dGVQaXBlbGluZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lUHJveHkmPihjb21wdXRlUGlwZWxpbmUpLmJhY2tpbmcoKTsKK30KKworV2Vi
R1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpEZXZpY2UmIGRldmljZSkKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlRGV2aWNlUHJveHkmPihkZXZpY2UpLmJhY2tpbmcoKTsK
K30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmIGdwdSkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlR1BVUHJveHkmPihncHUpLmJhY2tpbmcoKTsKK30K
KworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVM
YXlvdXQpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZVBpcGVsaW5lTGF5
b3V0UHJveHkmPihwaXBlbGluZUxheW91dCkuYmFja2luZygpOworfQorCitXZWJHUFVJZGVudGlm
aWVyIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgUmVtb3RlUXVlcnlTZXRQcm94eSY+KHF1ZXJ5U2V0KS5iYWNraW5nKCk7Cit9
CisKK1dlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UXVldWUmIHF1ZXVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVRdWV1ZVByb3h5Jj4ocXVldWUpLmJhY2tpbmco
KTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
JiByZW5kZXJCdW5kbGVFbmNvZGVyKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkmPihyZW5kZXJCdW5kbGVFbmNvZGVyKS5iYWNr
aW5nKCk7Cit9CisKK1dlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlJiBy
ZW5kZXJCdW5kbGUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5Jj4ocmVuZGVyQnVuZGxlKS5iYWNraW5nKCk7Cit9CisKK1dlYkdQVUlkZW50
aWZpZXIgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyKQor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5Jj4ocmVuZGVyUGFzc0VuY29kZXIpLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRpZmll
ciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmPihyZW5kZXJQ
aXBlbGluZSkuYmFja2luZygpOworfQorCitXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNh
bXBsZXImIHNhbXBsZXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZVNh
bXBsZXJQcm94eSY+KHNhbXBsZXIpLmJhY2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRpZmllciBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkmPihzaGFkZXJNb2R1bGUpLmJh
Y2tpbmcoKTsKK30KKworV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0ZXh0
dXJlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVUZXh0dXJlUHJveHkm
Pih0ZXh0dXJlKS5iYWNraW5nKCk7Cit9CisKK1dlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBSZW1vdGVUZXh0dXJlVmlld1Byb3h5Jj4odGV4dHVyZVZpZXcpLmJhY2tpbmcoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEhBVkUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUyNzQ5NGNlZTZl
ZTU3ZmU0ZWFkN2MyY2U3MTgzYmYzMGUxNWM1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IGZpbmFsIDog
cHVibGljIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5E
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0KCkgPSBkZWZhdWx0OworCisgICAgV2ViR1BV
SWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikg
ZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpCaW5kR3JvdXAmKSBmaW5hbDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYpIGZpbmFsOworICAg
IFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVm
ZmVyJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmll
ciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYpIGZp
bmFsOworICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKSBmaW5h
bDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkRldmljZSYpIGZpbmFsOworICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6R1BVJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYpIGZpbmFs
OworICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6UXVlcnlTZXQmKSBmaW5hbDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXVlJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmll
ciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVy
JikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmKSBmaW5hbDsKKyAgICBXZWJHUFVJZGVudGlmaWVyIGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJikgZmlu
YWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpSZW5kZXJQaXBlbGluZSYpIGZpbmFsOworICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlciYpIGZpbmFsOworICAgIFdlYkdQ
VUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2hhZGVyTW9k
dWxlJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpUZXh0dXJlJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyYpIGZpbmFsOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBiNzI5M2U4Y2RiOTEw
YWRmNGU4OWU1ODYwZDFhYTM0YjNmM2UwYWQzLi45MzZkZjEzNjAzODQ1NDVjZmRlNTc0OTU5MGIz
OTFmZWIxMTNkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAK
</data>
<flag name="review"
          id="469350"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="469363"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>