<?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>38471</bug_id>
          
          <creation_ts>2010-05-03 10:16:55 -0700</creation_ts>
          <short_desc>[WebKit2] Add generic callback mechanism</short_desc>
          <delta_ts>2010-05-03 10:32:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220156</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-05-03 10:16:55 -0700</bug_when>
    <thetext>We should have a generic callback mechanism so we don&apos;t have to write all the boilerplate code seen in RenderTreeExternalRepresentationCallback and ScriptReturnValueCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220157</commentid>
    <comment_count>1</comment_count>
      <attachid>54936</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-05-03 10:18:24 -0700</bug_when>
    <thetext>Created attachment 54936
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220160</commentid>
    <comment_count>2</comment_count>
      <attachid>54936</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-03 10:23:30 -0700</bug_when>
    <thetext>Comment on attachment 54936
patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220161</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 10:24:24 -0700</bug_when>
    <thetext>Attachment 54936 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/C/WKAPICast.h:50:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:51:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:52:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:53:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:54:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:55:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:56:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:57:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:58:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:61:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:62:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:63:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:64:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:65:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:66:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:67:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:68:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKPage.cpp:151:  WKPageRunJavaScriptInMainFrame_b is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/UIProcess/API/C/WKPage.cpp:176:  WKPageRenderTreeExternalRepresentation_b is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 19 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220166</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-05-03 10:28:34 -0700</bug_when>
    <thetext>Fixed in r58684.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220169</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-03 10:32:37 -0700</bug_when>
    <thetext>Are these style complaint false positives?  Should we exempt WebKit2/UIProcess/API/C from our C++ style guide?  (Although WebKit2/UIProcess/API/C/WKAPICast.h looks like C++ and not C...)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54936</attachid>
            <date>2010-05-03 10:18:24 -0700</date>
            <delta_ts>2010-05-03 10:23:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>callback.diff</filename>
            <type>text/plain</type>
            <size>40993</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODYzOCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDUtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODQ3MQorICAgICAgICBB
