<?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>121563</bug_id>
          
          <creation_ts>2013-09-18 12:02:41 -0700</creation_ts>
          <short_desc>SharedWorkerProcess code is dead</short_desc>
          <delta_ts>2013-11-18 11:45:24 -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>WebKit2</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Farler">dfarler</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930695</commentid>
    <comment_count>0</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2013-09-18 12:02:41 -0700</bug_when>
    <thetext>It looks like SharedWorkerProcess-related code is dead. In addition, it calls unimplemented functions, which result in linker errors with trunk clang.

Ld /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2 normal x86_64
    cd /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/Source/WebKit2
    /Volumes/Data/BuildSlave/build-asan-webkit/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -L/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -F/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -F/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks -F/System/Library/Frameworks/Carbon.framework/Frameworks -F/System/Library/Frameworks/Quartz.framework/Frameworks -F/System/Library/Frameworks/CoreServices.framework/Frameworks -filelist /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/WebKit2.build/Debug/WebKit2.build/Objects-normal/x86_64/WebKit2.LinkFileList -Xlinker --no-demangle -install_name /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/WebKit2 -mmacosx-version-min=10.9 -v -Xlinker -why_live -Xlinker __ZN6WebKit24SharedWorkerProcessProxy37platformInitializeSharedWorkerProcessERNS_37SharedWorkerProcessCreationParametersE -fsanitize=address -lclang_rt.asan_osx_dynamic -Wl,-unexported_symbol -Wl,__ZTISt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTISt9exception -Wl,-unexported_symbol -Wl,__ZTSSt9bad_alloc -Wl,-unexported_symbol -Wl,__ZTSSt9exception -Wl,-unexported_symbol -Wl,__ZdlPvS_ -Wl,-unexported_symbol -Wl,__ZnwmPv -Wl,-unexported_symbol -Wl,__Znwm -framework ApplicationServices -framework Carbon -framework Cocoa -framework CoreServices -framework IOKit -framework JavaScriptCore -licucore -framework QuartzCore -framework Security -framework WebCore -framework CoreAudio -lWebKitSystemInterfaceMountainLion -stdlib=libc++ -fobjc-link-runtime -single_module -compatibility_version 1 -current_version 538.1 -Xlinker -dependency_info -Xlinker /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/WebKit2.build/Debug/WebKit2.build/Objects-normal/x86_64/WebKit2_dependency_info.dat -o /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2
clang version 3.4 (trunk 190946)
Target: x86_64-apple-darwin13.0.0
Thread model: posix
 &quot;/Volumes/Data/BuildSlave/build-asan-webkit/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/ld&quot; -dynamic -dylib -dylib_compatibility_version 1 -dylib_current_version 538.1 -arch x86_64 -dylib_install_name /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/WebKit2 -macosx_version_min 10.9.0 -single_module -o /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug/WebKit2.framework/Versions/A/WebKit2 -L/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -U ___asan_init_v3 -filelist /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/WebKit2.build/Debug/WebKit2.build/Objects-normal/x86_64/WebKit2.LinkFileList -why_live __ZN6WebKit24SharedWorkerProcessProxy37platformInitializeSharedWorkerProcessERNS_37SharedWorkerProcessCreationParametersE -lclang_rt.asan_osx_dynamic -unexported_symbol __ZTISt9bad_alloc -unexported_symbol __ZTISt9exception -unexported_symbol __ZTSSt9bad_alloc -unexported_symbol __ZTSSt9exception -unexported_symbol __ZdlPvS_ -unexported_symbol __ZnwmPv -unexported_symbol __Znwm -framework ApplicationServices -framework Carbon -framework Cocoa -framework CoreServices -framework IOKit -framework JavaScriptCore -licucore -framework QuartzCore -framework Security -framework WebCore -framework CoreAudio -lWebKitSystemInterfaceMountainLion -dependency_info /Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/WebKit2.build/Debug/WebKit2.build/Objects-normal/x86_64/WebKit2_dependency_info.dat -framework Foundation -lobjc -lc++ -lSystem /Volumes/Data/BuildSlave/build-trunk-clang/build/Release+Asserts/bin/../lib/clang/3.4/lib/darwin/libclang_rt.osx.a -F/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -F/Volumes/Data/BuildSlave/build-asan-webkit/OpenSource/WebKitBuild/Debug -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks -F/System/Library/Frameworks/Carbon.framework/Frameworks -F/System/Library/Frameworks/Quartz.framework/Frameworks -F/System/Library/Frameworks/CoreServices.framework/Frameworks
Undefined symbols for architecture x86_64:
  &quot;__ZN6WebKit24SharedWorkerProcessProxy37platformInitializeSharedWorkerProcessERNS_37SharedWorkerProcessCreationParametersE&quot;, referenced from:
      __ZN6WebKit24SharedWorkerProcessProxy18didFinishLaunchingEPNS_15ProcessLauncherEN7CoreIPC10Connection10IdentifierE in SharedWorkerProcessProxy.o
  &quot;__ZN6WebKit8Download13useCredentialERKN7WebCore23AuthenticationChallengeERKNS1_10CredentialE&quot;, referenced from:
      __ZN6WebKit28DownloadAuthenticationClient18receivedCredentialERKN7WebCore23AuthenticationChallengeERKNS1_10CredentialE in DownloadAuthenticationClient.o
  &quot;__ZN6WebKit8Download25continueWithoutCredentialERKN7WebCore23AuthenticationChallengeE&quot;, referenced from:
      __ZN6WebKit28DownloadAuthenticationClient42receivedRequestToContinueWithoutCredentialERKN7WebCore23AuthenticationChallengeE in DownloadAuthenticationClient.o
  &quot;__ZN6WebKit8Download29cancelAuthenticationChallengeERKN7WebCore23AuthenticationChallengeE&quot;, referenced from:
      __ZN6WebKit28DownloadAuthenticationClient20receivedCancellationERKN7WebCore23AuthenticationChallengeE in DownloadAuthenticationClient.o
  &quot;__ZN7WebCore15ContextMenuItemC1ENS_17ContextMenuActionERKN3WTF6StringEbbRNS2_6VectorIS0_Lm0ENS2_15CrashOnOverflowEEE&quot;, referenced from:
      __ZNK6WebKit22WebContextMenuItemData4coreEv in WebContextMenuItemData.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930719</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-18 13:20:32 -0700</bug_when>
    <thetext>I&apos;ll fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931001</commentid>
    <comment_count>2</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2013-09-19 10:50:16 -0700</bug_when>
    <thetext>Looks like DownloadAuthenticationClient can be axed too, I just realized that it’s included in the linker errors below. Do you want to kill it in this bug as well? If so, https://bugs.webkit.org/show_bug.cgi?id=119667 can be duped to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932185</commentid>
    <comment_count>3</comment_count>
      <attachid>212363</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-23 10:35:37 -0700</bug_when>
    <thetext>Created attachment 212363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932186</commentid>
    <comment_count>4</comment_count>
      <attachid>212363</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-23 10:36:05 -0700</bug_when>
    <thetext>Comment on attachment 212363
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932188</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-23 10:38:37 -0700</bug_when>
    <thetext>Committed r156277: &lt;http://trac.webkit.org/changeset/156277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951726</commentid>
    <comment_count>6</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2013-11-18 11:45:24 -0800</bug_when>
    <thetext>*** Bug 119668 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212363</attachid>
            <date>2013-09-23 10:35:37 -0700</date>
            <delta_ts>2013-09-23 10:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121563-20130923103537.patch</filename>
            <type>text/plain</type>
            <size>130730</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjI3NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTIzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2hhcmVkV29ya2VyUHJvY2VzcyBjb2Rl
IGlzIGRlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMTU2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBTaGFyZWRXb3JrZXJQcm9jZXNzIGNvZGUuCisKIDIwMTMtMDktMjMgIFBhdHJpY2sg
R2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW51cCBDTWFrZSBm
aWxlcyBpbiBXZWJLaXQyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlz
aW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9TaGFy
ZWQvbWFjIFwKICAgICAkKFdlYktpdDIpL1NoYXJlZC9BdXRoZW50aWNhdGlvbiBcCiAgICAgJChX
ZWJLaXQyKS9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMgXAotICAgICQoV2ViS2l0Mikv
U2hhcmVkV29ya2VyUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxpY2F0
aW9uQ2FjaGUgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9Db29raWVzIFwKICAgICAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbiBcCkBAIC01Miw3ICs1MSw2IEBAIFZQQVRIID0g
XAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKICAg
ICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9QbHVnaW5zIFwKLSAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TdG9yYWdlIFwKICAgICAkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9tYWMgXAogIwpAQCAtNzYsOCArNzQsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
ICAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXAogICAgIFBsdWdpblByb2Nlc3NQ
cm94eSBcCiAgICAgUGx1Z2luUHJveHkgXAotICAgIFNoYXJlZFdvcmtlclByb2Nlc3MgXAotICAg
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSBcCiAgICAgU3RvcmFnZU1hbmFnZXIgXAogICAgIFdl
YkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clByb3h5IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQ
b2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9JbmZvLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9J
bmZvLnBsaXN0CShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvSW5mby5wbGlzdAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAv
L0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08
cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9r
ZXk+Ci0JPHN0cmluZz4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlR2V0
SW5mb1N0cmluZzwva2V5PgotCTxzdHJpbmc+JHtCVU5ETEVfVkVSU0lPTn0sIENvcHlyaWdodCAy
MDAzLTIwMTMgQXBwbGUgSW5jLjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9r
ZXk+Ci0JPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0LiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjYuMDwv
c3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+Ci0JPHN0cmluZz4ke1BST0RVQ1RfTkFN
RX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KLQk8c3RyaW5nPkFQ
UEw8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nPC9rZXk+Ci0JPHN0
cmluZz4ke1NIT1JUX1ZFUlNJT05fU1RSSU5HfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVWZXJz
aW9uPC9rZXk+Ci0JPHN0cmluZz4ke0JVTkRMRV9WRVJTSU9OfTwvc3RyaW5nPgotCTxrZXk+TFNG
aWxlUXVhcmFudGluZUVuYWJsZWQ8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtleT5MU01pbmltdW1TeXN0
ZW1WZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4ke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH08L3N0
cmluZz4KLQk8a2V5PkxTVUlFbGVtZW50PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+TlNQcmluY2lw
YWxDbGFzczwva2V5PgotCTxzdHJpbmc+TlNBcHBsaWNhdGlvbjwvc3RyaW5nPgotCTxrZXk+V2Vi
S2l0RW50cnlQb2ludDwva2V5PgotCTxzdHJpbmc+U2hhcmVkV29ya2VyUHJvY2Vzc01haW48L3N0
cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
c01haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1t
CShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzc01haW4ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJP
Q0VTUykKLQotI2ltcG9ydCAiQ2hpbGRQcm9jZXNzRW50cnlQb2ludC5oIgotI2ltcG9ydCAiU2hh
cmVkV29ya2VyUHJvY2Vzcy5oIgotI2ltcG9ydCAiV0tCYXNlLmgiCi0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Ci0KLWV4dGVybiAiQyIgV0tfRVhQT1JUIGludCBTaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOwotCi1pbnQgU2hhcmVkV29ya2VyUHJvY2Vzc01h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWlu
PFNoYXJlZFdvcmtlclByb2Nlc3MsIENoaWxkUHJvY2Vzc01haW5EZWxlZ2F0ZT4oYXJnYywgYXJn
dik7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KLQotI2lmIFBMQVRG
T1JNKE1BQykKLSNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgotI2VuZGlmCi0KLSNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+
Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KLQotI2lmZGVm
IFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxz
ZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNl
bHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotI2VuZGlmIC8vIFNP
Q0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotU2hhcmVkV29ya2Vy
UHJvY2VzcyYgU2hhcmVkV29ya2VyUHJvY2Vzczo6c2hhcmVkKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFNoYXJlZFdvcmtlclByb2Nlc3MsIHByb2Nlc3MsICgpKTsKLSAgICByZXR1cm4g
cHJvY2VzczsKLX0KLQotU2hhcmVkV29ya2VyUHJvY2Vzczo6U2hhcmVkV29ya2VyUHJvY2Vzcygp
Ci0gICAgOiBtX21pbmltdW1MaWZldGltZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlNo
YXJlZFdvcmtlclByb2Nlc3M6Om1pbmltdW1MaWZldGltZVRpbWVyRmlyZWQpCi17Ci19Ci0KLVNo
YXJlZFdvcmtlclByb2Nlc3M6On5TaGFyZWRXb3JrZXJQcm9jZXNzKCkKLXsKLX0KLQotdm9pZCBT
aGFyZWRXb3JrZXJQcm9jZXNzOjpyZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNz
Q29ubmVjdGlvbiogd2ViUHJvY2Vzc0Nvbm5lY3Rpb24pCi17Ci0gICAgc2l6ZV90IHZlY3Rvcklu
ZGV4ID0gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZmluZCh3ZWJQcm9jZXNzQ29ubmVjdGlvbik7
Ci0gICAgQVNTRVJUKHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKLQotICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLnJlbW92ZSh2ZWN0b3JJbmRleCk7Ci0gICAgCi0gICAgZW5hYmxlVGVybWlu
YXRpb24oKTsKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUo
KQotewotICAgIEFTU0VSVChtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCkpOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgZGlkUmVjZWl2ZVNoYXJlZFdvcmtlclByb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3M6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQotewotICAgIC8vIFRoZSBVSSBwcm9j
ZXNzIGhhcyBjcmFzaGVkLCBqdXN0IGdvIGFoZWFkIGFuZCBxdWl0LgotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS0+c3RvcCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJvY2Vzczo6aW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29y
a2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSAgICBzZXRNaW5p
bXVtTGlmZXRpbWUocGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUpOwotICAgIHNldFRlcm1pbmF0
aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7Ci19Ci0KLXZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQotewotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hf
cG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7Ci0KLSAgICAv
LyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwotICAgIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50UG9ydCksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50
IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAs
IHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2Vy
IHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29j
a2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJu
byAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICBjbG9zZVdpdGhSZXRyeShzb2NrZXRzWzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJl
dHJ5KHNvY2tldHNbMV0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRv
IHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRz
WzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0g
RUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
Y2xvc2VXaXRoUmV0cnkoc29ja2V0c1swXSk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShz
b2NrZXRzWzFdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sxXSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMu
YXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKLQotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQg
Y2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0jZW5kaWYKLQotICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3M6OnNldE1pbmltdW1MaWZldGltZShkb3VibGUgbGlmZXRpbWUpCi17
Ci0gICAgaWYgKGxpZmV0aW1lIDw9IDAuMCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGRp
c2FibGVUZXJtaW5hdGlvbigpOwotICAgIAotICAgIG1fbWluaW11bUxpZmV0aW1lVGltZXIuc3Rh
cnRPbmVTaG90KGxpZmV0aW1lKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjptaW5p
bXVtTGlmZXRpbWVUaW1lckZpcmVkKCkKLXsKLSAgICBlbmFibGVUZXJtaW5hdGlvbigpOwotfQot
Ci0jaWYgIVBMQVRGT1JNKE1BQykKLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsK
LX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsKLX0KLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VS
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuaAkocmV2aXNpb24gMTU2MjU1KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
U2hhcmVkV29ya2VyUHJvY2Vzc19oCi0jZGVmaW5lIFNoYXJlZFdvcmtlclByb2Nlc3NfaAotCi0j
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkNoaWxkUHJvY2Vz
cy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKLXN0cnVjdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOwotCi1jbGFzcyBTaGFyZWRXb3JrZXJQcm9jZXNzIDogcHVibGljIENo
aWxkUHJvY2VzcyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkV29ya2VyUHJvY2Vz
cyk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFNoYXJlZFdvcmtlclByb2Nlc3MmIHNoYXJlZCgpOwot
Ci0gICAgdm9pZCByZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlv
biopOwotCi1wcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb2Nlc3MoKTsKLSAgICB+U2hhcmVk
V29ya2VyUHJvY2VzcygpOwotCi0gICAgLy8gQ2hpbGRQcm9jZXNzCi0gICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUo
Y29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOwotCi0gICAgLy8gQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzLgotICAgIHZvaWQgZGlkUmVjZWl2ZVNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgaW5p
dGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpOwotICAgIHZvaWQgY3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
LQotICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7Ci0gICAgdm9pZCBtaW5pbXVt
TGlmZXRpbWVUaW1lckZpcmVkKCk7Ci0KLSAgICAvLyBPdXIgd2ViIHByb2Nlc3MgY29ubmVjdGlv
bnMuCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4+IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zOwotCi0gICAgV2ViQ29yZTo6UnVuTG9vcDo6VGltZXI8U2hhcmVkV29ya2Vy
UHJvY2Vzcz4gbV9taW5pbXVtTGlmZXRpbWVUaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLQotI2VuZGlm
IC8vIFNoYXJlZFdvcmtlclByb2Nlc3NfaApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0KLW1lc3NhZ2VzIC0+
IFNoYXJlZFdvcmtlclByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewotICAgICMgSW5pdGlhbGl6ZXMg
dGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KLSAgICBJbml0aWFsaXplU2hhcmVkV29ya2VyUHJv
Y2VzcyhXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycykKLSAgICAKLSAgICAjIENyZWF0ZXMgYSB3ZWIgcHJvY2VzcyBj
b25uZWN0aW9uLiBXaGVuIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQsCi0gICAgIyBU
aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNlbmRzIGJhY2sgYSBEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbiBtZXNzYWdlIHdpdGgKLSAgICAjIGEgY29ubmVjdGlvbiBpZGVudGlmaWVyLgot
ICAgIENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBTZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKLSNlbmRpZgotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzLmgiCi0KLSNpZiBFTkFCTEUoU0hB
UkVEX1dPUktFUl9QUk9DRVNTKQotCi0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KLSNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQotewotICAgIC8vIEhhdmluZyBh
IHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbiBpbiB0aGlzIHByb2Nlc3Mgd291bGQgcmVzdWx0IGlu
IHNwaW4gbG9ncyAoPHJkYXI6Ly9wcm9ibGVtLzEzMjM5MTE5PikuCi0gICAgc2V0QXBwbGljYXRp
b25Jc0RhZW1vbigpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVQ
cm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCi17Ci0gICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFNoYXJlZCBXb3JrZXIiLCAiVmlzaWJs
ZSBuYW1lIG9mIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUg
YXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1l
XTsKLSAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0
aW9uTmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2IJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuU2hh
cmVkV29ya2VyUHJvY2Vzcy5zYgkod29ya2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLSh2ZXJz
aW9uIDEpCi0oZGVueSBkZWZhdWx0ICh3aXRoIHBhcnRpYWwtc3ltYm9saWNhdGlvbikpCi0KLShp
bXBvcnQgInN5c3RlbS5zYiIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9T
aGFyZWRXb3JrZXJQcm9jZXNzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NvbmZpZ3VyYXRpb25zL1NoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcJKHJldmlzaW9uIDE1
NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1NoYXJlZFdvcmtlclByb2Nl
c3MueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLy8gYXJlIG1ldDoKLS8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLS8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS8vIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0vLyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LS8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLS8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotLy8gT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotCi0jaW5jbHVkZSAiQmFzZUxlZ2FjeVByb2Nl
c3MueGNjb25maWciCi0KLVBST0RVQ1RfTkFNRSA9IFNoYXJlZFdvcmtlclByb2Nlc3M7Ci1JTkZP
UExJU1RfRklMRSA9IFNoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJv
Y2Vzcy9JbmZvLnBsaXN0OwpJbmRleDogU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9t
ZXNzYWdlcy5weQkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDYgQEAgZGVm
IHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6UHJpbnRJbmZv
JywKICAgICAgICAgJ1dlYktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhJywKLSAgICAgICAgJ1dlYktp
dDo6U2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycycsCiAgICAgICAgICdXZWJL
aXQ6OlN0YXRpc3RpY3NEYXRhJywKICAgICAgICAgJ1dlYktpdDo6VGV4dENoZWNrZXJTdGF0ZScs
CiAgICAgICAgICdXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUnLApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWRXb3JrZXJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1TaGFyZWRXb3JrZXJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAg
IGVuY29kZXIgPDwgbWluaW11bUxpZmV0aW1lOwotICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25U
aW1lb3V0OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vz
c05hbWU7Ci0jZW5kaWYKLX0KLQotYm9vbCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTaGFyZWRX
b3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiByZXN1bHQpCi17Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubWluaW11bUxpZmV0aW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRlcm1pbmF0aW9uVGltZW91dCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGFyZW50UHJvY2Vzc05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1NoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTaGFyZWRX
b3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gKLSNkZWZpbmUgU2hhcmVkV29ya2VyUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9D
RVNTKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShN
QUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgQ29yZUlQQyB7
Ci0gICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOwotICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKLSAgICBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzKCk7Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25z
dDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiwgU2hh
cmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwotCi0gICAgZG91YmxlIG1pbmlt
dW1MaWZldGltZTsKLSAgICBkb3VibGUgdGVybWluYXRpb25UaW1lb3V0OwotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIFN0cmluZyBwYXJlbnRQcm9jZXNzTmFtZTsKLSNlbmRpZgotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9D
RVNTKQotCi0jZW5kaWYgLy8gU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFj
L0xlZ2FjeVByb2Nlc3MvSW5mby5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvSW5mby5wbGlz
dAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL0luZm8ucGxpc3QJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
LTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0
dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZl
cnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgotCTxz
dHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUdldEluZm9TdHJp
bmc8L2tleT4KLQk8c3RyaW5nPiR7QlVORExFX1ZFUlNJT059LCBDb3B5cmlnaHQgMjAwMy0yMDEz
IEFwcGxlIEluYy48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxz
dHJpbmc+Y29tLmFwcGxlLldlYktpdC4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KLQk8a2V5PkNG
QnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4K
LQk8a2V5PkNGQnVuZGxlTmFtZTwva2V5PgotCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJp
bmc+Ci0JPGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5BUFBMPC9zdHJp
bmc+Ci0JPGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+JHtT
SE9SVF9WRVJTSU9OX1NUUklOR308L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5
PgotCTxzdHJpbmc+JHtCVU5ETEVfVkVSU0lPTn08L3N0cmluZz4KLQk8a2V5PkxTRmlsZVF1YXJh
bnRpbmVFbmFibGVkPC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+TFNNaW5pbXVtU3lzdGVtVmVyc2lv
bjwva2V5PgotCTxzdHJpbmc+JHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9PC9zdHJpbmc+Ci0J
PGtleT5MU1VJRWxlbWVudDwva2V5PgotCTx0cnVlLz4KLQk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8
L2tleT4KLQk8c3RyaW5nPk5TQXBwbGljYXRpb248L3N0cmluZz4KLQk8a2V5PldlYktpdEVudHJ5
UG9pbnQ8L2tleT4KLQk8c3RyaW5nPlNoYXJlZFdvcmtlclByb2Nlc3NNYWluPC9zdHJpbmc+Ci08
L2RpY3Q+Ci08L3BsaXN0PgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQ
b2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5tbQkocmV2aXNp
b24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRyeVBv
aW50L21hYy9MZWdhY3lQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEs
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0K
LSNpbXBvcnQgIkNoaWxkUHJvY2Vzc0VudHJ5UG9pbnQuaCIKLSNpbXBvcnQgIlNoYXJlZFdvcmtl
clByb2Nlc3MuaCIKLSNpbXBvcnQgIldLQmFzZS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1leHRlcm4gIkMiIFdLX0VYUE9SVCBpbnQgU2hhcmVkV29ya2VyUHJvY2Vzc01haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KTsKLQotaW50IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKLXsKLSAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxTaGFyZWRX
b3JrZXJQcm9jZXNzLCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU+KGFyZ2MsIGFyZ3YpOwotfQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29y
a2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzLmgiCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9Q
Uk9DRVNTKQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJBdHRhY2ht
ZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0jaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KLSNlbmRpZgotCi0jaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1
ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1
bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NF
UVBBQ0tFVAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQ
TEFURk9STShHVEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBB
Q0tFVAotI2VuZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlZFdvcmtlclByb2Nlc3Mm
IFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTaGFyZWRXb3JrZXJQcm9jZXNzLCBwcm9jZXNzLCAoKSk7Ci0gICAgcmV0dXJuIHByb2Nlc3M7
Ci19Ci0KLVNoYXJlZFdvcmtlclByb2Nlc3M6OlNoYXJlZFdvcmtlclByb2Nlc3MoKQotICAgIDog
bV9taW5pbXVtTGlmZXRpbWVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZTaGFyZWRXb3Jr
ZXJQcm9jZXNzOjptaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKQotewotfQotCi1TaGFyZWRXb3Jr
ZXJQcm9jZXNzOjp+U2hhcmVkV29ya2VyUHJvY2VzcygpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJvY2Vzczo6cmVtb3ZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24qIHdlYlByb2Nlc3NDb25uZWN0aW9uKQotewotICAgIHNpemVfdCB2ZWN0b3JJbmRleCA9IG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQod2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgIEFT
U0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3VuZCk7Ci0KLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5yZW1vdmUodmVjdG9ySW5kZXgpOwotICAgIAotICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7
Ci19Ci0KLWJvb2wgU2hhcmVkV29ya2VyUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKLXsKLSAg
ICBBU1NFUlQobV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIGRpZFJlY2VpdmVTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpkaWRD
bG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKLXsKLSAgICAvLyBUaGUgVUkgcHJvY2VzcyBoYXMg
Y3Jhc2hlZCwganVzdCBnbyBhaGVhZCBhbmQgcXVpdC4KLSAgICBSdW5Mb29wOjpjdXJyZW50KCkt
PnN0b3AoKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSwg
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlKQotewotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0gICAgc2V0TWluaW11bUxpZmV0
aW1lKHBhcmFtZXRlcnMubWluaW11bUxpZmV0aW1lKTsKLSAgICBzZXRUZXJtaW5hdGlvblRpbWVv
dXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwotfQotCi12b2lkIFNoYXJlZFdvcmtl
clByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKLXsKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBs
aXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBN
QUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOwotCi0gICAgLy8gQ3JlYXRl
IGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9u
PiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKLSAgICBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgQ29yZUlQQzo6QXR0
YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRX
b3JrZXJQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBv
cnQpLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNz
IHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0s
IEZfU0VURkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlO
VFIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY2xv
c2VXaXRoUmV0cnkoc29ja2V0c1swXSk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShzb2Nr
ZXRzWzFdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IERvbid0IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJs
ZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9T
RVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0
aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sx
XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChj
b25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNv
Y2tldChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKGNsaWVudFNvY2tldCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
I2VuZGlmCi0KLSAgICBkaXNhYmxlVGVybWluYXRpb24oKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzOjpzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlIGxpZmV0aW1lKQotewotICAgIGlm
IChsaWZldGltZSA8PSAwLjApCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBkaXNhYmxlVGVy
bWluYXRpb24oKTsKLSAgICAKLSAgICBtX21pbmltdW1MaWZldGltZVRpbWVyLnN0YXJ0T25lU2hv
dChsaWZldGltZSk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6bWluaW11bUxpZmV0
aW1lVGltZXJGaXJlZCgpCi17Ci0gICAgZW5hYmxlVGVybWluYXRpb24oKTsKLX0KLQotI2lmICFQ
TEFURk9STShNQUMpCi12b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0KLXZv
aWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxk
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0jZW5kaWYKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNoYXJlZFdv
cmtlclByb2Nlc3NfaAotI2RlZmluZSBTaGFyZWRXb3JrZXJQcm9jZXNzX2gKLQotI2lmIEVOQUJM
RShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0KLSNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb247Ci1zdHJ1Y3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczsKLQotY2xhc3MgU2hhcmVkV29ya2VyUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nl
c3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3MpOwotcHVi
bGljOgotICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm9jZXNzJiBzaGFyZWQoKTsKLQotICAgIHZv
aWQgcmVtb3ZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKLQot
cHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm9jZXNzKCk7Ci0gICAgflNoYXJlZFdvcmtlclBy
b2Nlc3MoKTsKLQotICAgIC8vIENoaWxkUHJvY2VzcwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENo
aWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKLQotICAgIC8vIENvcmVJUEM6OkNv
bm5lY3Rpb246OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpIE9WRVJSSURFOwotCi0gICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KLSAg
ICB2b2lkIGRpZFJlY2VpdmVTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGluaXRpYWxpemVT
aGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKLSAgICB2b2lkIGNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCk7Ci0KLSAgICB2
b2lkIHNldE1pbmltdW1MaWZldGltZShkb3VibGUpOwotICAgIHZvaWQgbWluaW11bUxpZmV0aW1l
VGltZXJGaXJlZCgpOwotCi0gICAgLy8gT3VyIHdlYiBwcm9jZXNzIGNvbm5lY3Rpb25zLgotICAg
IFZlY3RvcjxSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX3dlYlByb2Nlc3NDb25uZWN0
aW9uczsKLQotICAgIFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyPFNoYXJlZFdvcmtlclByb2Nlc3M+
IG1fbWluaW11bUxpZmV0aW1lVGltZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0KLSNlbmRpZiAvLyBTaGFy
ZWRXb3JrZXJQcm9jZXNzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nl
c3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nl
c3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMSwz
OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi1tZXNzYWdlcyAtPiBTaGFyZWRX
b3JrZXJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKLSAgICAjIEluaXRpYWxpemVzIHRoZSBzaGFy
ZWQgd29ya2VyIHByb2Nlc3MuCi0gICAgSW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoV2Vi
S2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpCi0gICAgCi0gICAgIyBDcmVhdGVzIGEgd2ViIHByb2Nlc3MgY29ubmVjdGlv
bi4gV2hlbiB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkLAotICAgICMgVGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2VzcyBzZW5kcyBiYWNrIGEgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24gbWVzc2FnZSB3aXRoCi0gICAgIyBhIGNvbm5lY3Rpb24gaWRlbnRpZmllci4KLSAgICBDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgU2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCi0jZW5kaWYKLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclBy
b2Nlc3NNYWMubW0JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzcy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JL
RVJfUFJPQ0VTUykKLQotI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1w
b3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZv
aWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKLXsKLSAgICAvLyBIYXZpbmcgYSB3aW5kb3cg
c2VydmVyIGNvbm5lY3Rpb24gaW4gdGhpcyBwcm9jZXNzIHdvdWxkIHJlc3VsdCBpbiBzcGluIGxv
Z3MgKDxyZGFyOi8vcHJvYmxlbS8xMzIzOTExOT4pLgotICAgIHNldEFwcGxpY2F0aW9uSXNEYWVt
b24oKTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05h
bWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotewotICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBTaGFyZWQgV29ya2VyIiwgIlZpc2libGUgbmFtZSBv
ZiB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0
aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZV07Ci0gICAg
V0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURf
V09SS0VSX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2IKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktp
dC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNiCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtl
clByb2Nlc3Muc2IJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi0odmVyc2lvbiAxKQot
KGRlbnkgZGVmYXVsdCAod2l0aCBwYXJ0aWFsLXN5bWJvbGljYXRpb24pKQotCi0oaW1wb3J0ICJz
eXN0ZW0uc2IiKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL0luZm8ucGxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNz
L0luZm8ucGxpc3QJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9JbmZvLnBsaXN0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
LTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8
L2tleT4KLQk8c3RyaW5nPiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVH
ZXRJbmZvU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4ke0JVTkRMRV9WRVJTSU9OfSwgQ29weXJpZ2h0
IDIwMDMtMjAxMyBBcHBsZSBJbmMuPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUlkZW50aWZpZXI8
L2tleT4KLQk8c3RyaW5nPmNvbS5hcHBsZS5XZWJLaXQuJHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+
Ci0JPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgotCTxzdHJpbmc+Ni4w
PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZU5hbWU8L2tleT4KLQk8c3RyaW5nPiR7UFJPRFVDVF9O
QU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgotCTxzdHJpbmc+
QVBQTDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8
c3RyaW5nPiR7U0hPUlRfVkVSU0lPTl9TVFJJTkd9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVZl
cnNpb248L2tleT4KLQk8c3RyaW5nPiR7QlVORExFX1ZFUlNJT059PC9zdHJpbmc+Ci0JPGtleT5M
U0ZpbGVRdWFyYW50aW5lRW5hYmxlZDwva2V5PgotCTx0cnVlLz4KLQk8a2V5PkxTTWluaW11bVN5
c3RlbVZlcnNpb248L2tleT4KLQk8c3RyaW5nPiR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfTwv
c3RyaW5nPgotCTxrZXk+TFNVSUVsZW1lbnQ8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtleT5OU1ByaW5j
aXBhbENsYXNzPC9rZXk+Ci0JPHN0cmluZz5OU0FwcGxpY2F0aW9uPC9zdHJpbmc+Ci0JPGtleT5X
ZWJLaXRFbnRyeVBvaW50PC9rZXk+Ci0JPHN0cmluZz5TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbjwv
c3RyaW5nPgotPC9kaWN0PgotPC9wbGlzdD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9j
ZXNzTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9j
ZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzc01haW4u
bW0JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nl
c3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9Q
Uk9DRVNTKQotCi0jaW1wb3J0ICJDaGlsZFByb2Nlc3NFbnRyeVBvaW50LmgiCi0jaW1wb3J0ICJT
aGFyZWRXb3JrZXJQcm9jZXNzLmgiCi0jaW1wb3J0ICJXS0Jhc2UuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKLQotZXh0ZXJuICJDIiBXS19FWFBPUlQgaW50IFNoYXJlZFdvcmtlclByb2Nl
c3NNYWluKGludCBhcmdjLCBjaGFyKiogYXJndik7Ci0KLWludCBTaGFyZWRXb3JrZXJQcm9jZXNz
TWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIENoaWxkUHJvY2Vzc01h
aW48U2hhcmVkV29ya2VyUHJvY2VzcywgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRlPihhcmdjLCBh
cmd2KTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2Fj
eVByb2Nlc3MvSW5mby5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvSW5mby5wbGlzdAkocmV2
aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL0luZm8ucGxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9D
VFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93
d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249
IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgotCTxzdHJpbmc+
JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tl
eT4KLQk8c3RyaW5nPiR7QlVORExFX1ZFUlNJT059LCBDb3B5cmlnaHQgMjAwMy0yMDEzIEFwcGxl
IEluYy48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+
Y29tLmFwcGxlLldlYktpdC4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxl
SW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5
PkNGQnVuZGxlTmFtZTwva2V5PgotCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+Ci0J
PGtleT5DRkJ1bmRsZVBhY2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5BUFBMPC9zdHJpbmc+Ci0J
PGtleT5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+JHtTSE9SVF9W
RVJTSU9OX1NUUklOR308L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgotCTxz
dHJpbmc+JHtCVU5ETEVfVkVSU0lPTn08L3N0cmluZz4KLQk8a2V5PkxTRmlsZVF1YXJhbnRpbmVF
bmFibGVkPC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+TFNNaW5pbXVtU3lzdGVtVmVyc2lvbjwva2V5
PgotCTxzdHJpbmc+JHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9PC9zdHJpbmc+Ci0JPGtleT5M
U1VJRWxlbWVudDwva2V5PgotCTx0cnVlLz4KLQk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4K
LQk8c3RyaW5nPk5TQXBwbGljYXRpb248L3N0cmluZz4KLQk8a2V5PldlYktpdEVudHJ5UG9pbnQ8
L2tleT4KLQk8c3RyaW5nPlNoYXJlZFdvcmtlclByb2Nlc3NNYWluPC9zdHJpbmc+Ci08L2RpY3Q+
Ci08L3BsaXN0PgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQb2ludC9t
YWMvTGVnYWN5UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5tbQkocmV2aXNpb24gMTU2
MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRyeVBvaW50L21h
Yy9MZWdhY3lQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0KLSNpbXBv
cnQgIkNoaWxkUHJvY2Vzc0VudHJ5UG9pbnQuaCIKLSNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nl
c3MuaCIKLSNpbXBvcnQgIldLQmFzZS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1l
eHRlcm4gIkMiIFdLX0VYUE9SVCBpbnQgU2hhcmVkV29ya2VyUHJvY2Vzc01haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KTsKLQotaW50IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKLXsKLSAgICByZXR1cm4gQ2hpbGRQcm9jZXNzTWFpbjxTaGFyZWRXb3JrZXJQ
cm9jZXNzLCBDaGlsZFByb2Nlc3NNYWluRGVsZWdhdGU+KGFyZ2MsIGFyZ3YpOwotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZFdvcmtlclByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9JbmZvLnBs
aXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvRW50
cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9JbmZvLnBsaXN0CShyZXZpc2lvbiAxNTYyNTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2Fj
eVByb2Nlc3MvSW5mby5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi08P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJ
QyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFRE
cy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0Pgot
CTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz4ke1BST0RVQ1RfTkFNRX08
L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlR2V0SW5mb1N0cmluZzwva2V5PgotCTxzdHJpbmc+JHtC
VU5ETEVfVkVSU0lPTn0sIENvcHlyaWdodCAyMDAzLTIwMTMgQXBwbGUgSW5jLjwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0
LiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZl
cnNpb248L2tleT4KLQk8c3RyaW5nPjYuMDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVOYW1lPC9r
ZXk+Ci0JPHN0cmluZz4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFj
a2FnZVR5cGU8L2tleT4KLQk8c3RyaW5nPkFQUEw8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hv
cnRWZXJzaW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4ke1NIT1JUX1ZFUlNJT05fU1RSSU5HfTwv
c3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4ke0JVTkRMRV9W
RVJTSU9OfTwvc3RyaW5nPgotCTxrZXk+TFNGaWxlUXVhcmFudGluZUVuYWJsZWQ8L2tleT4KLQk8
dHJ1ZS8+Ci0JPGtleT5MU01pbmltdW1TeXN0ZW1WZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4ke01B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVH08L3N0cmluZz4KLQk8a2V5PkxTVUlFbGVtZW50PC9rZXk+
Ci0JPHRydWUvPgotCTxrZXk+TlNQcmluY2lwYWxDbGFzczwva2V5PgotCTxzdHJpbmc+TlNBcHBs
aWNhdGlvbjwvc3RyaW5nPgotCTxrZXk+V2ViS2l0RW50cnlQb2ludDwva2V5PgotCTxzdHJpbmc+
U2hhcmVkV29ya2VyUHJvY2Vzc01haW48L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2Fj
eVByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzc01haW4ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdhY3lQcm9jZXNz
L1NoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1tCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3Mv
U2hhcmVkV29ya2VyUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLQotI2ltcG9ydCAiQ2hpbGRQcm9jZXNz
RW50cnlQb2ludC5oIgotI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzcy5oIgotI2ltcG9ydCAi
V0tCYXNlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLWV4dGVybiAiQyIgV0tfRVhQ
T1JUIGludCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOwot
Ci1pbnQgU2hhcmVkV29ya2VyUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewot
ICAgIHJldHVybiBDaGlsZFByb2Nlc3NNYWluPFNoYXJlZFdvcmtlclByb2Nlc3MsIENoaWxkUHJv
Y2Vzc01haW5EZWxlZ2F0ZT4oYXJnYywgYXJndik7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hB
UkVEX1dPUktFUl9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJv
Y2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1t
CShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNz
L21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNo
YXJlZFdvcmtlclByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1Mp
Ci0KLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFNoYXJlZFdv
cmtlclByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgLy8gSGF2aW5nIGEgd2luZG93IHNlcnZlciBjb25u
ZWN0aW9uIGluIHRoaXMgcHJvY2VzcyB3b3VsZCByZXN1bHQgaW4gc3BpbiBsb2dzICg8cmRhcjov
L3Byb2JsZW0vMTMyMzkxMTk+KS4KLSAgICBzZXRBcHBsaWNhdGlvbklzRGFlbW9uKCk7Ci19Ci0K
LXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENo
aWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSAgICBO
U1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VC
X1VJX1NUUklORygiJUAgU2hhcmVkIFdvcmtlciIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHNoYXJl
ZCB3b3JrZXIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIp
LCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOwotICAgIFdLU2V0VmlzaWJs
ZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9D
RVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvY29tLmFw
cGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuU2hhcmVkV29y
a2VyUHJvY2Vzcy5zYgkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
V29ya2VyUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5TaGFyZWRXb3JrZXJQcm9jZXNzLnNi
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzAsMCBAQAotKHZlcnNpb24gMSkKLShkZW55IGRlZmF1
bHQgKHdpdGggcGFydGlhbC1zeW1ib2xpY2F0aW9uKSkKLQotKGltcG9ydCAic3lzdGVtLnNiIikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShy
ZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDEzICszMjksNiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0UGx1Z2luUHJvY2Vzc0NvCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSX1BST0NFU1MpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0U2hhcmVkV29ya2Vy
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiAvKiB1cmwgKi8sIGNvbnN0IFN0cmluZyYg
LyogbmFtZSAqLywgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTaGFy
ZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PikKLXsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykK
LQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5KQog
ewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOSArMTUyLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKICNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSX1BST0NFU1MpCi0gICAgdm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKLSNlbmRpZgogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDQgQEAgbWVz
c2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdgogI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAgICAgR2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkgLT4gKENvcmVJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAogI2VuZGlmCi0jaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICBHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVj
dGlvbihXVEY6OlN0cmluZyB1cmwsIFdURjo6U3RyaW5nIG5hbWUpIC0+IChDb3JlSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKLSNlbmRpZgotCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
LmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEwICs5MCw2IEBA
IGNvbnN0IGNoYXIqIFByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGUKICAgICBjYXNlIE5ldHdv
cmtQcm9jZXNzOgogICAgICAgICByZXR1cm4gIm5ldHdvcmtwcm9jZXNzIjsKICNlbmRpZgotI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAgY2FzZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzOgotICAgICAgICByZXR1cm4gInNoYXJlZHdvcmtlcnByb2Nlc3MiOwotI2VuZGlmCiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjEsMTMgKzExNyw2IEBAIGJvb2wg
UHJvY2Vzc0xhdW5jaGVyOjpnZXRQcm9jZXNzVHlwZUZyb20KICAgICB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCi0gICAgaWYgKCFzdHJjbXAoc3RyaW5nLCAi
c2hhcmVkd29ya2VycHJvY2VzcyIpKSB7Ci0gICAgICAgIHByb2Nlc3NUeXBlID0gU2hhcmVkV29y
a2VyUHJvY2VzczsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsOSArNTMsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICAgICAgTmV0d29ya1Byb2Nlc3MsCiAjZW5kaWYKLSNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUl9QUk9DRVNTKQotICAgICAgICBTaGFyZWRXb3JrZXJQcm9jZXNzCi0jZW5kaWYKICAgICB9
OwogCiAgICAgc3RydWN0IExhdW5jaE9wdGlvbnMgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTEgKzE3
MCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZShjb25zdCBQcm8KICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCi0jaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6U2hh
cmVkV29ya2VyUHJvY2VzczoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiAwOwotI2VuZGlmCiAgICAgfQogfQogCkBAIC00MDAsMTEgKzM5NSw2IEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29uc3QgUHJvY2Vzc0wKICAgICAgICAgcHJvY2Vzc1BhdGgg
PSBbd2ViS2l0MkJ1bmRsZSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIk5ldHdvcmtQcm9j
ZXNzLmFwcCJdOwogICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSX1BST0NFU1MpCi0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlNoYXJlZFdvcmtlclByb2Nl
c3M6Ci0gICAgICAgIHByb2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFy
eUV4ZWN1dGFibGU6QCJTaGFyZWRXb3JrZXJQcm9jZXNzLmFwcCJdOwotICAgICAgICBicmVhazsK
LSNlbmRpZgogICAgIH0KIAogICAgIE5TU3RyaW5nICpmcmFtZXdvcmtFeGVjdXRhYmxlUGF0aCA9
IFt3ZWJLaXQyQnVuZGxlIGV4ZWN1dGFibGVQYXRoXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgi
Ci0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyJiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLCBtYW5hZ2VyLCAoKSk7Ci0gICAgcmV0dXJuIG1h
bmFnZXI7Ci19Ci0KLVNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlcigpCi17Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI6Omdl
dFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hh
cmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkpCi17Ci0gICAg
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzID0gZ2V0T3JDcmVh
dGVTaGFyZWRXb3JrZXJQcm9jZXNzKHVybCwgbmFtZSk7Ci0gICAgc2hhcmVkV29ya2VyUHJvY2Vz
cy0+Z2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb24ocmVwbHkpOwotfQotCi12b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyOjpyZW1vdmVTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHko
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpCi17Ci0g
ICAgc2l6ZV90IHZlY3RvckluZGV4ID0gbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXMuZmluZChzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkpOwotICAgIEFTU0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3Vu
ZCk7Ci0KLSAgICBtX3NoYXJlZFdvcmtlclByb2Nlc3Nlcy5yZW1vdmUodmVjdG9ySW5kZXgpOwot
fQotCi1TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkqIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
OjpnZXRPckNyZWF0ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogRmluZCBhbiBleGlzdGluZyBzaGFyZWQg
d29ya2VyIHRoYXQgbWF0Y2hlcy4KLQotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHk+IHNoYXJlZFdvcmtlclByb2Nlc3MgPSBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0
ZSh0aGlzLCB1cmwsIG5hbWUpOwotICAgIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSogc2hhcmVk
V29ya2VyUHJvY2Vzc1B0ciA9IHNoYXJlZFdvcmtlclByb2Nlc3MuZ2V0KCk7Ci0KLSAgICBtX3No
YXJlZFdvcmtlclByb2Nlc3Nlcy5hcHBlbmQoc2hhcmVkV29ya2VyUHJvY2Vzcy5yZWxlYXNlKCkp
OwotCi0gICAgcmV0dXJuIHNoYXJlZFdvcmtlclByb2Nlc3NQdHI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclBy
b2Nlc3NNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1No
YXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaAkocmV2aXNpb24gMTU2MjU1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2Vy
UHJvY2Vzc01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcl9oCi0jZGVmaW5l
IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyX2gKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VS
X1BST0NFU1MpCi0KLSNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIENvcmVJUEMgewotICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFBsdWdpbkluZm9TdG9yZTsKLWNsYXNzIFNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eTsKLWNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLWNsYXNzIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlcjsKLQotY2xhc3MgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKTsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXImIHNoYXJlZCgpOwotCi0gICAg
dm9pZCBnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKLSAgICB2
b2lkIHJlbW92ZVNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShTaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkqKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlcigpOwotCi0gICAgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KiBnZXRPckNyZWF0
ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eT4+IG1fc2hh
cmVkV29ya2VyUHJvY2Vzc2VzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi0jZW5kaWYgLy8gU2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hh
cmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJX
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29w
Lmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJ
WE1FOiBBcmUgdGhlc2UgcmVsZXZhbnQgdG8gc2hhcmVkIHdvcmtlciBwcm9jZXNzIGF0IGFsbD8K
LXN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bUxpZmV0aW1lID0gMzAgKiA2MDsKLXN0YXRpYyBj
b25zdCBkb3VibGUgc2h1dGRvd25UaW1lb3V0ID0gMTAgKiA2MDsKLQotUGFzc1JlZlB0cjxTaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHk+IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6Y3JlYXRlKFNo
YXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKiBzaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlciwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eShzaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ciwgdXJsLCBuYW1lKSk7Ci19Ci0KLVNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6U2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyKiBzaGFyZWRXb3JrZXJQ
cm9jZXNzTWFuYWdlciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAg
ICA6IG1fc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIoc2hhcmVkV29ya2VyUHJvY2Vzc01hbmFn
ZXIpCi0gICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKLXsKLSAgICBQcm9j
ZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMgbGF1bmNoT3B0aW9uczsKLSAgICBsYXVuY2hPcHRp
b25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpTaGFyZWRXb3JrZXJQcm9jZXNzOwot
ICAgIC8vIEZJWE1FOiBQYXNzIFVSTCBkb3duIHRvIHRoZSBwcm9jZXNzIHRvIGxvYWQuCi0jaWYg
UExBVEZPUk0oTUFDKQotI2lmIEhBVkUoWFBDKQotICAgIGxhdW5jaE9wdGlvbnMudXNlWFBDID0g
ZmFsc2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBQcm9jZXNz
TGF1bmNoZXI6OmNyZWF0ZSh0aGlzLCBsYXVuY2hPcHRpb25zKTsKLX0KLQotU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5Ojp+U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KCkKLXsKLX0KLQotLy8gQXNr
cyB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHRvIGNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRv
IGEgd2ViIHByb2Nlc3MuIFRoZSBjb25uZWN0aW9uIGlkZW50aWZpZXIgd2lsbCBiZQotLy8gZW5j
b2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBhbmQgc2VudCBiYWNrIHRvIHRoZSBj
b25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4KLXZvaWQgU2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5OjpnZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5KQotewotICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmFwcGVuZChyZXBseSk7Ci0KLSAgICBpZiAobV9wcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNoaW5n
KCkpIHsKLSAgICAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzKys7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gQXNrIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nl
c3MgdG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gU2luY2UgdGhlIHNoYXJlZCB3b3JrZXIgY2FuIGJl
IHdhaXRpbmcgZm9yIGEgc3luY2hyb25vdXMgcmVwbHkKLSAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSB0aGF0IHRoaXMgbWVzc2FnZSBpcyBhbHdheXMgcHJvY2Vzc2VkLCBldmVuIHdoZW4gdGhl
IHNoYXJlZCB3b3JrZXIgaXMgd2FpdGluZyBmb3IgYSBzeW5jaHJvbnVzIHJlcGx5LgotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzczo6Q3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6
OnRlcm1pbmF0ZSgpCi17Ci0gICAgbV9wcm9jZXNzTGF1bmNoZXItPnRlcm1pbmF0ZVByb2Nlc3Mo
KTsKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlclByb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCi17Ci0gICAgLy8gVGhlIHNoYXJlZCB3b3JrZXIg
cHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3lu
YyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCi0gICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQot
ICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KCkpOwotI2Vsc2UKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotICAgIH0KLQotICAgIC8vIFRlbGwgdGhlIHNo
YXJlZCB3b3JrZXIgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIHNoYXJlZCB3
b3JrZXIgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KLSAg
ICBtX3NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLT5yZW1vdmVTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkodGhpcyk7Ci19Ci0KLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBkaWRSZWNlaXZlU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQotewotICAgIC8v
IEZJWE1FOiBOb3RpZnkgd2ViIHByb2Nlc3Nlcy4KLQotICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1
cyB0byBiZSBkZWxldGVkLgotICAgIHNoYXJlZFdvcmtlclByb2Nlc3NDcmFzaGVkT3JGYWlsZWRU
b0xhdW5jaCgpOwotfQotCi12b2lkIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdHJpbmdSZWZl
cmVuY2UsIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSkKLXsKLX0KLQotdm9pZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotewotICAg
IEFTU0VSVCghbV9jb25uZWN0aW9uKTsKLQotICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjpp
ZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkgewotICAgICAgICBzaGFyZWRX
b3JrZXJQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNl
cnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4o
KSk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VD
b25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgbV9j
b25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbiht
X3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLQotICAgIG1f
Y29ubmVjdGlvbi0+b3BlbigpOwotICAgIAotICAgIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMubWluaW11bUxpZmV0aW1l
ID0gbWluaW11bUxpZmV0aW1lOwotICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0g
c2h1dGRvd25UaW1lb3V0OwotCi0gICAgcGxhdGZvcm1Jbml0aWFsaXplU2hhcmVkV29ya2VyUHJv
Y2VzcyhwYXJhbWV0ZXJzKTsKLQotICAgIC8vIEluaXRpYWxpemUgdGhlIHNoYXJlZCB3b3JrZXIg
aG9zdCBwcm9jZXNzLgotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29y
a2VyUHJvY2Vzczo6SW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MocGFyYW1ldGVycyksIDAp
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25S
ZXF1ZXN0czsgKytpKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJl
ZFdvcmtlclByb2Nlc3M6OkNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCksIDApOwotICAgIAot
ICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7Ci0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKFdlYkNvbnRleHQ6OmNhbkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvckds
b2JhbENoaWxkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQodHJ1ZSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OmRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNv
bm5lY3Rpb25JZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMuaXNFbXB0eSgpKTsKLQotICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVj
dGlvbiByZXBseS4KLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hh
cmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBv
cnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbHNlCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSX1BST0NFU1MpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9T
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eV9oCi0jZGVmaW5lIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eV9oCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi0jaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0KLS8v
IEZJWE1FOiBUaGlzIGlzIHBsYXRmb3JtIHNwZWNpZmljLgotbmFtZXNwYWNlIENvcmVJUEMgewot
ICAgIGNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgU2hh
cmVkV29ya2VyUHJvY2Vzc01hbmFnZXI7Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3Qg
U2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKLQotY2xhc3MgU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5PiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5PiBjcmVhdGUoU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB+U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KCk7
Ci0KLSAgICAvLyBBc2tzIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3MgdG8gY3JlYXRlIGEgbmV3
IGNvbm5lY3Rpb24gdG8gYSB3ZWIgcHJvY2Vzcy4gVGhlIGNvbm5lY3Rpb24gaWRlbnRpZmllciB3
aWxsIGJlCi0gICAgLy8gZW5jb2RlZCBpbiB0aGUgZ2l2ZW4gYXJndW1lbnQgZW5jb2RlciBhbmQg
c2VudCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uIG9mIHRoZSBnaXZlbiB3ZWIgcHJvY2Vzcy4KLSAg
ICB2b2lkIGdldFNoYXJlZFdvcmtlclByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U2hhcmVkV29ya2VyUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4pOwotICAgIAotICAgIC8vIFRlcm1pbmF0ZXMgdGhlIHNoYXJlZCB3b3JrZXIg
cHJvY2Vzcy4KLSAgICB2b2lkIHRlcm1pbmF0ZSgpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9p
ZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwotI2VuZGlmCi0KLXByaXZhdGU6
Ci0gICAgU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0KLSAgICB2b2lkIHNo
YXJlZFdvcmtlclByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwotCi0gICAgLy8gQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSk7Ci0KLSAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7Ci0KLSAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzCi0gICAgdm9pZCBkaWRSZWNlaXZlU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lk
IGRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQm
KTsKLQotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplU2hhcmVkV29ya2VyUHJvY2VzcyhTaGFy
ZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7Ci0KLSAgICAvLyBUaGUgc2hhcmVk
IHdvcmtlciBob3N0IHByb2Nlc3MgbWFuYWdlci4KLSAgICBTaGFyZWRXb3JrZXJQcm9jZXNzTWFu
YWdlciogbV9zaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjsKLQotICAgIC8vIFRoZSBjb25uZWN0
aW9uIHRvIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KLSAgICBSZWZQdHI8Q29yZUlQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwotCi0gICAgLy8gVGhlIHByb2Nlc3MgbGF1bmNoZXIgZm9y
IHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4KLSAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBt
X3Byb2Nlc3NMYXVuY2hlcjsKLQotICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRTaGFyZWRXb3JrZXJQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7Ci0KLSAgICAvLyBJZiBjcmVhdGVQbHVnaW5Db25u
ZWN0aW9uIGlzIGNhbGxlZCB3aGlsZSB0aGUgcHJvY2VzcyBpcyBzdGlsbCBsYXVuY2hpbmcgd2Un
bGwga2VlcCBjb3VudCBvZiBpdCBhbmQgc2VuZCBhIGJ1bmNoIG9mIHJlcXVlc3RzCi0gICAgLy8g
d2hlbiB0aGUgcHJvY2VzcyBmaW5pc2hlcyBsYXVuY2hpbmcuCi0gICAgdW5zaWduZWQgbV9udW1Q
ZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi0jZW5kaWYgLy8gU2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
aGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2hhcmVkV29ya2Vycy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
Ul9QUk9DRVNTKQotCi1tZXNzYWdlcyAtPiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgewotICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hB
UkVEX1dPUktFUl9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzL21hYy9TaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2Vy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotCi0jaW1wb3J0ICJTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgU2hhcmVkV29y
a2VyUHJvY2Vzc01hbmFnZXI6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBwcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkKQotewotICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3No
YXJlZFdvcmtlclByb2Nlc3Nlcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9jZXNzQ291bnQ7ICsraSkKLSAgICAgICAgbV9zaGFyZWRXb3JrZXJQcm9jZXNzZXNbaV0tPnNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JL
RVJfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJz
L21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1NoYXJlZFdvcmtlcnMvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eU1hYy5tbQkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1NoYXJlZFdvcmtlcnMvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuaCIKLQotI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSX1BST0NFU1MpCi0KLSNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdl
cy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHk6OnNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25F
bmFibGVkKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3M6OlNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQocHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCksIDApOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VS
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNp
bXBvcnQgIldlYkNvbnRleHQuaCIKIAogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIK
LSNpbXBvcnQgIlNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlci5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC0xMDks
OSArMTA4LDYgQEAgc3RhdGljIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpz
aGFyZWQoKS5zZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGNhbkVuYWJsZSk7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUl9QUk9DRVNTKQotICAgIFNoYXJlZFdvcmtlclByb2Nl
c3NNYW5hZ2VyOjpzaGFyZWQoKS5zZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGNhbkVuYWJs
ZSk7Ci0jZW5kaWYKIH0KIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw2IEBA
CiAJCQlkZXBlbmRlbmNpZXMgPSAoCiAJCQkJMUE1MERCM0MxMTBBM0MxOTAwMEQzRkU1IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNERTBBQzExMzI3MjcxMjAwMTI1OUZCIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkJRTEzQThBNEQxNjI4N0E1QjAwMzkyOTI5IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJNTEwQ0M4NDgxNjEzQzg1MzAwRDAzRUQzIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBOEQ0NjgxNUJDRTBENjAwOURDMUYxIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJQkNBRTlERkQxNjBDMEFCMDAwQTMzMjE3IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8sCkBAIC02MjEsOCArNjIwLDYgQEAKIAkJOTNGQzY3QkUxMkQz
Q0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2Rl
ckFkYXB0ZXIuaCAqLzsgfTsKIAkJOTNGQzY3QkYxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJB
ZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi87IH07CiAJ
CTkzRkM2N0MwMTJEM0NDRjIwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3QTAxMkQzQ0M3NDAwQTYw
NjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi87IH07Ci0JCTlGNEY1OTQyMTY0OEI0MDcwMDQ5M0I3
RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNEY1OTQxMTY0OEI0MDcwMDQ5M0I3RSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKLQkJOUY0RjU5NDQxNjQ4QjY3
RjAwNDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNEY1OTQzMTY0OEI2N0YwMDQ5M0I3
RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNYWMubW0gKi87IH07CiAJCTlGNTRGODhGMTY0
ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tICovOyB9OwogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1
Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01h
bmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0g
Ki87IH07CkBAIC04MjMsNyArODIwLDYgQEAKIAkJQkM1RDI0QTExNkNDM0I5RTAwN0Q1NDYxIC8q
IENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5t
bSAqLzsgfTsKIAkJQkM1RDI0QTIxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5
RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJQkM1RDI0
QTMxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEg
LyogQ2hpbGRQcm9jZXNzTWFpbi5tbSAqLzsgfTsKLQkJQkM1RDI0QTQxNkNDM0I5RTAwN0Q1NDYx
IC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzVEMjQ5RjE2Q0MzQjlFMDA3RDU0NjEgLyogQ2hpbGRQcm9jZXNzTWFp
bi5tbSAqLzsgfTsKIAkJQkM1RDI0QTcxNkNDM0Q1RDAwN0Q1NDYxIC8qIFhQQ1NlcnZpY2VNYWlu
LkRldmVsb3BtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM4MjgzOTcxNkI0ODBGNjAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLkRldmVsb3Bt
ZW50Lm1tICovOyB9OwogCQlCQzVEMjRBODE2Q0MzRDVFMDA3RDU0NjEgLyogWFBDU2VydmljZU1h
aW4uRGV2ZWxvcG1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzgyODM5NzE2QjQ4MEY2MDBBMjc4RkUgLyogWFBDU2VydmljZU1haW4uRGV2ZWxv
cG1lbnQubW0gKi87IH07CiAJCUJDNUQyNEFBMTZDQzNENUYwMDdENTQ2MSAvKiBYUENTZXJ2aWNl
TWFpbi5EZXZlbG9wbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDODI4Mzk3MTZCNDgwRjYwMEEyNzhGRSAvKiBYUENTZXJ2aWNlTWFpbi5EZXZl
bG9wbWVudC5tbSAqLzsgfTsKQEAgLTgzNCw3ICs4MzAsNiBAQAogCQlCQzVEMjRCMTE2Q0MzRjM2
MDA3RDU0NjEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkxNzYzMDA4RDI2RkMgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUJDNUQyNEIzMTZDQzNGM0YwMDdENTQ2MSAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLzsgfTsKIAkJQkM1RDI0QjUxNkNDM0Y0NjAwN0Q1NDYxIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMzREU0NjgxNUE5MTc2MzAwOEQyNkZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9Owot
CQlCQzVEMjRCNjE2Q0MzRjREMDA3RDU0NjEgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkx
NzYzMDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUJDNUQyNEMyMTZD
RDcwNkQwMDdENTQ2MSAvKiBXS0RPTU5vZGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjRDMTE2Q0Q3MDZEMDA3RDU0NjEgLyogV0tE
T01Ob2RlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDNUQyNEM1MTZDRDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0QzQx
NkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM1RDI0QzcxNkNENzNDNTAwN0Q1NDYx
IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVEMjRDNjE2Q0Q3M0M1MDA3RDU0NjEgLyogV0tCdW5k
bGVSYW5nZUhhbmRsZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtODcyLDcgKzg2Nyw2IEBACiAJCUJDODI4MzdCMTZCMzZBNEYwMEEy
NzhGRSAvKiBDaGlsZFByb2Nlc3NFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjgzNzkxNkIzNkE0RjAwQTI3OEZFIC8qIENoaWxk
UHJvY2Vzc0VudHJ5UG9pbnQubW0gKi87IH07CiAJCUJDODI4Mzg0MTZCNDVEQTUwMEEyNzhGRSAv
KiBOZXR3b3JrUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzgyODM4MTE2QjQ1REE1MDBBMjc4RkUgLyogTmV0d29ya1Byb2Nlc3NN
YWluLm1tICovOyB9OwogCQlCQzgyODM4QzE2QjQ1RjA3MDBBMjc4RkUgLyogUGx1Z2luUHJvY2Vz
c01haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzgyODM4QTE2QjQ1RUYyMDBBMjc4RkUgLyogUGx1Z2luUHJvY2Vzc01haW4ubW0gKi87IH07Ci0J
CUJDODI4Mzk1MTZCNDYwODMwMEEyNzhGRSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI4MzkzMTZC
NDYwN0IwMEEyNzhGRSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5tbSAqLzsgfTsKIAkJQkM4
MjgzOTkxNkI0OERDMDAwQTI3OEZFIC8qIFdlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI4Mzk4MTZC
NDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0gKi87IH07CiAJ
CUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyODNBODE2
QjRCRDkxMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tICovOyB9OwogCQlC
QzgyODNEQTE2QjREQjkzMDBBMjc4RkUgLyogV2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4REMyRUY1QjA0ODZBNjk0MDA5
OEIyMTYgLyogV2ViS2l0Mi5mcmFtZXdvcmsgKi87IH07CkBAIC05MzksNyArOTMzLDYgQEAKIAkJ
QkNBRjM2MUYxNkNBMjhDRDAwRDRFOUZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzREU0NjgxNUE5MTc2
MzAwOEQyNkZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlCQ0FGMzYyMDE2Q0Ey
OEQ2MDBENEU5RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkxNzYzMDA4RDI2RkMgLyog
Rm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUJDQUYzNjIyMTZDQTI5MkIwMEQ0RTlGQyAv
KiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayAqLzsgfTsKLQkJQkNBRjM2MjYxNkNBMkE0RTAwRDRFOUZDIC8qIFdlYktpdC5pY25z
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMzRkQ4
OTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgKi87IH07CiAJCUJDQjBBRDMzMTIyRjI4
NTgwMEIxMzQxRSAvKiBNdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDODA0OUQxMjJGMEQ2QjAwMTAzNTI5IC8qIE11dGFibGVB
cnJheS5jcHAgKi87IH07CiAJCUJDQjBBRDM0MTIyRjI4NTgwMEIxMzQxRSAvKiBNdXRhYmxlQXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzgw
NDlFMTIyRjBENkIwMDEwMzUyOSAvKiBNdXRhYmxlQXJyYXkuaCAqLzsgfTsKIAkJQkNCMEFFRTkx
MjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IwQUVFNzEyMkY1M0UzMDBCMTM0MUUgLyog
TXV0YWJsZURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTExMTQsNyArMTEwNyw2IEBACiAJCUQzQjk0
ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFy
Y2hQb3B1cE1lbnUuaCAqLzsgfTsKIAkJREY1OEM2MzYxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2
ZVdlYldoZWVsRXZlbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERjU4QzYzNTEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSAqLzsgfTsKLQkJRTExRDM1QUQxNkI2M0QxNDAwNkQyM0Q3IC8qIGNvbS5hcHBsZS5X
ZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQTQxNjI4ODQ2NDAwMzlFQ0RBIC8qIGNvbS5hcHBs
ZS5XZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYiAqLzsgfTsKIAkJRTExRDM1QUUxNkI2M0Qx
QjAwNkQyM0Q3IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk2N0UzNzE1MEFCNUUyMDBDNzMxNjkgLyog
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi87IH07CiAJCUUxMzNGRDhBMTQyM0REN0YwMEZDN0JG
QiAvKiBXZWJLaXQuaWNucyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEzM0ZEODkxNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zICovOyB9Owog
CQlFMTM0RjAxNzEyRUE1RDMzMDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzRGMDE1MTJFQTVEMTEwMDRF
QzU4RCAvKiBXS1ByaW50aW5nVmlldy5oICovOyB9OwpAQCAtMTE2MCwxOCArMTE1Miw2IEBACiAJ
CUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1OTYz
NEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1MkM0MTZB
RTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMjE2QUUw
NjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tICovOyB9
OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMuaCAqLzsgfTsKLQkJRTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclBy
b2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAq
LzsgfTsKLQkJRTFFREZEQTkxNjI4ODZBQzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZE
OUUxNjI4ODIxMDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3BwICovOyB9OwotCQlF
MUVERkRBRTE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFFREZEQUQxNjI4ODkzQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCAqLzsgfTsKLQkJRTFFREZEQjAxNjI4ODk4MjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovOyB9OwotCQlFMUVERkRCNTE2
MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCMTE2
MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07Ci0JCUUxRURGREI2MTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRURGREIyMTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMu
aCAqLzsgfTsKLQkJRTFFREZEQjcxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCMzE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJRTFFREZEQjgxNjI4QUQ3
MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRCNDE2MjhBRDczMDAz
OUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJRTFF
REZEQkExNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEQjkxNjI4QjA0
NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oICovOyB9OwotCQlFMUVERkUx
MjE2MjhDRkIyMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZFMTExNjI4Q0ZC
MjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCAqLzsgfTsKLQkJRTFF
REZFMTMxNjI4Q0ZCRDAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkUwRjE2MjhD
RjRFMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXIuaCAqLzsgfTsKLQkJRTFF
REZFMTUxNjI4REQ3QTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkUxNDE2MjhE
RDdBMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsKIAkJRTFF
RTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMx
MUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9
OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwICovOyB9OwogCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdl
T3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEyMkYwRkYxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMyMSwyMCArMTMw
MSw2IEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDUxMDAzMUVBMTM3OUNBQ0IwMEM4REZF
NDsKIAkJCXJlbW90ZUluZm8gPSBTZWNJdGVtU2hpbTsKIAkJfTsKLQkJRTEzQThBNEMxNjI4N0E1
QjAwMzkyOTI5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IEUxM0E4QTJCMTYyODc5QUMwMDM5MjkyOTsKLQkJCXJlbW90ZUlu
Zm8gPSBTaGFyZWRXb3JrZXJQcm9jZXNzOwotCQl9OwotCQlFMTNBOEE0RTE2Mjg3QTY2MDAzOTI5
MjkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gOERDMkVGNEYwNDg2QTY5NDAwOThCMjE2OwotCQkJcmVtb3RlSW5mbyA9IFdl
YktpdDI7Ci0JCX07CiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0yMDY0LDggKzIw
MzAsNiBAQAogCQk5M0ZDNjc5RTEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlckFkYXB0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29k
ZXJBZGFwdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuY29k
ZXJBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGQzY3QTAxMkQz
Q0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVuY29kZXJBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTlGNEY1OTQxMTY0OEI0MDcwMDQ5M0I3RSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFdvcmtl
clByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5RjRG
NTk0MzE2NDhCNjdGMDA0OTNCN0UgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4
RTg3MDA3REY4MUEgLyogQ2hpbGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQ2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFn
ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Q
cm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYz
OTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRo
ID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzIzLDggKzIyODcsNiBAQAogCQlCQzgyODM4MTE2QjQ1REE1MDBBMjc4RkUgLyogTmV0
d29ya1Byb2Nlc3NNYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3NNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzgyODM4QTE2QjQ1RUYyMDBBMjc4RkUgLyogUGx1Z2luUHJvY2Vzc01haW4ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM4MjgzOEQxNkI0NUZBNjAwQTI3OEZFIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsg
cGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDODI4Mzkx
MTZCNDYwMEQwMEEyNzhGRSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzgyODM5MzE2QjQ2MDdCMDBBMjc4RkUg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4
MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gWFBDU2VydmljZU1haW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDODI4Mzk3MTZCNDgwRjYwMEEyNzhGRSAvKiBYUENTZXJ2aWNlTWFpbi5EZXZlbG9wbWVudC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFhQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgyODM5ODE2QjQ4REMwMDBBMjc4RkUgLyog
V2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjU5Nyw4ICsyNTU5LDYgQEAKIAkJRTEzM0ZEODkxNDIzREQ3
RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuaWNuczsgbmFtZSA9IFdlYktpdC5pY25zOyBwYXRoID0g
UmVzb3VyY2VzL1dlYktpdC5pY25zOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTM0
RjAxNTEyRUE1RDExMDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tQcmludGluZ1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEzNEYwMTkxMkVBNUQ5OTAwNEVDNThEIC8qIFdLUHJpbnRpbmdWaWV3Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQcmludGluZ1ZpZXcubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxM0E4QTJDMTYyODc5QUMwMDM5MjkyOSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzLmFwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5hcHBsaWNhdGlvbjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5hcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0JCUUxM0E4QTRCMTYyODdBMUIwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNEE5NTQ3MTZFMDE2QTQwMDY4REU4
MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNEE5NTQ4MTZFMDE2QTQwMDY4
REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8q
IENoaWxkUHJvY2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENoaWxkUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2NDEsMjIgKzI2MDEsNiBAQAogCQlFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyogV2ViQ29u
dGVudFByb2Nlc3MueGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS54aWI7IG5hbWUgPSBXZWJDb250ZW50UHJv
Y2Vzcy54aWI7IHBhdGggPSBSZXNvdXJjZXMvV2ViQ29udGVudFByb2Nlc3MueGliOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUU1NTJDMjE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJv
eEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclBy
b2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFFREZEOUUxNjI4ODIxMDAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUxRURGREEwMTYyODgzMDMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nl
c3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRURGREEyMTYy
ODgzOEMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFFREZEQTQxNjI4ODQ2NDAwMzlFQ0RBIC8qIGNv
bS5hcHBsZS5XZWJLaXQuU2hhcmVkV29ya2VyUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBjb20uYXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2I7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxRURGREFCMTYyODg3QjAwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUVERkRBRDE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUUxRURGREFGMTYyODg5ODEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFFREZEQjIxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTFFREZEQjMxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMUVERkRCNDE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRTFFREZEQjkxNjI4QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFFREZFMEYxNjI4Q0Y0
RTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRURGRTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUxRURGRTE0MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUz
REMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUzRTYxMUY4Q0ZGQjAw
Q0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4MzE1RjRCRTZCMDBDM0E4
MEUgLyogV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA1LDE0ICsyNzQ5LDYgQEAKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKLQkJRTEzQThBMjkx
NjI4NzlBQzAwMzkyOTI5IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxl
cyA9ICgKLQkJCQlCQzVEMjRCNjE2Q0MzRjREMDA3RDU0NjEgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKLQkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KQEAgLTI4MzAsNyArMjc2Niw2
IEBACiAJCQkJQkNERTA5NDIxMzI3MjQ5NjAwMTI1OUZCIC8qIFBsdWdpblByb2Nlc3MuYXBwICov
LAogCQkJCTFBQzI1RkIwMTJBNDhFQTcwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5keWxp
YiAqLywKIAkJCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogU2VjSXRlbVNoaW0uZHlsaWIg
Ki8sCi0JCQkJRTEzQThBMkMxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3Mu
YXBwICovLAogCQkJCThEQzJFRjVCMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29y
ayAqLywKIAkJCQkxQTUwREIxRTExMEEzQkRDMDAwRDNGRTUgLyogV2ViUHJvY2Vzcy5hcHAgKi8s
CiAJCQkJQ0RDMzgzMDYxNzIxMTc5OTAwOEEyRkMzIC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICov
LApAQCAtMjg1Myw3ICsyNzg4LDYgQEAKIAkJCQlCQzAzMkQ1QzEwRjQzNkQ1MDA1OEMxNUEgLyog
V2ViUHJvY2VzcyAqLywKIAkJCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3MgKi8sCiAJCQkJMUEwRUM2QjAxMjRCQkQzNjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3Mg
Ki8sCi0JCQkJRTEzQThBMzUxNjI4NzlBQzAwMzkyOTI5IC8qIFNoYXJlZFdvcmtlclByb2Nlc3Mg
Ki8sCiAJCQkJQzBDRTcyOUQxMjQ3RTcxRDAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQkwODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLAogCQkJCUMwQ0U3
MzM1MTI0N0Y3MEUwMEJDMEVDNCAvKiBTY3JpcHRzICovLApAQCAtMzAwNSw3ICsyOTM5LDYgQEAK
IAkJCQlCQzgyODNGNDE2QjRGQzUzMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZS42NC54Y2NvbmZp
ZyAqLywKIAkJCQlCQ0JFQ0RDMjE2QjVDRTJBMDAwNDdBMUEgLyogUGx1Z2luU2VydmljZS5EZXZl
bG9wbWVudC54Y2NvbmZpZyAqLywKIAkJCQk1RDQ0MkE1NTE2RDU4NTY3MDBBQzMzMzEgLyogUGx1
Z2luU2VydmljZS5lbnRpdGxlbWVudHMgKi8sCi0JCQkJRTEzQThBNEIxNjI4N0ExQjAwMzkyOTI5
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi8sCiAJCQkJNTE4M0IzOTMxMzc5Rjg1
QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8sCiAJCQkJMUE0Rjk3NkUxMDBFN0I2NjAwNjM3
QTE4IC8qIFZlcnNpb24ueGNjb25maWcgKi8sCiAJCQkJNURBRDcyOTQxMTZGRjcwQjAwRUU1Mzk2
IC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhjY29uZmlnICovLApAQCAtMzIxMSw4ICszMTQ0LDYgQEAK
IAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8sCiAJ
CQkJNTEyMTc0NUUxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLywK
IAkJCQk1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCAqLywK
LQkJCQlFMUVERkRBRjE2Mjg4OTgxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAgKi8sCi0JCQkJRTFFREZEQUQxNjI4ODkzQjAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk1MjcyQjI4ODE0
MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICovLAogCQkJCTUyNzJCMjg5MTQw
Njk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovLAogCQkJCTFBNUU0REEzMTJEM0JE
M0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCkBAIC0zNzU1LDE1ICszNjg2LDYg
QEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk5
RjRGNTk0MDE2NDhCNDA3MDA0OTNCN0UgLyogbWFjICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5RjRGNTk0MTE2NDhCNDA3MDA0OTNCN0UgLyogU2hhcmVk
V29ya2VyUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8sCi0JCQkJOUY0RjU5NDMxNjQ4QjY3RjAwNDkz
QjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSAqLywKLQkJCSk7Ci0JCQlwYXRo
ID0gbWFjOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQkMwMTdEMTAxNjI2
MEZGRDAwNzA1NEY1IC8qIERPTSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0zOTE5LDcgKzM4NDEsNiBAQAogCQkJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VE
MyAvKiBOZXR3b3JrICovLAogCQkJCTMxQTJFQzQwMTQ4OTk3MzcwMDgxMEQ3MSAvKiBOb3RpZmlj
YXRpb25zICovLAogCQkJCTFBRUZDQzA1MTFEMDFGMzQwMDgyMTlEMyAvKiBQbHVnaW5zICovLAot
CQkJCUUxRURGREFBMTYyODg3OEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJzICovLAogCQkJCTFB
NDRCOTU4MTZCNzNGOEMwMEI3QkJEOCAvKiBTdG9yYWdlICovLAogCQkJCTFBNjQyNTY3MTJERTQy
RUMwMENBQUUyQyAvKiBCYWNraW5nU3RvcmUuY3BwICovLAogCQkJCTFBNjQyNTY2MTJERTQyRUMw
MENBQUUyQyAvKiBCYWNraW5nU3RvcmUuaCAqLywKQEAgLTQ1MzIsMjQgKzQ0NTMsNiBAQAogCQkJ
cGF0aCA9IG1hYy9MZWdhY3lQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKLQkJQkM4MjgzOEUxNkI0NjAwRDAwQTI3OEZFIC8qIEVudHJ5UG9pbnQgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUJDODI4MzkwMTZCNDYwMEQwMEEy
NzhGRSAvKiBMZWdhY3lQcm9jZXNzICovLAotCQkJKTsKLQkJCXBhdGggPSBFbnRyeVBvaW50Owot
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJQkM4MjgzOTAxNkI0NjAwRDAwQTI3
OEZFIC8qIExlZ2FjeVByb2Nlc3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxk
cmVuID0gKAotCQkJCUJDODI4MzkxMTZCNDYwMEQwMEEyNzhGRSAvKiBJbmZvLnBsaXN0ICovLAot
CQkJCUJDODI4MzkzMTZCNDYwN0IwMEEyNzhGRSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5t
bSAqLywKLQkJCSk7Ci0JCQluYW1lID0gTGVnYWN5UHJvY2VzczsKLQkJCXBhdGggPSBtYWMvTGVn
YWN5UHJvY2VzczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUJDODI4M0Ex
MTZCNEJEOTEwMEEyNzhGRSAvKiBYUENTZXJ2aWNlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ5MDcsMTAgKzQ4MTAsNiBAQAogCQkJCUUxOEU2OTEyMTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJCQkJRTE4RTY5MTMx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2Fn
ZXMuaCAqLywKLQkJCQlFMUVERkRCMTE2MjhBRDczMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJRTFFREZEQjIxNjI4QUQ3MzAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oICovLAotCQkJCUUxRURGREIzMTYyOEFE
NzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAotCQkJCUUxRURGREI0MTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9y
YWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUEzMzRERUMxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLywKIAkJCQkxQUIzMUE5NDE2QkM2
ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAt
NTAwOSwxOCArNDkwOCw2IEBACiAJCQlwYXRoID0gRnVsbFNjcmVlbi9tYWM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OwotCQlFMTNBOEEzNTE2Mjg3OUFDMDAzOTI5MjkgLyogU2hh
cmVkV29ya2VyUHJvY2VzcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJQkM4MjgzOEUxNkI0NjAwRDAwQTI3OEZFIC8qIEVudHJ5UG9pbnQgKi8sCi0JCQkJ
RTFFREZEOUExNjI4N0NGNTAwMzlFQ0RBIC8qIG1hYyAqLywKLQkJCQlFMUVERkQ5RTE2Mjg4MjEw
MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgKi8sCi0JCQkJRTFFREZEOUQxNjI4
N0YxOTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuaCAqLywKLQkJCQlFMUVERkRBMDE2
Mjg4MzAzMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gU2hhcmVkV29ya2VyUHJvY2VzczsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07CiAJCUUxNzA4NzZEMTZENkNBNzIwMEY5OTIyNiAvKiBGaWxlQVBJICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTUwNjgsMjggKzQ5NTUs
NiBAQAogCQkJbmFtZSA9IFBERjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0J
CUUxRURGRDlBMTYyODdDRjUwMDM5RUNEQSAvKiBtYWMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxRURGREE0MTYyODg0NjQwMDM5RUNEQSAvKiBjb20u
YXBwbGUuV2ViS2l0LlNoYXJlZFdvcmtlclByb2Nlc3Muc2IgKi8sCi0JCQkJRTFFREZEQTIxNjI4
ODM4QzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gKi8sCi0JCQkpOwotCQkJ
cGF0aCA9IG1hYzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUUxRURGREFB
MTYyODg3OEUwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJzICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk5RjRGNTk0MDE2NDhCNDA3MDA0OTNCN0UgLyogbWFj
ICovLAotCQkJCUUxRURGRTExMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
TWFuYWdlci5jcHAgKi8sCi0JCQkJRTFFREZFMEYxNjI4Q0Y0RTAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmggKi8sCi0JCQkJRTFFREZFMTQxNjI4REQ3QTAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5jcHAgKi8sCi0JCQkJRTFFREZEQjkxNjI4QjA0NTAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oICovLAotCQkJCUUxRURGREFCMTYy
ODg3QjAwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8s
Ci0JCQkpOwotCQkJcGF0aCA9IFNoYXJlZFdvcmtlcnM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwogCQlGNjM4OTU1QTEzM0JGNTdEMDA4OTQxRDUgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTUzMzQsMTEgKzUxOTksNiBAQAog
CQkJCTFBNjQyMEU1MTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMjE3NDYxMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEJFRDUxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJl
ZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFFREZEQUUxNjI4ODkzQjAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAot
CQkJCUUxRURGRTEzMTYyOENGQkQwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFFREZEQjYxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFFREZEQkExNjI4
QjA0NTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJRTFFREZEQjgxNjI4QUQ3MzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0MDY5ODVEMDA5NkE1RDAg
LyogU3RhdGlzdGljc0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEJERUQzMTZDOThFREQw
MEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMzMw
NkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC01OTQxLDI0ICs1ODAxLDYgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSBDREMzODMwNjE3MjEx
Nzk5MDA4QTJGQzMgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi87CiAJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYyI7CiAJCX07Ci0JCUUxM0E4
QTJCMTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovID0gewotCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEUxM0E4QTRB
MTYyODc5QUMwMDM5MjkyOSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiU2hhcmVkV29ya2VyUHJvY2VzcyIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJ
CQlFMTNBOEEyODE2Mjg3OUFDMDAzOTI5MjkgLyogU291cmNlcyAqLywKLQkJCQlFMTNBOEEyOTE2
Mjg3OUFDMDAzOTI5MjkgLyogRnJhbWV3b3JrcyAqLywKLQkJCQlFMTNBOEEyQTE2Mjg3OUFDMDAz
OTI5MjkgLyogUmVzb3VyY2VzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwot
CQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCUUxM0E4QTRGMTYyODdBNjYwMDM5MjkyOSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5hbWUgPSBTaGFyZWRXb3JrZXJQcm9jZXNz
OwotCQkJcHJvZHVjdE5hbWUgPSBTaGFyZWRXb3JrZXJQcm9jZXNzOwotCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IEUxM0E4QTJDMTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLmFw
cCAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYXBwbGljYXRp
b24iOwotCQl9OwogLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtNTk4OCw3ICs1ODMwLDYgQEAKIAkJCQkxQTUwREIx
RDExMEEzQkRDMDAwRDNGRTUgLyogV2ViUHJvY2VzcyAqLywKIAkJCQlCQ0RFMDkzMzEzMjcyNDk2
MDAxMjU5RkIgLyogUGx1Z2luUHJvY2VzcyAqLywKIAkJCQk1MTBDQzgwRDE2MTNDNzk5MDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3MgKi8sCi0JCQkJRTEzQThBMkIxNjI4NzlBQzAwMzkyOTI5IC8q
IFNoYXJlZFdvcmtlclByb2Nlc3MgKi8sCiAJCQkJQzBDRTcyODUxMjQ3RTY2ODAwQkMwRUM0IC8q
IERlcml2ZWQgU291cmNlcyAqLywKIAkJCQkxQUMyNUZBRjEyQTQ4RUE3MDBCRDI2NzEgLyogUGx1
Z2luUHJvY2Vzc1NoaW0gKi8sCiAJCQkJNTEwMDMxRUExMzc5Q0FDQjAwQzhERkU0IC8qIFNlY0l0
ZW1TaGltICovLApAQCAtNjAyNyw3ICs1ODY4LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlFMTdBRTJDMzE2QjlDNjNBMDAxQzQyRjEgLyog
Y29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJ
RTExRDM1QUQxNkI2M0QxNDAwNkQyM0Q3IC8qIGNvbS5hcHBsZS5XZWJLaXQuU2hhcmVkV29ya2Vy
UHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTExRDM1QUUxNkI2M0QxQjAwNkQyM0Q3
IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0JDOTQ1
RTE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovLAogCQkJ
CTFDQjc1Qzk0MTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmIGluIFJlc291cmNlcyAq
LywKQEAgLTYwOTMsMTQgKzU5MzMsNiBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwotCQlFMTNBOEEyQTE2Mjg3OUFDMDAzOTI5MjkgLyog
UmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQlCQ0FGMzYyNjE2
Q0EyQTRFMDBENEU5RkMgLyogV2ViS2l0LmljbnMgaW4gUmVzb3VyY2VzICovLAotCQkJKTsKLQkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwogLyogRW5kIFBC
WFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjUzNSwxNiArNjM2Nyw2IEBACiAJCQkJQzAxQTI2
MDExMjY2MkYyMTAwQzlFRDU1IC8qIFNoYXJlYWJsZUJpdG1hcENHLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTI0QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVt
b3J5TWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRURGREE5MTYyODg2QUMwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRURGREIwMTYy
ODg5ODIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUUxRURGREE4MTYyODg2OTkwMDM5RUNEQSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM4MjgzOTUxNkI0NjA4MzAw
QTI3OEZFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RTFFREZFMTIxNjI4Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTlGNEY1OTQyMTY0OEI0MDcwMDQ5M0I3RSAvKiBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUxRURGREI1MTYy
OEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOUY0RjU5NDQxNjQ4QjY3RjAw
NDkzQjdFIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAot
CQkJCUUxRURGREI3MTYyOEFENzMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3MkIyOEExNDA2OTg1RDAw
OTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRENUE5
MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUQzMzA2RTE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNjkzMSwxNCArNjc1Myw2IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Ci0JCUUxM0E4QTI4MTYyODc5QUMwMDM5
MjkyOSAvKiBTb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0J
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJQkM1RDI0
QTQxNkNDM0I5RTAwN0Q1NDYxIC8qIENoaWxkUHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLywK
LQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsK
IC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRh
cmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwpAQCAtNzAyNywxNiArNjg0MSw2IEBACiAJCQl0YXJn
ZXQgPSA1MTAwMzFFQTEzNzlDQUNCMDBDOERGRTQgLyogU2VjSXRlbVNoaW0gKi87CiAJCQl0YXJn
ZXRQcm94eSA9IENEQzhGNEQ0MTcyNUY3M0YwMDE2NkY2RSAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CiAJCX07Ci0JCUUxM0E4QTREMTYyODdBNUIwMDM5MjkyOSAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9
IEUxM0E4QTJCMTYyODc5QUMwMDM5MjkyOSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzICovOwotCQkJ
dGFyZ2V0UHJveHkgPSBFMTNBOEE0QzE2Mjg3QTVCMDAzOTI5MjkgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovOwotCQl9OwotCQlFMTNBOEE0RjE2Mjg3QTY2MDAzOTI5MjkgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJn
ZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0MiAqLzsKLQkJCXRhcmdldFBy
b3h5ID0gRTEzQThBNEUxNjI4N0E2NjAwMzkyOTI5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKLQkJfTsKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KQEAgLTc0NTMsMjcgKzcyNTcsNiBAQAogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQlFMTNBOEE0NzE2Mjg3OUFDMDAzOTI5
MjkgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIxNjI4N0ExQjAwMzkyOTI5IC8qIFNo
YXJlZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
fTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJRTEzQThBNDgxNjI4NzlBQzAwMzkyOTI5IC8q
IFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTEzQThBNEIxNjI4N0ExQjAwMzkyOTI5IC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3MueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJfTsK
LQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQlFMTNBOEE0OTE2Mjg3OUFDMDAzOTI5MjkgLyog
UHJvZHVjdGlvbiAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBFMTNBOEE0QjE2Mjg3QTFCMDAzOTI5MjkgLyogU2hh
cmVkV29ya2VyUHJvY2Vzcy54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQl9
OwotCQkJbmFtZSA9IFByb2R1Y3Rpb247Ci0JCX07CiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
QEAgLTc2NDcsMTYgKzc0MzAsNiBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKLQkJ
RTEzQThBNEExNjI4NzlBQzAwMzkyOTI5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJTaGFyZWRXb3JrZXJQcm9jZXNzIiAqLyA9IHsKLQkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCUUxM0E4
QTQ3MTYyODc5QUMwMDM5MjkyOSAvKiBEZWJ1ZyAqLywKLQkJCQlFMTNBOEE0ODE2Mjg3OUFDMDAz
OTI5MjkgLyogUmVsZWFzZSAqLywKLQkJCQlFMTNBOEE0OTE2Mjg3OUFDMDAzOTI5MjkgLyogUHJv
ZHVjdGlvbiAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwotCQl9OwogLyogRW5k
IFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwogCX07CiAJcm9vdE9iamVjdCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIFBsdWdpblN0cmF0ZWd5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmMKIAogU2hhcmVkV29ya2VyU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlU2hhcmVkV29ya2VyU3RyYXRlZ3koKQogewotICAgIHJldHVybiB0
aGlzOworICAgIHJldHVybiAwOwogfQogCiBTdG9yYWdlU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKQEAgLTMyNiwxOCArMzI2LDYgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1ZwogfQogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCi0vLyBTaGFyZWRXb3JrZXJTdHJhdGVneS4KLQotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzQXZhaWxhYmxlKCkgY29uc3QKLXsKLSAgICAvLyBT
aGFyZWQgd29ya2VycyBkbyBub3Qgd29yayBhY3Jvc3MgbXVsdGlwbGUgcHJvY2Vzc2VzLCBhbmQg
dXNpbmcgbmV0d29yayBwcm9jZXNzIGlzIHRpZWQgdG8gbXVsdGlwbGUgc2Vjb25kYXJ5IHByb2Nl
c3MgbW9kZWwuCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICByZXR1cm4gIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpOwotI2Vsc2UKLSAgICByZXR1cm4g
dHJ1ZTsKLSNlbmRpZgotfQotCiAvLyBTdG9yYWdlU3RyYXRlZ3kKIAogUGFzc1JlZlB0cjxTdG9y
YWdlTmFtZXNwYWNlPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsU3RvcmFnZU5hbWVzcGFj
ZShQYWdlR3JvdXAqIHBhZ2VHcm91cCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTMgKzMyLDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luU3RyYXRlZ3kuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclN0cmF0ZWd5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdp
ZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRh
dGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0ZWd5LCBwcml2YXRlIFdlYkNv
cmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBs
dWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBX
ZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7CiAgICAgCkBAIC04MSw5ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFBs
dWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiYpIE9WRVJSSURFOwogCi0gICAgLy8gV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3kuCi0g
ICAgdmlydHVhbCBib29sIGlzQXZhaWxhYmxlKCkgY29uc3QgT1ZFUlJJREU7Ci0KICAgICAvLyBX
ZWJDb3JlOjpTdG9yYWdlU3RyYXRlZ3kuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGxvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlR3Jv
dXAqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZT4gdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VHcm91
cCosIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNTYyNTUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxNTcsMTIgKzQxNTcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBXZWJQYWdl
OjpjdXJyZW50U2VsZWN0CiAKIHZvaWQgV2ViUGFnZTo6cmVwb3J0VXNlZEZlYXR1cmVzKCkKIHsK
LSAgICAvLyBGSVhNRTogRmVhdHVyZSBuYW1lcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZC4KLSAg
ICBjb25zdCBCaXRWZWN0b3IqIGZlYXR1cmVzID0gbV9wYWdlLT5mZWF0dXJlT2JzZXJ2ZXIoKS0+
YWNjdW11bGF0ZWRGZWF0dXJlQml0cygpOwogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmVhdHVy
ZXM7Ci0gICAgaWYgKGZlYXR1cmVzICYmIGZlYXR1cmVzLT5xdWlja0dldChGZWF0dXJlT2JzZXJ2
ZXI6OlNoYXJlZFdvcmtlclN0YXJ0KSkKLSAgICAgICAgbmFtZWRGZWF0dXJlcy5hcHBlbmQoIlNo
YXJlZFdvcmtlciIpOwotCiAgICAgbV9sb2FkZXJDbGllbnQuZmVhdHVyZXNVc2VkSW5QYWdlKHRo
aXMsIG5hbWVkRmVhdHVyZXMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0
Mi5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgko
cmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTQxMDAsOCArNDEwMCw2IEBAIF9fWk5LNldlYktpdDEwV2ViQ29udGV4
dDE4dXNlc05ldHdvcmtQcm8KIF9fWk42V2ViS2l0MTlOZXR3b3JrUHJvY2Vzc1Byb3h5MjhzZXRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkRWIKIF9fWk42V2ViS2l0TDUxdXBkYXRlUHJvY2Vzc1N1
cHByZXNzaW9uU3RhdGVPZkdsb2JhbENoaWxkUHJvY2Vzc2VzRXYKIF9fWk42V2ViS2l0MjBQbHVn
aW5Qcm9jZXNzTWFuYWdlcjI4c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEViCi1fX1pONldl
YktpdDI2U2hhcmVkV29ya2VyUHJvY2Vzc01hbmFnZXI2c2hhcmVkRXYKLV9fWk42V2ViS2l0MjZT
aGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlcjI4c2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEVi
CiBfX1pON0NvcmVJUEMxMENvbm5lY3Rpb240c2VuZElOOE1lc3NhZ2VzMTROZXR3b3JrUHJvY2Vz
czI4U2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZEVFRWJSS1RfeWoKIF9fWk43Q29yZUlQQzEw
Q29ubmVjdGlvbjRzZW5kSU44TWVzc2FnZXMxNVdlYlByb2Nlc3NQcm94eTI0RGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0RUVFYlJLVF95agogX19aTjZXZWJLaXQxMFBsdWdpblZpZXcxMnNjcmlwdE9i
amVjdEVQTjNKU0MxNEpTR2xvYmFsT2JqZWN0RQo=
</data>
<flag name="review"
          id="234568"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>