ZGQgZ2VuZXJpYyBjYWxsYmFjayBtZWNoYW5pc20KKworICAgICAgICBBZGRlZCBHZW5lcmljQ2Fs
bGJhY2sgY2xhc3MgcmVwbGFjaW5nIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2Fs
bGJhY2sKKyAgICAgICAgYW5kIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suCisgICAgICAgIAor
ICAgICAgICBBbHNvLAorICAgICAgICAtIFN0YW5kYXJkaXplIEMgQVBJIGNhbGxiYWNrcyB0byB0
YWtlIHRoZSBjb250ZXh0IGxhc3QuCisgICAgICAgIC0gU3RhbmRhcmRpemUgQyBBUEkgY2FsbGJh
Y2tzIHRvIG5vdCBoYXZlIHRoZSBfZiBzdWZmaXggKG5vdyB0aGUgYmxvY2sKKyAgICAgICAgICB2
YXJpYW50cyBoYXZlIGEgX2Igc3VmZml4KS4KKyAgICAgICAgLSBSZS13cml0ZSB0b1dLIGFuZCB0
b1JlZiBtZXRob2RzIGFzIGEgc2V0IG9mIHRlbXBsYXRlIGZ1bmN0aW9ucyB1c2luZworICAgICAg
ICAgIHRoZSBnZW5lcmljIEFQSS0+aW1wbGVtZW50YXRpb24gbWFwcGluZyBpbmZvcm1hdGlvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSk6CisgICAgICAgIChjYWxsUnVuSmF2YVNjcmlwdEJsb2NrQW5kUmVsZWFzZSk6Cisg
ICAgICAgIChkaXNwb3NlUnVuSmF2YVNjcmlwdEJsb2NrKToKKyAgICAgICAgKFdLUGFnZVJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZV9iKToKKyAgICAgICAgKFdLUGFnZVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uX2IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9HZW5lcmljQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxs
YmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJpY0NhbGxiYWNrOjp+R2VuZXJp
Y0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6R2VuZXJpY0NhbGxiYWNrOjpwZXJmb3JtQ2Fs
bGJhY2tXaXRoUmV0dXJuVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNhbGxiYWNr
SUQpOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmdlbmVyYXRlQ2FsbGJhY2tJ
RCk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxsYmFjazo6R2VuZXJpY0NhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxs
YmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0wNC0z
MCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQu
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljQ2FsbGJhY2tfaAorI2RlZmluZSBH
ZW5lcmljQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQVBJUmV0dXJuVmFsdWVUeXBlLCB0eXBlbmFt
ZSBJbnRlcm5hbFJldHVyblZhbHVlVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPEFQSVJldHVy
blZhbHVlVHlwZT46OkltcGxUeXBlPgorY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIFJl
ZkNvdW50ZWQ8R2VuZXJpY0NhbGxiYWNrPEFQSVJldHVyblZhbHVlVHlwZSwgSW50ZXJuYWxSZXR1
cm5WYWx1ZVR5cGU+ID4geworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoKkNhbGxiYWNrRnVu
Y3Rpb24pKEFQSVJldHVyblZhbHVlVHlwZSwgdm9pZCopOworICAgIHR5cGVkZWYgdm9pZCAoKkNh
bGxiYWNrRGlzcG9zZUZ1bmN0aW9uKSh2b2lkKik7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
ZW5lcmljQ2FsbGJhY2s+IGNyZWF0ZSh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0aW9uIGNh
bGxiYWNrLCBDYWxsYmFja0Rpc3Bvc2VGdW5jdGlvbiBkaXNwb3NlQ2FsbGJhY2spCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNDYWxsYmFjayhjb250ZXh0LCBjYWxs
YmFjaywgZGlzcG9zZUNhbGxiYWNrKSk7CisgICAgfQorCisgICAgfkdlbmVyaWNDYWxsYmFjaygp
CisgICAgeworICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOworICAgIH0KKworICAgIHZvaWQg
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEludGVybmFsUmV0dXJuVmFsdWVUeXBlIHJl
dHVyblZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOworCisgICAgICAg
IG1fY2FsbGJhY2sodG9SZWYocmV0dXJuVmFsdWUpLCBtX2NvbnRleHQpOworCisgICAgICAgIG1f
Y2FsbGJhY2sgPSAwOworICAgICAgICBtX2Rpc3Bvc2VDYWxsYmFjayA9IDA7CisgICAgfQorICAg
IAorICAgIHZvaWQgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9jYWxsYmFj
ayk7CisKKyAgICAgICAgbV9kaXNwb3NlQ2FsbGJhY2sobV9jb250ZXh0KTsKKworICAgICAgICBt
X2NhbGxiYWNrID0gMDsKKyAgICAgICAgbV9kaXNwb3NlQ2FsbGJhY2sgPSAwOworICAgIH0KKwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0K
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDYWxsYmFja0lEKCkKKyAg
ICB7CisgICAgICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxsYmFja0lEID0gMTsKKyAgICAg
ICAgcmV0dXJuIHVuaXF1ZUNhbGxiYWNrSUQrKzsKKyAgICB9CisKKyAgICBHZW5lcmljQ2FsbGJh
Y2sodm9pZCogY29udGV4dCwgQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaywgQ2FsbGJhY2tEaXNw
b3NlRnVuY3Rpb24gZGlzcG9zZUNhbGxiYWNrKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQorICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV9kaXNwb3NlQ2Fs
bGJhY2soZGlzcG9zZUNhbGxiYWNrKQorICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNh
bGxiYWNrSUQoKSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCogbV9jb250ZXh0OworICAgIENh
bGxiYWNrRnVuY3Rpb24gbV9jYWxsYmFjazsKKyAgICBDYWxsYmFja0Rpc3Bvc2VGdW5jdGlvbiBt
X2Rpc3Bvc2VDYWxsYmFjazsKKyAgICB1aW50NjRfdCBtX2NhbGxiYWNrSUQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEdlbmVyaWNDYWxsYmFja19oCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9SZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gNTg2MzUpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaCIKLQotI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQotewotICAg
IHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxsYmFja0lEID0gMTsKLSAgICByZXR1cm4gdW5pcXVl
Q2FsbGJhY2tJRCsrOwotfQotCi1SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxi
YWNrOjpSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrKHZvaWQqIGNvbnRl
eHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJh
Y2ssIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9u
IGRpc3Bvc2VDYWxsYmFjaykKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9jYWxs
YmFjayhjYWxsYmFjaykKLSAgICAsIG1fZGlzcG9zZUNhbGxiYWNrKGRpc3Bvc2VDYWxsYmFjaykK
LSAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkKLXsKLX0KLQotUmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6flJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2soKQotewotICAgIEFTU0VSVCghbV9jYWxsYmFjayk7Ci19Ci0K
LXZvaWQgUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmV0dXJuVmFsdWUp
Ci17Ci0gICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgbV9jYWxsYmFjayh0b1JlZihyZXR1
cm5WYWx1ZS5pbXBsKCkpLCBtX2NvbnRleHQpOwotCi0gICAgbV9jYWxsYmFjayA9IDA7Ci0gICAg
bV9kaXNwb3NlQ2FsbGJhY2sgPSAwOwotfQotCi12b2lkIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uQ2FsbGJhY2s6OmludmFsaWRhdGUoKQotewotICAgIEFTU0VSVChtX2NhbGxiYWNr
KTsKLQotICAgIG1fZGlzcG9zZUNhbGxiYWNrKG1fY29udGV4dCk7Ci0KLSAgICBtX2NhbGxiYWNr
ID0gMDsKLSAgICBtX2Rpc3Bvc2VDYWxsYmFjayA9IDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1JlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gNTg2MzUpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja19oCi0jZGVmaW5lIFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tfaAotCi0jaW5jbHVkZSAiV0tQYWdl
UHJpdmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFN0cmluZzsKLX0K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjaz4gY3JlYXRlKHZvaWQqIGNvbnRl
eHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJh
Y2ssIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9u
IGRpc3Bvc2VDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaywg
ZGlzcG9zZUNhbGxiYWNrKSk7Ci0gICAgfQotICAgIH5SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbkNhbGxiYWNrKCk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja0lEOyB9Ci0KLSAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKLSAgICB2b2lkIGludmFsaWRhdGUoKTsK
LQotcHJpdmF0ZToKLSAgICBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNr
KHZvaWQqLCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uLCBX
S1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkRpc3Bvc2VGdW5jdGlvbik7Ci0K
LSAgICB2b2lkKiBtX2NvbnRleHQ7Ci0gICAgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25GdW5jdGlvbiBtX2NhbGxiYWNrOwotICAgIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIG1fZGlzcG9zZUNhbGxiYWNrOwotICAgIHVp
bnQ2NF90IG1fY2FsbGJhY2tJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja19oCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcAkocmV2
aXNpb24gNTg2MzUpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxi
YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgIlNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaCIKLQotI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQotewotICAgIHN0
YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxsYmFja0lEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlQ2Fs
bGJhY2tJRCsrOwotfQotCi1TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrOjpTY3JpcHRSZXR1cm5W
YWx1ZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tGdW5j
dGlvbiBjYWxsYmFjaywgU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja0Rpc3Bvc2VGdW5jdGlvbiBk
aXNwb3NlQ2FsbGJhY2spCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY2FsbGJh
Y2soY2FsbGJhY2spCi0gICAgLCBtX2Rpc3Bvc2VDYWxsYmFjayhkaXNwb3NlQ2FsbGJhY2spCi0g
ICAgLCBtX2NhbGxiYWNrSUQoZ2VuZXJhdGVDYWxsYmFja0lEKCkpCi17Ci19Ci0KLVNjcmlwdFJl
dHVyblZhbHVlQ2FsbGJhY2s6On5TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrKCkKLXsKLSAgICBB
U1NFUlQoIW1fY2FsbGJhY2spOwotfQotCi12b2lkIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6
OnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJl
dHVyblZhbHVlKQotewotICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgIG1fY2FsbGJhY2so
bV9jb250ZXh0LCB0b1JlZihyZXR1cm5WYWx1ZS5pbXBsKCkpKTsKLSAgICAKLSAgICBtX2NhbGxi
YWNrID0gMDsKLSAgICBtX2Rpc3Bvc2VDYWxsYmFjayA9IDA7Ci19Ci0KLXZvaWQgU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFjazo6aW52YWxpZGF0ZSgpCi17Ci0gICAgQVNTRVJUKG1fY2FsbGJhY2sp
OwotCi0gICAgbV9kaXNwb3NlQ2FsbGJhY2sobV9jb250ZXh0KTsKLQotICAgIG1fY2FsbGJhY2sg
PSAwOwotICAgIG1fZGlzcG9zZUNhbGxiYWNrID0gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFj
ay5oCShyZXZpc2lvbiA1ODYzNSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1NjcmlwdFJldHVyblZh
bHVlQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrX2gKLSNkZWZpbmUgU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFja19oCi0KLSNpbmNsdWRlICJXS0Jhc2UuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICBjbGFzcyBTdHJpbmc7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0
UmV0dXJuVmFsdWVDYWxsYmFjaz4gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCAoKlNjcmlw
dFJldHVyblZhbHVlQ2FsbGJhY2tGdW5jdGlvbikodm9pZCosIFdLU3RyaW5nUmVmKTsKLSAgICB0
eXBlZGVmIHZvaWQgKCpTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrRGlzcG9zZUZ1bmN0aW9uKSh2
b2lkKik7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNr
PiBjcmVhdGUodm9pZCogY29udGV4dCwgU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja0Z1bmN0aW9u
IGNhbGxiYWNrLCBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrRGlzcG9zZUZ1bmN0aW9uIGRpc3Bv
c2VDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaywgZGlzcG9zZUNhbGxiYWNrKSk7Ci0g
ICAgfQotICAgIH5TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrKCk7Ci0KLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0lEOyB9Ci0KLSAgICB2b2lkIHBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKLSAg
ICB2b2lkIGludmFsaWRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBTY3JpcHRSZXR1cm5WYWx1ZUNh
bGxiYWNrKHZvaWQqLCBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrRnVuY3Rpb24sIFNjcmlwdFJl
dHVyblZhbHVlQ2FsbGJhY2tEaXNwb3NlRnVuY3Rpb24pOwotCi0gICAgdm9pZCogbV9jb250ZXh0
OwotICAgIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxiYWNrOwotICAg
IFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tEaXNwb3NlRnVuY3Rpb24gbV9kaXNwb3NlQ2FsbGJh
Y2s7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrX2gKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNTg2MzUpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkphdmFTY3JpcHRJbk1haQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShy
ZXN1bHRTdHJpbmcpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUocmVzdWx0U3RyaW5nLmltcGwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmlu
ZywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkR2V0UmVuZGVyVHJlZUV4dGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdFN0cmluZyk7
CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHRTdHJp
bmcuaW1wbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDU4NjM1
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKICNkZWZpbmUgV2ViUGFnZVByb3h5X2gKIAogI2luY2x1ZGUgIkRyYXdp
bmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlICJSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgorI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1ZGUg
IldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYkhp
c3RvcnlDbGllbnQuaCIKQEAgLTY3LDYgKzY3LDkgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owog
Y2xhc3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKK3R5
cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmPiBSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tTdHJpbmdSZWY+
IFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s7CisKIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlBhZ2VQcm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VOYW1lc3BhY2UqLCB1aW50NjRfdCBwYWdl
SUQpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDU4NjM1
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEwNiArMzcsNTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKLSAgICBjbGFzcyBLVVJMV3JhcHBlcjsKLSAgICBjbGFzcyBXZWJDb250ZXh0Owot
ICAgIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKLSAgICBjbGFzcyBXZWJGcmFt
ZVByb3h5OwotICAgIGNsYXNzIFdlYk5hdmlnYXRpb25EYXRhOwotICAgIGNsYXNzIFdlYlBhZ2VO
YW1lc3BhY2U7Ci0gICAgY2xhc3MgV2ViUGFnZVByb3h5OwotICAgIGNsYXNzIFdlYlByZWZlcmVu
Y2VzOwotfQotCi0vKiBPcGFxdWUgdHlwaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgKi8KLQotaW5s
aW5lIFdlYktpdDo6V2ViRnJhbWVQcm94eSogdG9XSyhXS0ZyYW1lUmVmIGYpCi17Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0OjpXZWJGcmFtZVByb3h5Kj4oZik7Ci19CiAKLWlu
bGluZSBXS0ZyYW1lUmVmIHRvUmVmKFdlYktpdDo6V2ViRnJhbWVQcm94eSogZikKLXsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0ZyYW1lUmVmPihmKTsKLX0KK2NsYXNzIFdlYkNvbnRl
eHQ7CitjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CitjbGFzcyBXZWJGcmFtZVBy
b3h5OworY2xhc3MgV2ViTmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwor
Y2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFQSVR5cGU+IHN0cnVjdCBBUElUeXBlSW5mbyB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBBUElUeXBlSW5mbzxXS0ZyYW1lUmVmPiAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVm
IFdlYkZyYW1lUHJveHkqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUlu
Zm88V0tQYWdlUmVmPiAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJQYWdlUHJv
eHkqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tDb250ZXh0
UmVmPiAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJDb250ZXh0KiBJbXBsVHlwZTsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLUGFnZU5hbWVzcGFjZVJlZj4gICAg
ICAgICAgICAgICB7IHR5cGVkZWYgV2ViUGFnZU5hbWVzcGFjZSogSW1wbFR5cGU7IH07Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWY+ICAgICAg
ICAgeyB0eXBlZGVmIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSogSW1wbFR5cGU7IH07Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS1ByZWZlcmVuY2VzUmVmPiAgICAgICAgICAg
ICAgICAgeyB0eXBlZGVmIFdlYlByZWZlcmVuY2VzKiBJbXBsVHlwZTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFQSVR5cGVJbmZvPFdLU3RyaW5nUmVmPiAgICAgICAgICAgICAgICAgICAgICB7IHR5
cGVkZWYgV2ViQ29yZTo6U3RyaW5nSW1wbCogSW1wbFR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBBUElUeXBlSW5mbzxXS1VSTFJlZj4gICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVm
IFdlYkNvcmU6OlN0cmluZ0ltcGwqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJ
VHlwZUluZm88V0tOYXZpZ2F0aW9uRGF0YVJlZj4gICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJO
YXZpZ2F0aW9uRGF0YSogSW1wbFR5cGU7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEltcGxUeXBl
PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvIHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5m
bzxXZWJGcmFtZVByb3h5Kj4gICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tGcmFtZVJlZiBB
UElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYlBhZ2VQcm94eSo+
ICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS1BhZ2VSZWYgQVBJVHlwZTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJDb250ZXh0Kj4gICAgICAgICAgICAgICAgICAg
ICB7IHR5cGVkZWYgV0tDb250ZXh0UmVmIEFQSVR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bXBsVHlwZUluZm88V2ViUGFnZU5hbWVzcGFjZSo+ICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdL
UGFnZU5hbWVzcGFjZVJlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJ
bmZvPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSo+ICAgIHsgdHlwZWRlZiBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgQVBJVHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5m
bzxXZWJQcmVmZXJlbmNlcyo+ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tQcmVmZXJlbmNl
c1JlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkNvcmU6
OlN0cmluZ0ltcGwqPiAgICAgICAgICAgIHsgdHlwZWRlZiBXS1N0cmluZ1JlZiBBUElUeXBlOyB9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYk5hdmlnYXRpb25EYXRhKj4gICAg
ICAgICAgICAgIHsgdHlwZWRlZiBXS05hdmlnYXRpb25EYXRhUmVmIEFQSVR5cGU7IH07CiAKLWlu
bGluZSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogdG9XSyhXS1BhZ2VSZWYgcCkKLXsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXQ6OldlYlBhZ2VQcm94eSo+KHApOwotfQorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKLWlubGluZSBXS1BhZ2VSZWYgdG9SZWYoV2ViS2l0OjpXZWJQYWdl
UHJveHkqIHApCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tQYWdlUmVmPihwKTsK
LX0KLQotaW5saW5lIFdlYktpdDo6V2ViQ29udGV4dCogdG9XSyhXS0NvbnRleHRSZWYgYykKLXsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXQ6OldlYkNvbnRleHQqPihjKTsKLX0K
LQotaW5saW5lIFdLQ29udGV4dFJlZiB0b1JlZihXZWJLaXQ6OldlYkNvbnRleHQqIGMpCi17Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb250ZXh0UmVmPihjKTsKLX0KLQotaW5saW5l
IFdlYktpdDo6V2ViUGFnZU5hbWVzcGFjZSogdG9XSyhXS1BhZ2VOYW1lc3BhY2VSZWYgcCkKLXsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXQ6OldlYlBhZ2VOYW1lc3BhY2UqPihw
KTsKLX0KLQotaW5saW5lIFdLUGFnZU5hbWVzcGFjZVJlZiB0b1JlZihXZWJLaXQ6OldlYlBhZ2VO
YW1lc3BhY2UqIHApCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tQYWdlTmFtZXNw
YWNlUmVmPihwKTsKLX0KLQotaW5saW5lIFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5KiB0b1dLKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsKQotewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Kj4obCk7Ci19
Ci0KLWlubGluZSBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgdG9SZWYoV2ViS2l0OjpXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkqIGwpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmPihsKTsKLX0KLQotaW5saW5lIFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXMqIHRvV0soV0tQcmVmZXJlbmNlc1JlZiBwKQotewotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqPihwKTsKLX0KLQotaW5saW5lIFdLUHJl
ZmVyZW5jZXNSZWYgdG9SZWYoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyogcCkKLXsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXS1ByZWZlcmVuY2VzUmVmPihwKTsKLX0KKy8qIE9wYXF1ZSB0
eXBpbmcgY29udmVuaWVuY2UgbWV0aG9kcyAqLwogCi1pbmxpbmUgV2ViQ29yZTo6U3RyaW5nSW1w
bCogdG9XSyhXS1N0cmluZ1JlZiBzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB0eXBl
bmFtZSBXZWJLaXQ6OkFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZSB0b1dLKFQgdCkKIHsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpTdHJpbmdJbXBsKj4ocyk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgV2ViS2l0OjpBUElUeXBlSW5mbzxUPjo6SW1w
bFR5cGU+KHQpOwogfQogCi1pbmxpbmUgV0tTdHJpbmdSZWYgdG9SZWYoV2ViQ29yZTo6U3RyaW5n
SW1wbCogcykKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdHlwZW5hbWUgV2ViS2l0OjpJ
bXBsVHlwZUluZm88VD46OkFQSVR5cGUgdG9SZWYoVCB0KQogewotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdLU3RyaW5nUmVmPihzKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx0
eXBlbmFtZSBXZWJLaXQ6OkltcGxUeXBlSW5mbzxUPjo6QVBJVHlwZT4odCk7CiB9CiAKLWlubGlu
ZSBXZWJDb3JlOjpTdHJpbmdJbXBsKiB0b1dLKFdLVVJMUmVmIHUpCi17Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6U3RyaW5nSW1wbCo+KHUpOwotfQorLyogU3BlY2lhbCBj
YXNlIGZvciBXS1VSTFJlZiB3aGljaCBhbHNvIHVzZXMgU3RyaW5nSW1wbCBhcyBhbiBpbXBsZW1l
bnRhdGlvbi4gKi8KIAogaW5saW5lIFdLVVJMUmVmIHRvVVJMUmVmKFdlYkNvcmU6OlN0cmluZ0lt
cGwqIHMpCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KHMpOwogfQog
Ci1pbmxpbmUgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YSogdG9XSyhXS05hdmlnYXRpb25EYXRh
UmVmIG4pCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0OjpXZWJOYXZpZ2F0
aW9uRGF0YSo+KG4pOwotfQotCi1pbmxpbmUgV0tOYXZpZ2F0aW9uRGF0YVJlZiB0b1JlZihXZWJL
aXQ6OldlYk5hdmlnYXRpb25EYXRhKiBuKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdLTmF2aWdhdGlvbkRhdGFSZWY+KG4pOwotfQotCiAjZW5kaWYgLy8gV0tBUElDYXN0X2gKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNTg2MzUpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMzIg
KzEyOSwzMiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VIaXN0b3J5Q2xpZW50KFdLUGFnZVJlCiAgICAg
ICAgIHRvV0socGFnZVJlZiktPmluaXRpYWxpemVIaXN0b3J5Q2xpZW50KHdrQ2xpZW50KTsKIH0K
IAotdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFs
dWVDYWxsYmFjaykodm9pZCosIFdLU3RyaW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2Fs
bGJhY2spKHZvaWQqKSkKK3ZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFn
ZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaywgV0tQYWdlUnVuSmF2YVNjcmlwdERpc3Bv
c2VGdW5jdGlvbiBkaXNwb3NlRnVuY3Rpb24pCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+cnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHRvV0soc2NyaXB0UmVmKSwgU2NyaXB0UmV0dXJuVmFsdWVDYWxs
YmFjazo6Y3JlYXRlKGNvbnRleHQsIHJldHVyblZhbHVlQ2FsbGJhY2ssIGRpc3Bvc2VDb250ZXh0
Q2FsbGJhY2spKTsKKyAgICB0b1dLKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
dG9XSyhzY3JpcHRSZWYpLCBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrOjpjcmVhdGUoY29udGV4
dCwgY2FsbGJhY2ssIGRpc3Bvc2VGdW5jdGlvbikpOwogfQogCiAjaWYgX19CTE9DS1NfXwotc3Rh
dGljIHZvaWQgY2FsbEJsb2NrQW5kUmVsZWFzZSh2b2lkKiBjb250ZXh0LCBXS1N0cmluZ1JlZiBy
ZXN1bHRWYWx1ZSkKK3N0YXRpYyB2b2lkIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tBbmRSZWxlYXNl
KFdLU3RyaW5nUmVmIHJlc3VsdFZhbHVlLCB2b2lkKiBjb250ZXh0KQogewotICAgIHZvaWQgKF5i
bG9jaykoV0tTdHJpbmdSZWYpID0gKHZvaWQgKF5SZXR1cm5WYWx1ZUJsb2NrVHlwZSkoV0tTdHJp
bmdSZWYpKWNvbnRleHQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEJsb2NrIGJsb2NrID0gKFdL
UGFnZVJ1bkphdmFTY3JpcHRCbG9jayljb250ZXh0OwogICAgIGJsb2NrKHJlc3VsdFZhbHVlKTsK
ICAgICBCbG9ja19yZWxlYXNlKGJsb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgZGlzcG9zZUJsb2Nr
KHZvaWQqIGNvbnRleHQpCitzdGF0aWMgdm9pZCBkaXNwb3NlUnVuSmF2YVNjcmlwdEJsb2NrKHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgdm9pZCAoXmJsb2NrKShXS1N0cmluZ1JlZikgPSAodm9pZCAo
XlJldHVyblZhbHVlQmxvY2tUeXBlKShXS1N0cmluZ1JlZikpY29udGV4dDsKKyAgICBXS1BhZ2VS
dW5KYXZhU2NyaXB0QmxvY2sgYmxvY2sgPSAoV0tQYWdlUnVuSmF2YVNjcmlwdEJsb2NrKWNvbnRl
eHQ7CiAgICAgQmxvY2tfcmVsZWFzZShibG9jayk7CiB9CiAKLXZvaWQgV0tQYWdlUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYs
IHZvaWQgKF5yZXR1cm5WYWx1ZUJsb2NrKShXS1N0cmluZ1JlZikpCit2b2lkIFdLUGFnZVJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3Jp
cHRSZWYsIFdLUGFnZVJ1bkphdmFTY3JpcHRCbG9jayBibG9jaykKIHsKLSAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVfZihwYWdlUmVmLCBzY3JpcHRSZWYsIEJsb2NrX2NvcHkocmV0
dXJuVmFsdWVCbG9jayksIGNhbGxCbG9ja0FuZFJlbGVhc2UsIGRpc3Bvc2VCbG9jayk7CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2VSZWYsIHNjcmlwdFJlZiwgQmxvY2tf
Y29weShibG9jayksIGNhbGxSdW5KYXZhU2NyaXB0QmxvY2tBbmRSZWxlYXNlLCBkaXNwb3NlUnVu
SmF2YVNjcmlwdEJsb2NrKTsKIH0KICNlbmRpZgogCi12b2lkIFdLUGFnZVJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uX2YoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQgKmNvbnRleHQsIFdL
UGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2ssIFdL
UGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIGRpc3Bv
c2VGdW5jdGlvbikKK3ZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
V0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQgKmNvbnRleHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2ssIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIGRpc3Bvc2VGdW5jdGlvbikKIHsKICAgICB0
b1dLKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJh
Y2ssIGRpc3Bvc2VGdW5jdGlvbikpOwogfQpAQCAtMTczLDkgKzE3Myw5IEBAIHN0YXRpYyB2b2lk
IGRpc3Bvc2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXAKICAgICBCbG9ja19yZWxlYXNlKGJsb2NrKTsK
IH0KIAotdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CbG9jayBi
bG9jaykKK3ZvaWQgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25fYihXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CbG9j
ayBibG9jaykKIHsKLSAgICBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbl9m
KHBhZ2VSZWYsIEJsb2NrX2NvcHkoYmxvY2spLCBjYWxsUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25CbG9ja0FuZERpc3Bvc2UsIGRpc3Bvc2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbkJsb2NrKTsKKyAgICBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihwYWdlUmVmLCBCbG9ja19jb3B5KGJsb2NrKSwgY2FsbFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uQmxvY2tBbmREaXNwb3NlLCBkaXNwb3NlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25CbG9jayk7CiB9CiAjZW5kaWYKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgJKHJldmlzaW9uIDU4NjM1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMCArMTU1LDE0IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFn
ZVNldFBhZ2VQb2xpY3lDbGllbnQKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVu
dChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlVUlDbGllbnQgKiBjbGllbnQpOwogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlU2V0UGFnZUhpc3RvcnlDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUhpc3Rv
cnlDbGllbnQgKiBjbGllbnQpOwogCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0
RnVuY3Rpb24pKFdLU3RyaW5nUmVmLCB2b2lkKik7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5K
YXZhU2NyaXB0RGlzcG9zZUZ1bmN0aW9uKSh2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VS
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHNjcmlw
dCwgdm9pZCAqY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGZ1bmN0aW9uLCBX
S1BhZ2VSdW5KYXZhU2NyaXB0RGlzcG9zZUZ1bmN0aW9uIGRpc3Bvc2VGdW5jdGlvbik7CiAjaWYg
X19CTE9DS1NfXwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzY3JpcHQsIHZvaWQgKF5yZXR1cm5WYWx1ZUJs
b2NrKShXS1N0cmluZ1JlZikpOwordHlwZWRlZiB2b2lkICheV0tQYWdlUnVuSmF2YVNjcmlwdEJs
b2NrKShXS1N0cmluZ1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVfYihXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0QmxvY2sgYmxvY2spOwogI2VuZGlmCi1XS19FWFBPUlQgdm9pZCBXS1BhZ2VSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0
LCB2b2lkICpjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFsdWVDYWxsYmFjaykodm9pZCosIFdLU3Ry
aW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2FsbGJhY2spKHZvaWQqKSk7CisKIAogV0tf
RVhQT1JUIFdLUGFnZVJlZiBXS1BhZ2VSZXRhaW4oV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JU
IHZvaWQgV0tQYWdlUmVsZWFzZShXS1BhZ2VSZWYgcGFnZSk7CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA1ODYzNSkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1
LDExIEBAIGV4dGVybiAiQyIgewogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uKShXS1N0cmluZ1JlZiwgdm9pZCopOwogdHlwZWRl
ZiB2b2lkICgqV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25EaXNwb3NlRnVu
Y3Rpb24pKHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uX2YoV0tQYWdlUmVmIHBhZ2UsIHZvaWQgKmNvbnRleHQsIFdLUGFnZVJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gZnVuY3Rpb24sIFdLUGFnZVJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIGRpc3Bvc2VGdW5jdGlv
bik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXS1BhZ2VSZWYgcGFnZSwgdm9pZCAqY29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb25GdW5jdGlvbiBmdW5jdGlvbiwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb25EaXNwb3NlRnVuY3Rpb24gZGlzcG9zZUZ1bmN0aW9uKTsKIAogI2lmIF9f
QkxPQ0tTX18KIHR5cGVkZWYgdm9pZCAoXldLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uQmxvY2spKFdLU3RyaW5nUmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJsb2NrIGJsb2NrKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uX2IoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmxvY2sgYmxvY2spOwogI2VuZGlmCiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDU4NjM1KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDcgQEAKIAkJQkMx
MTFCNjUxMTJGNjM4MzAwMzM3QkFCIC8qIFdlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTExQjYyMTEyRjYzODMw
MDMzN0JBQiAvKiBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmggKi87IH07CiAJCUJDMTMxQkM5MTE3
MjZDMjgwMEI2OTcyNyAvKiBDb3JlSVBDTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUJDODExNzI2QzI4MDBCNjk3MjcgLyog
Q29yZUlQQ01lc3NhZ2VLaW5kcy5oICovOyB9OwogCQlCQzE3NzQ2NTExOEI5RkY0MDA3RDlFOUEg
LyogV0tQYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxNzc0NjQxMThCOUZGNDAwN0Q5RTlBIC8qIFdLUGFnZVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE3NzQ2ODEx
OEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3
NzQ2NjExOEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25D
YWxsYmFjay5jcHAgKi87IH07Ci0JCUJDMTc3NDY5MTE4QkEwODYwMDdEOUU5QSAvKiBSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3NzQ2NzExOEJBMDg2MDA3RDlFOUEgLyogUmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjay5oICovOyB9OworCQlCQzE3NzUz
RjExOEJBQkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3NzUzRTExOEJBQkYwMDA3RDlFOUEgLyog
R2VuZXJpY0NhbGxiYWNrLmggKi87IH07CiAJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBX
ZWJQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMUE3QzU3MTEzNkUxOUMwMEZCNzE2NyAvKiBXZWJQcm9jZXNzTGF1bmNoZXIu
aCAqLzsgfTsKIAkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVUeXBlQXJndW1l
bnRNYXJzaGFsbGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVUeXBlQXJndW1lbnRNYXJz
aGFsbGluZy5oICovOyB9OwogCQlCQzIwRUJCMDExNkVFQjA4MDAwOTRBNTAgLyogV0tTdHJpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjBFQkFF
MTE2RUVCMDgwMDA5NEE1MCAvKiBXS1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTE1NCw4ICsxNTMsNiBAQAogCQlCQ0QwMDQyRDExMEMx
RTI3MDAzQjhBNjcgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDAwNDJDMTEwQzFFMjcwMDNCOEE2NyAv
KiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovOyB9OwogCQlCQ0QwMTM5QjExMEZBNDIwMDAzQjhB
NjcgLyogV0tGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDRDAxMzlDMTEwRkE0MjAwMDNC
OEE2NyAvKiBXS0ZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLzsgfTsK
LQkJQkNENTkwRjQxMTI5RjU1QjAwRUM4QzIzIC8qIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5MEYy
MTEyOUY1NUIwMEVDOEMyMyAvKiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmggKi87IH07Ci0J
CUJDRDU5MEY1MTEyOUY1NUIwMEVDOEMyMyAvKiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5MEYz
MTEyOUY1NUIwMEVDOEMyMyAvKiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcCAqLzsgfTsK
IAkJQkNENTk3RDAxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5N0NFMTEyQjU2QUMwMEVD
OEMyMyAvKiBXS1ByZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQlCQ0Q1OTdEMTExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1
OTdDRjExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5jcHAgKi87IH07CiAJCUJDRDU5
N0Q2MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTk3RDQxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFn
ZS5jcHAgKi87IH07CkBAIC0yOTIsOCArMjg5LDcgQEAKIAkJQkMxMTFCNjIxMTJGNjM4MzAwMzM3
QkFCIC8qIFdlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzEzMUJDODExNzI2QzI4MDBCNjk3MjcgLyogQ29yZUlQQ01lc3NhZ2VLaW5kcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlSVBDTWVzc2FnZUtpbmRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTc3NDY0MTE4QjlGRjQwMDdEOUU5QSAv
KiBXS1BhZ2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFn
ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxNzc0NjYxMThCQTA4
NjAwN0Q5RTlBIC8qIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDMTc3NDY3MTE4QkEwODYwMDdEOUU5QSAvKiBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMxNzc1M0UxMThCQUJGMDAwN0Q5RTlBIC8qIEdlbmVyaWNDYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxQTdDNTcxMTM2RTE5QzAwRkI3MTY3IC8qIFdlYlBy
b2Nlc3NMYXVuY2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9j
ZXNzTGF1bmNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxREQ3QjExMTRE
QzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEVCQUUxMTZFRUIwODAwMDk0QTUw
IC8qIFdLU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3RyaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTcsOCArMzUzLDYgQEAKIAkJQkNE
MDA0MkMxMTBDMUUyNzAwM0I4QTY3IC8qIENvcmVTZXJ2aWNlcy5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENvcmVTZXJ2aWNlcy5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwogCQlCQ0QwMTM5NzExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQ0Q1OTBGMjExMjlGNTVCMDBFQzhDMjMgLyogU2NyaXB0UmV0dXJu
VmFsdWVDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRDU5
MEYzMTEyOUY1NUIwMEVDOEMyMyAvKiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFJldHVyblZhbHVlQ2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1OTdDRTExMkI1NkFDMDBF
QzhDMjMgLyogV0tQcmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1ByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDU5N0NG
MTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLUHJlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0Q1OTdENDExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MDQsMTQgKzU5OCwxMSBAQAogCQkJCUJDMjY1MjEzMTE4MjYwODEw
MDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8sCiAJCQkJQkMyNjUyMTQxMTgyNjA4MTAw
MjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAgKi8sCiAJCQkJQkMyNjUy
MTUxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5oICovLAor
CQkJCUJDMTc3NTNFMTE4QkFCRjAwMDdEOUU5QSAvKiBHZW5lcmljQ2FsbGJhY2suaCAqLywKIAkJ
CQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovLAogCQkJCUJDNTk3
MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLywKLQkJCQlCQzE3NzQ2NjEx
OEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFj
ay5jcHAgKi8sCi0JCQkJQkMxNzc0NjcxMThCQTA4NjAwN0Q5RTlBIC8qIFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAz
MzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRG
NzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKLQkJCQlCQ0Q1OTBGMzExMjlG
NTVCMDBFQzhDMjMgLyogU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5jcHAgKi8sCi0JCQkJQkNE
NTkwRjIxMTI5RjU1QjAwRUM4QzIzIC8qIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaCAqLywK
IAkJCQlCQ0I5RTI0MjExMjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5jcHAgKi8sCiAJCQkJ
QkNCOUUyNDExMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRleHQuaCAqLywKIAkJCQlCQ0I5RjY5
RjExMjNBODRCMDBBMTM3RTAgLyogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcCAqLywK
QEAgLTg3Niw3ICs4NjcsNiBAQAogCQkJCUJDQjlGNkE1MTEyM0REMEQwMEExMzdFMCAvKiBXS0Zy
YW1lUG9saWN5TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlGOEIwMTEyNEUwNzcw
MEExMzdFMCAvKiBXZWJQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTk0QUJC
MTEyQTFGQjYwMDlERTdDNyAvKiBXZWJVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNE
NTkwRjQxMTI5RjU1QjAwRUM4QzIzIC8qIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRDU5N0QwMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdENzExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdGRjExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJl
ZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTIyLDcgKzkxMiw3IEBACiAJCQkJQkMyNjUy
MTcxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMjY1MjE5MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1Bh
Z2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzE3NzQ2OTExOEJBMDg2MDA3RDlFOUEg
LyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxNzc1M0YxMThCQUJGMDAwN0Q5RTlBIC8qIEdlbmVyaWNDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xMDI5LDcgKzEwMTksNiBAQAogCQkJCUJDQjlGNkE2MTEyM0REMEQw
MEExMzdFMCAvKiBXS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNCOUY4QUYxMTI0RTA3NzAwQTEzN0UwIC8qIFdlYlBvbGljeUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTU5NEFCQTExMkExRkI2MDA5REU3QzcgLyogV2ViVUlDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQkNENTkwRjUxMTI5RjU1QjAwRUM4QzIzIC8qIFNjcmlwdFJldHVy
blZhbHVlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3RDExMTJCNTZBQzAw
RUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3RDYx
MTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q1OTgw
MDExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xMDc3LDcgKzEwNjYsNiBAQAogCQkJCUJDMjY1MUY2MTE4MjVFRjgwMDI0M0UxMiAvKiBEcmF3
aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmtNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTIx
NjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzI2NTIxODExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNo
dW5rLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDMTc3NDY4MTE4QkEwODYwMDdEOUU5QSAvKiBS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDU4NjM1KQorKysgV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyMCwxOSArNzIwLDE1IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xQ
YWdlQ2xpZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEdlbmVyaWNDYWxs
YmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cVUlQcm9jZXNzXFByb2Nlc3NNb2RlbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJ
CTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xQYWdlQ2xpZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b25DYWxsYmFjay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xQcm9jZXNzTW9k
ZWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTc0NCwxNCArNzQwLDYg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suY3BwIg0KLQkJCQk+DQotCQkJPC9G
aWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFNjcmlwdFJl
dHVyblZhbHVlQ2FsbGJhY2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb250ZXh0LmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCg==
</data>
<flag name="review"
          id="39016"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>