<?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>151110</bug_id>
          
          <creation_ts>2015-11-10 10:39:18 -0800</creation_ts>
          <short_desc>[WK2][NetworkCache] Rename SpeculativeLoader to SpeculativeLoadManager</short_desc>
          <delta_ts>2015-11-10 11:20:35 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140834</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-10 10:39:18 -0800</bug_when>
    <thetext>Rename SpeculativeLoader to SpeculativeLoadManager for clarity, as it manages all speculative loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140836</commentid>
    <comment_count>1</comment_count>
      <attachid>265198</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-10 10:42:57 -0800</bug_when>
    <thetext>Created attachment 265198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140839</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 10:45:37 -0800</bug_when>
    <thetext>Attachment 265198 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 1 in 6 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>1140841</commentid>
    <comment_count>3</comment_count>
      <attachid>265199</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-10 10:51:23 -0800</bug_when>
    <thetext>Created attachment 265199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140842</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 10:52:43 -0800</bug_when>
    <thetext>Attachment 265199 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:61:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 1 in 7 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>1140860</commentid>
    <comment_count>5</comment_count>
      <attachid>265199</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-10 11:20:29 -0800</bug_when>
    <thetext>Comment on attachment 265199
Patch

Clearing flags on attachment: 265199

Committed r192258: &lt;http://trac.webkit.org/changeset/192258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140862</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-10 11:20:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265198</attachid>
            <date>2015-11-10 10:42:57 -0800</date>
            <delta_ts>2015-11-10 10:51:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151110-20151110104252.patch</filename>
            <type>text/plain</type>
            <size>27638</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGZmYjgzNWY1Yjk1NWYx
YzU1ZDc0ZmI5YzRiMjlmYWFiZWQ2ZjlkZS4uODBlOWNhZGY4ZDg1OTFiZTE1OTZkOTc0NDI3MWE3
YWRjZWI2ZjA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE1LTExLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1bTmV0d29ya0NhY2hl
XSBSZW5hbWUgU3BlY3VsYXRpdmVMb2FkZXIgdG8gU3BlY3VsYXRpdmVMb2FkTWFuYWdlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFNwZWN1
bGF0aXZlTG9hZGVyIHRvIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIgZm9yIGNsYXJpdHksIGFzIGl0
CisgICAgICAgIG1hbmFnZXMgYWxsIHNwZWN1bGF0aXZlIGxvYWRzLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpzdWJyZXNvdXJjZXNUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU3VicmVzb3VyY2VzS2V5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJh
bWVMb2FkOjpQZW5kaW5nRnJhbWVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJl
c291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjplbmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVu
ZGluZ0ZyYW1lTG9hZDo6bWFya0FzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjp+
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRlci5oLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworMjAxNS0xMS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIFtXSzJdW2lPU10gVXBkYXRlIFdlYkNvbnRlbnQgc2FuZGJveCBwcm9maWxlIHRv
IGFsbG93IGxvYWRpbmcgaW5qZWN0ZWQgYnVuZGxlcyBhZ2FpbgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTAyCiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMzQ0MjMxMT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGExMWJlMmUyYWUxYWRhMmQ0NDRkOWEwOTM2YzZj
MDA3YWJmYzQ0MDcuLjhlZmZkNDE1MDIyZmUzNzg5ODY0MmEzMjQzYjZhZGYxZDI0ZjQ4OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KQEAgLTc4
LDcgKzc4LDcgQEAgYm9vbCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0
aCwgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIAogI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAocGFyYW1ldGVycy5lbmFibGVO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikKLSAgICAgICAgbV9zcGVjdWxhdGl2
ZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkZXI+KCptX3N0b3JhZ2Up
OworICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCptX3N0b3JhZ2UpOwogI2VuZGlmCiAKICAgICBpZiAocGFy
YW1ldGVycy5lbmFibGVFZmZpY2FjeUxvZ2dpbmcpCkBAIC0zNTYsOCArMzU2LDggQEAgdm9pZCBD
YWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIHVpbnQ2NF90IHcKICAgICBLZXkgc3RvcmFnZUtleSA9IG1ha2VDYWNoZUtleShvcmln
aW5hbFJlcXVlc3QpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVW
QUxJREFUSU9OKQotICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZGVyKQotICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZGVyLT5yZWdpc3RlckxvYWQod2ViUGFnZUlELCB3ZWJGcmFtZUlELCBvcmlnaW5h
bFJlcXVlc3QsIHN0b3JhZ2VLZXkpOworICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIp
CisgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJMb2FkKHdlYlBhZ2VJ
RCwgd2ViRnJhbWVJRCwgb3JpZ2luYWxSZXF1ZXN0LCBzdG9yYWdlS2V5KTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHdlYkZyYW1lSUQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDc4Mzg5ZTA1MzgzYjc1
ZGM1Mzg5ZmExZmIyYzAyN2EyMTI2ZjVjODEuLmRlMWRhOGU2OTUxZWIyMDFkOWE0OTY2Y2VjMWVl
NGQwYjZlMDE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIGNsYXNzIENhY2hlOwotY2xhc3MgU3BlY3VsYXRp
dmVMb2FkZXI7CitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOwogY2xhc3MgU3RhdGlzdGlj
czsKIAogQ2FjaGUmIHNpbmdsZXRvbigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZT4gbV9zdG9yYWdlOwogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3BlY3VsYXRpdmVMb2FkZXI+IG1fc3BlY3VsYXRpdmVMb2FkZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcjsKICNl
bmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBtX3N0YXRpc3RpY3M7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZGI4OWY3ZjllYTE5NjY4ODRiOWJjYTYxMzE4Njc2OWZlYmJmMTc5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxB
VElWRV9SRVZBTElEQVRJT04pCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZp
dHkuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBzdWJyZXNvdXJjZXNUeXBlKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJz
dWJyZXNvdXJjZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBy
ZXR1cm4gcmVzb3VyY2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNL
ZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkKK3sKKyAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5
LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJl
c291cmNlS2V5LmlkZW50aWZpZXIoKSk7Cit9CisKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OlBlbmRpbmdGcmFtZUxvYWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFBlbmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX21haW5S
ZXNvdXJjZUtleShtYWluUmVzb3VyY2VLZXkpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxl
cihjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgLCBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHko
W3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0
YXRlOjpTdG9wcGVkKSBtX2NvbXBsZXRpb25IYW5kbGVyKCk7IH0pCisgICAgeyB9CisKKyAgICB2
b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2UoY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIG1fc3VicmVzb3Vy
Y2VLZXlzLmFkZChzdWJyZXNvdXJjZUtleSk7CisgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rp
dml0eS5pbXB1bHNlKCk7CisgICAgfQorCisgICAgT3B0aW9uYWw8U3RvcmFnZTo6UmVjb3JkPiBl
bmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgICAgICBpZiAobV9zdWJyZXNvdXJjZUtleXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIHN1YnJlc291cmNlc1N0b3Jh
Z2VLZXkgPSBtYWtlU3VicmVzb3VyY2VzS2V5KG1fbWFpblJlc291cmNlS2V5KTsKKyAgICAgICAg
VmVjdG9yPEtleT4gc3VicmVzb3VyY2VLZXlzOworICAgICAgICBjb3B5VG9WZWN0b3IobV9zdWJy
ZXNvdXJjZUtleXMsIHN1YnJlc291cmNlS2V5cyk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAg
ICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nl
c3MpIFNhdmluZyB0byBkaXNrIGxpc3Qgb2Ygc3VicmVzb3VyY2VzIGZvciAnJXMnOiIsIG1fbWFp
blJlc291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZUtleSA6IHN1YnJlc291cmNlS2V5cykKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpICogU3Vi
cmVzb3VyY2U6ICclcycuIiwgc3VicmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOworI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIFN1YnJlc291cmNlc0VudHJ5KHN1YnJlc291
cmNlc1N0b3JhZ2VLZXksIFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMpKS5lbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQoKTsKKyAgICB9CisKKyAgICB2b2lkIG1hcmtBc0NvbXBsZXRlZCgpCisgICAgewor
ICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsK
KyAgICBIYXNoU2V0PEtleT4gbV9zdWJyZXNvdXJjZUtleXM7CisgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgSHlzdGVyZXNpc0FjdGl2aXR5IG1fbG9h
ZEh5c3RlcmVzaXNBY3Rpdml0eTsKK307CisKK1NwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIoU3RvcmFnZSYgc3RvcmFnZSkKKyAgICA6IG1fc3RvcmFnZShzdG9y
YWdlKQoreworfQorCitTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjp+U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcigpCit7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2Fk
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZUlELCB3
ZWJGcmFtZUlEKTsKKyAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5yZXF1ZXN0ZXIo
KSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICBpZiAoaXNNYWluUmVz
b3VyY2UpIHsKKyAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUgYXMg
Y29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxv
YWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCisgICAgICAgICAgICBwZW5k
aW5nRnJhbWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKKworICAgICAgICAvLyBTdGFydCB0cmFj
a2luZyBsb2FkcyBpbiB0aGlzIGZyYW1lLgorICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUtleSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtl
eSwgW3RoaXMsIGZyYW1lS2V5XSgpIHsKKyAgICAgICAgICAgIGF1dG8gZnJhbWVMb2FkID0gbV9w
ZW5kaW5nRnJhbWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKKyAgICAgICAgICAgIGF1dG8gb3B0aW9u
YWxSZWNvcmQgPSBmcmFtZUxvYWQtPmVuY29kZUFzU3VicmVzb3VyY2VzUmVjb3JkKCk7CisgICAg
ICAgICAgICBpZiAoIW9wdGlvbmFsUmVjb3JkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgpLCBbXShjb25z
dCBEYXRhJikgeyB9KTsKKyAgICAgICAgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChm
cmFtZUtleSkpCisgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3VicmVzb3VyY2Uo
cmVzb3VyY2VLZXkpOworfQorCit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxB
VElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJjNTk5YTQzMmFkY2JhMTVlYzBmY2Y4ODI5OTQzNDVhODNi
MzlkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
X2gKKyNkZWZpbmUgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlcl9oCisKKyNpZiBF
TkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisKKyNpbmNsdWRl
ICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CisKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoU3RvcmFnZSYp
OworICAgIH5TcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyTG9h
ZCh1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpOworCitwcml2YXRlOgor
ICAgIFN0b3JhZ2UmIG1fc3RvcmFnZTsKKworICAgIGNsYXNzIFBlbmRpbmdGcmFtZUxvYWQ7Cisg
ICAgdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCov
LCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CisgICAgSGFzaE1hcDxHbG9iYWxGcmFtZUlELCBz
dGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1fcGVuZGluZ0ZyYW1lTG9hZHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCisKKyNlbmRpZiAvLyBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDNmNWM5NWFjZWYzNDVkYTlkNGRkNmVhZWQ2MmNlYzNhN2NmNTFkYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURB
VElPTikKLSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIgotCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJyZXNvdXJjZXNUeXBl
KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJzdWJyZXNvdXJjZXMiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gcmVzb3VyY2U7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNLZXkoY29uc3QgS2V5JiByZXNv
dXJjZUtleSkKLXsKLSAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRpdGlvbigpLCBzdWJy
ZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNlS2V5LmlkZW50aWZp
ZXIoKSk7Ci19Ci0KLWNsYXNzIFNwZWN1bGF0aXZlTG9hZGVyOjpQZW5kaW5nRnJhbWVMb2FkIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQZW5kaW5nRnJhbWVM
b2FkKGNvbnN0IEtleSYgbWFpblJlc291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29t
cGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9tYWluUmVzb3VyY2VLZXkobWFpblJlc291cmNl
S2V5KQotICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRsZXIpCi0g
ICAgICAgICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUg
c3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9jb21wbGV0
aW9uSGFuZGxlcigpOyB9KQotICAgIHsgfQotCi0gICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNl
KGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCi0gICAgewotICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgICAgICBtX3N1YnJlc291cmNlS2V5cy5hZGQoc3VicmVzb3VyY2VL
ZXkpOwotICAgICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwotICAgIH0K
LQotICAgIE9wdGlvbmFsPFN0b3JhZ2U6OlJlY29yZD4gZW5jb2RlQXNTdWJyZXNvdXJjZXNSZWNv
cmQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAg
aWYgKG1fc3VicmVzb3VyY2VLZXlzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICAgICAgYXV0byBzdWJyZXNvdXJjZXNTdG9yYWdlS2V5ID0gbWFrZVN1YnJlc291cmNl
c0tleShtX21haW5SZXNvdXJjZUtleSk7Ci0gICAgICAgIFZlY3RvcjxLZXk+IHN1YnJlc291cmNl
S2V5czsKLSAgICAgICAgY29weVRvVmVjdG9yKG1fc3VicmVzb3VyY2VLZXlzLCBzdWJyZXNvdXJj
ZUtleXMpOwotCi0jaWYgIUxPR19ESVNBQkxFRAotICAgICAgICBMT0coTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTYXZpbmcgdG8gZGlzayBsaXN0
IG9mIHN1YnJlc291cmNlcyBmb3IgJyVzJzoiLCBtX21haW5SZXNvdXJjZUtleS5pZGVudGlmaWVy
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2VLZXkgOiBz
dWJyZXNvdXJjZUtleXMpCi0gICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQ
cmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNlOiAnJXMnLiIsIHN1YnJl
c291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSNlbmRpZgotCi0gICAgICAg
IHJldHVybiBTdWJyZXNvdXJjZXNFbnRyeShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBXVEY6Om1v
dmUoc3VicmVzb3VyY2VLZXlzKSkuZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBtYXJrQXNDb21wbGV0ZWQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBLZXkgbV9tYWluUmVzb3VyY2VLZXk7Ci0gICAgSGFzaFNldDxLZXk+IG1fc3Vi
cmVzb3VyY2VLZXlzOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOwotICAgIEh5c3RlcmVzaXNBY3Rpdml0eSBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7Ci19
OwotCi1TcGVjdWxhdGl2ZUxvYWRlcjo6U3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYgc3RvcmFn
ZSkKLSAgICA6IG1fc3RvcmFnZShzdG9yYWdlKQotewotfQotCi1TcGVjdWxhdGl2ZUxvYWRlcjo6
flNwZWN1bGF0aXZlTG9hZGVyKCkKLXsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUxvYWRlcjo6cmVn
aXN0ZXJMb2FkKHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2Vi
UGFnZUlELCB3ZWJGcmFtZUlEKTsKLSAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICBpZiAo
aXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMg
ZnJhbWUgYXMgY29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYgKGF1dG8qIHBlbmRp
bmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCi0gICAgICAg
ICAgICBwZW5kaW5nRnJhbWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKLQotICAgICAgICAvLyBT
dGFydCB0cmFja2luZyBsb2FkcyBpbiB0aGlzIGZyYW1lLgotICAgICAgICBtX3BlbmRpbmdGcmFt
ZUxvYWRzLmFkZChmcmFtZUtleSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihy
ZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lS2V5XSgpIHsKLSAgICAgICAgICAgIGF1dG8gZnJhbWVM
b2FkID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKLSAgICAgICAgICAgIGF1
dG8gb3B0aW9uYWxSZWNvcmQgPSBmcmFtZUxvYWQtPmVuY29kZUFzU3VicmVzb3VyY2VzUmVjb3Jk
KCk7Ci0gICAgICAgICAgICBpZiAoIW9wdGlvbmFsUmVjb3JkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgp
LCBbXShjb25zdCBEYXRhJikgeyB9KTsKLSAgICAgICAgfSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxv
YWRzLmdldChmcmFtZUtleSkpCi0gICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3Vi
cmVzb3VyY2UocmVzb3VyY2VLZXkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNI
RV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJkZTMzN2UxMWJiMDA4OTUz
MjFlODE1OTg2ZTIwZmJmYWJiMjFjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXJfaAotI2Rl
ZmluZSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlcl9oCi0KLSNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0KLSNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7Ci0KLWNsYXNzIFNwZWN1bGF0aXZlTG9hZGVyIHsKLXB1YmxpYzoKLSAgICBl
eHBsaWNpdCBTcGVjdWxhdGl2ZUxvYWRlcihTdG9yYWdlJik7Ci0gICAgflNwZWN1bGF0aXZlTG9h
ZGVyKCk7Ci0KLSAgICB2b2lkIHJlZ2lzdGVyTG9hZCh1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2
NF90IHdlYkZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtl
eSYgcmVzb3VyY2VLZXkpOwotCi1wcml2YXRlOgotICAgIFN0b3JhZ2UmIG1fc3RvcmFnZTsKLQot
ICAgIGNsYXNzIFBlbmRpbmdGcmFtZUxvYWQ7Ci0gICAgdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0
ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47
Ci0gICAgSGFzaE1hcDxHbG9iYWxGcmFtZUlELCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ZyYW1l
TG9hZD4+IG1fcGVuZGluZ0ZyYW1lTG9hZHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0KLSNlbmRpZiAvLyBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmYyZWMxYzRjYmY1ZDk0YTNlNGM1YTkxODljZWYx
MDI0ZGIyZjJmZC4uNWE5ZDdhZWQ4ODNlNGJmOWZmYjFiNjBmYTBkZmQ1MGQxMmI1MjIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTE4MCw4ICsxMTgwLDggQEAKIAkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50LmggKi87IH07CiAJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmggKi87IH07CiAJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzEwNDI4QTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwICovOyB9OwotCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAg
LyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oICovOyB9OwotCQk4MzJBRTI1MzFCRTJFOENEMDBG
QUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUyNTExQkUyRThDRDAwRkFBRTEw
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLzsgfTsKKwkJODMyQUUyNTIx
QkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJF
MkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87
IH07CisJCTgzMkFFMjUzMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5o
ICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
ICovOyB9OwpAQCAtMzQyMCw4ICszNDIwLDggQEAKIAkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMy
IC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzEwNDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDQyOEEx
QkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMyQUUyNTAxQkUyRThD
RDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1
MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03NTg3LDggKzc1ODcsOCBAQAogCQkJCUU0MkUwNjBEMUFBNzUwRTUwMEIxMTY5OSAv
KiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSAqLywKIAkJCQlFNDQzNkVDMDFBMENGREIy
MDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmNwcCAqLywKIAkJCQlFNDQzNkVDMTFBMENGREIy
MDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggKi8sCi0JCQkJODMyQUUyNTExQkUyRThDRDAw
RkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLywKLQkJCQk4MzJB
RTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCAq
LywKKwkJCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAgKi8sCisJCQkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLywKIAkJCQk4M0JEQ0NCODFBQzVG
REI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi8sCiAJCQkJODM0QjI1
MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLywKIAkJCQlF
NDQzNkVDMzFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8sCkBA
IC03NzMyLDcgKzc3MzIsNyBAQAogCQkJCTc1QThEMkUxMTg3REVDMUEwMEMzOUM5RSAvKiBBUElT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyog
QVBJU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRENjY0ODE4QTJEOTFBMDBE
ODJFMjEgLyogQVBJVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzMkFFMjUyMUJFMkU4
Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREI4NkMxMTIwMEZCOTcwMDcy
NTRCRSAvKiBBUElVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1
QzM1QSAvKiBBUElVUkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwQTFEMjEyMkRE
NTVFMDBDQzhDNTAgLyogQVBJVVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTU0Niw3
ICs5NTQ2LDcgQEAKIAkJCQk3Qzg5RDI5NzFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzQTczQ0YxQTQ4QzdGMTAwNzIzMUIz
IC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM2RTE4
NTY1RDJCMDBGM0VDMDUgLyogQVBJUGFnZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4
MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NF
NEQyMUYxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRUQzQzFEQzFCNDQ3RUFDMDBFMEVCN0YgLyogQVBJU2VyaWFs
aXplZFNjcmlwdFZhbHVlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTgyRDVCNDFCRTZC
RDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265199</attachid>
            <date>2015-11-10 10:51:23 -0800</date>
            <delta_ts>2015-11-10 11:20:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151110-20151110105119.patch</filename>
            <type>text/plain</type>
            <size>28370</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGZmYjgzNWY1Yjk1NWYx
YzU1ZDc0ZmI5YzRiMjlmYWFiZWQ2ZjlkZS4uODBlOWNhZGY4ZDg1OTFiZTE1OTZkOTc0NDI3MWE3
YWRjZWI2ZjA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE1LTExLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dLMl1bTmV0d29ya0NhY2hl
XSBSZW5hbWUgU3BlY3VsYXRpdmVMb2FkZXIgdG8gU3BlY3VsYXRpdmVMb2FkTWFuYWdlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFNwZWN1
bGF0aXZlTG9hZGVyIHRvIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIgZm9yIGNsYXJpdHksIGFzIGl0
CisgICAgICAgIG1hbmFnZXMgYWxsIHNwZWN1bGF0aXZlIGxvYWRzLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpzdWJyZXNvdXJjZXNUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU3VicmVzb3VyY2VzS2V5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJh
bWVMb2FkOjpQZW5kaW5nRnJhbWVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJl
c291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjplbmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVu
ZGluZ0ZyYW1lTG9hZDo6bWFya0FzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjp+
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRlci5oLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworMjAxNS0xMS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIFtXSzJdW2lPU10gVXBkYXRlIFdlYkNvbnRlbnQgc2FuZGJveCBwcm9maWxlIHRv
IGFsbG93IGxvYWRpbmcgaW5qZWN0ZWQgYnVuZGxlcyBhZ2FpbgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTAyCiAgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMzQ0MjMxMT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMTZhNWY0ZjYwNWY2YjRlOWM2
ZWQ2YmY4OGFkZmQzNTY3NjJmODM0OC4uMDBjZDMxNjZmNTUzOTc2NTRmZTk1Y2E3ZDI2NzUzYTU3
NmZlZDgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE3OSw3ICsxNzksNyBAQCBzZXQoTmV0
d29ya1Byb2Nlc3NfQ09NTU9OX1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5j
cHAKLSAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRl
ci5jcHAKKyAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCmluZGV4IGExMWJlMmUyYWUxYWRhMmQ0NDRkOWEwOTM2YzZjMDA3YWJmYzQ0
MDcuLjhlZmZkNDE1MDIyZmUzNzg5ODY0MmEzMjQzYjZhZGYxZDI0ZjQ4OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApA
QCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQogCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmgiCisj
aW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4KQEAgLTc4LDcgKzc4LDcg
QEAgYm9vbCBDYWNoZTo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCwgY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNV
TEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAocGFyYW1ldGVycy5lbmFibGVOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikKLSAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkZXI+KCptX3N0b3JhZ2UpOworICAgICAg
ICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI+KCptX3N0b3JhZ2UpOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5l
bmFibGVFZmZpY2FjeUxvZ2dpbmcpCkBAIC0zNTYsOCArMzU2LDggQEAgdm9pZCBDYWNoZTo6cmV0
cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIHVp
bnQ2NF90IHcKICAgICBLZXkgc3RvcmFnZUtleSA9IG1ha2VDYWNoZUtleShvcmlnaW5hbFJlcXVl
c3QpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQotICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZGVyKQotICAgICAgICBtX3NwZWN1bGF0aXZlTG9h
ZGVyLT5yZWdpc3RlckxvYWQod2ViUGFnZUlELCB3ZWJGcmFtZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IHN0b3JhZ2VLZXkpOworICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpCisgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJMb2FkKHdlYlBhZ2VJRCwgd2ViRnJh
bWVJRCwgb3JpZ2luYWxSZXF1ZXN0LCBzdG9yYWdlS2V5KTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHdlYkZyYW1lSUQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDc4Mzg5ZTA1MzgzYjc1ZGM1Mzg5ZmEx
ZmIyYzAyN2EyMTI2ZjVjODEuLmRlMWRhOGU2OTUxZWIyMDFkOWE0OTY2Y2VjMWVlNGQwYjZlMDE5
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZSB7CiAKIGNsYXNzIENhY2hlOwotY2xhc3MgU3BlY3VsYXRpdmVMb2FkZXI7
CitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOwogY2xhc3MgU3RhdGlzdGljczsKIAogQ2Fj
aGUmIHNpbmdsZXRvbigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3RvcmFnZT4gbV9zdG9yYWdlOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
X1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRp
dmVMb2FkZXI+IG1fc3BlY3VsYXRpdmVMb2FkZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI+IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcjsKICNlbmRpZgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBtX3N0YXRpc3RpY3M7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGI4
OWY3ZjllYTE5NjY4ODRiOWJjYTYxMzE4Njc2OWZlYmJmMTc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJyZXNv
dXJjZXNUeXBlKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJzdWJyZXNvdXJj
ZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gcmVz
b3VyY2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNLZXkoY29uc3Qg
S2V5JiByZXNvdXJjZUtleSkKK3sKKyAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRpdGlv
bigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNlS2V5
LmlkZW50aWZpZXIoKSk7Cit9CisKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRp
bmdGcmFtZUxvYWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFBlbmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX21haW5SZXNvdXJjZUtl
eShtYWluUmVzb3VyY2VLZXkpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihjb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgLCBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkoW3RoaXNdKEh5
c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdG9w
cGVkKSBtX2NvbXBsZXRpb25IYW5kbGVyKCk7IH0pCisgICAgeyB9CisKKyAgICB2b2lkIHJlZ2lz
dGVyU3VicmVzb3VyY2UoY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VLZXlzLmFk
ZChzdWJyZXNvdXJjZUtleSk7CisgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1
bHNlKCk7CisgICAgfQorCisgICAgT3B0aW9uYWw8U3RvcmFnZTo6UmVjb3JkPiBlbmNvZGVBc1N1
YnJlc291cmNlc1JlY29yZCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgICAgICBpZiAobV9zdWJyZXNvdXJjZUtleXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIHN1YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBt
YWtlU3VicmVzb3VyY2VzS2V5KG1fbWFpblJlc291cmNlS2V5KTsKKyAgICAgICAgVmVjdG9yPEtl
eT4gc3VicmVzb3VyY2VLZXlzOworICAgICAgICBjb3B5VG9WZWN0b3IobV9zdWJyZXNvdXJjZUtl
eXMsIHN1YnJlc291cmNlS2V5cyk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNhdmlu
ZyB0byBkaXNrIGxpc3Qgb2Ygc3VicmVzb3VyY2VzIGZvciAnJXMnOiIsIG1fbWFpblJlc291cmNl
S2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBzdWJy
ZXNvdXJjZUtleSA6IHN1YnJlc291cmNlS2V5cykKKyAgICAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpICogU3VicmVzb3VyY2U6
ICclcycuIiwgc3VicmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOworI2Vu
ZGlmCisKKyAgICAgICAgcmV0dXJuIFN1YnJlc291cmNlc0VudHJ5KHN1YnJlc291cmNlc1N0b3Jh
Z2VLZXksIFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMpKS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQo
KTsKKyAgICB9CisKKyAgICB2b2lkIG1hcmtBc0NvbXBsZXRlZCgpCisgICAgeworICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKKyAgICBIYXNo
U2V0PEtleT4gbV9zdWJyZXNvdXJjZUtleXM7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgSHlzdGVyZXNpc0FjdGl2aXR5IG1fbG9hZEh5c3RlcmVz
aXNBY3Rpdml0eTsKK307CisKK1NwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIoU3RvcmFnZSYgc3RvcmFnZSkKKyAgICA6IG1fc3RvcmFnZShzdG9yYWdlKQorewor
fQorCitTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjp+U3BlY3VsYXRpdmVMb2FkTWFuYWdlcigpCit7
Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKHVpbnQ2NF90
IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZUlELCB3ZWJGcmFtZUlE
KTsKKyAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNv
dXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKKyAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsK
KyAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUgYXMgY29tcGxldGVk
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3Bl
bmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCisgICAgICAgICAgICBwZW5kaW5nRnJhbWVM
b2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKKworICAgICAgICAvLyBTdGFydCB0cmFja2luZyBsb2Fk
cyBpbiB0aGlzIGZyYW1lLgorICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFkZChmcmFtZUtl
eSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtleSwgW3RoaXMs
IGZyYW1lS2V5XSgpIHsKKyAgICAgICAgICAgIGF1dG8gZnJhbWVMb2FkID0gbV9wZW5kaW5nRnJh
bWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKKyAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxSZWNvcmQg
PSBmcmFtZUxvYWQtPmVuY29kZUFzU3VicmVzb3VyY2VzUmVjb3JkKCk7CisgICAgICAgICAgICBp
ZiAoIW9wdGlvbmFsUmVjb3JkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgpLCBbXShjb25zdCBEYXRhJikg
eyB9KTsKKyAgICAgICAgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF1
dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkp
CisgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3VicmVzb3VyY2UocmVzb3VyY2VL
ZXkpOworfQorCit9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmJjNTk5YTQzMmFkY2JhMTVlYzBmY2Y4ODI5OTQzNDVhODNiMzlkNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyX2gKKyNkZWZp
bmUgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisKKyNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZSB7CisKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoU3RvcmFnZSYpOworICAgIH5T
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyTG9hZCh1aW50NjRf
dCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpOworCitwcml2YXRlOgorICAgIFN0b3Jh
Z2UmIG1fc3RvcmFnZTsKKworICAgIGNsYXNzIFBlbmRpbmdGcmFtZUxvYWQ7CisgICAgdXNpbmcg
R2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRf
dCAvKndlYkZyYW1lSUQqLz47CisgICAgSGFzaE1hcDxHbG9iYWxGcmFtZUlELCBzdGQ6OnVuaXF1
ZV9wdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1fcGVuZGluZ0ZyYW1lTG9hZHM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCisKKyNl
bmRpZiAvLyBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDNmNWM5NWFjZWYzNDVkYTlkNGRkNmVhZWQ2MmNlYzNhN2NmNTFkYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSNp
bmNsdWRlICJOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIgotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJyZXNvdXJjZXNUeXBlKCkKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHJlc291cmNlKCJzdWJyZXNvdXJjZXMiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gcmVzb3VyY2U7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkK
LXsKLSAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNU
eXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNlS2V5LmlkZW50aWZpZXIoKSk7Ci19
Ci0KLWNsYXNzIFNwZWN1bGF0aXZlTG9hZGVyOjpQZW5kaW5nRnJhbWVMb2FkIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQZW5kaW5nRnJhbWVMb2FkKGNvbnN0
IEtleSYgbWFpblJlc291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIDogbV9tYWluUmVzb3VyY2VLZXkobWFpblJlc291cmNlS2V5KQotICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICwg
bV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsg
aWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9jb21wbGV0aW9uSGFuZGxl
cigpOyB9KQotICAgIHsgfQotCi0gICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlKGNvbnN0IEtl
eSYgc3VicmVzb3VyY2VLZXkpCi0gICAgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgICAgICBtX3N1YnJlc291cmNlS2V5cy5hZGQoc3VicmVzb3VyY2VLZXkpOwotICAg
ICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwotICAgIH0KLQotICAgIE9w
dGlvbmFsPFN0b3JhZ2U6OlJlY29yZD4gZW5jb2RlQXNTdWJyZXNvdXJjZXNSZWNvcmQoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKG1fc3Vi
cmVzb3VyY2VLZXlzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAg
ICAgYXV0byBzdWJyZXNvdXJjZXNTdG9yYWdlS2V5ID0gbWFrZVN1YnJlc291cmNlc0tleShtX21h
aW5SZXNvdXJjZUtleSk7Ci0gICAgICAgIFZlY3RvcjxLZXk+IHN1YnJlc291cmNlS2V5czsKLSAg
ICAgICAgY29weVRvVmVjdG9yKG1fc3VicmVzb3VyY2VLZXlzLCBzdWJyZXNvdXJjZUtleXMpOwot
Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQ
cmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTYXZpbmcgdG8gZGlzayBsaXN0IG9mIHN1YnJl
c291cmNlcyBmb3IgJyVzJzoiLCBtX21haW5SZXNvdXJjZUtleS5pZGVudGlmaWVyKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2VLZXkgOiBzdWJyZXNvdXJj
ZUtleXMpCi0gICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5n
LCAiKE5ldHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNlOiAnJXMnLiIsIHN1YnJlc291cmNlS2V5
LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSNlbmRpZgotCi0gICAgICAgIHJldHVybiBT
dWJyZXNvdXJjZXNFbnRyeShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBXVEY6Om1vdmUoc3VicmVz
b3VyY2VLZXlzKSkuZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7Ci0gICAgfQotCi0gICAgdm9pZCBt
YXJrQXNDb21wbGV0ZWQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBLZXkgbV9tYWluUmVzb3VyY2VLZXk7Ci0gICAgSGFzaFNldDxLZXk+IG1fc3VicmVzb3VyY2VL
ZXlzOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAg
IEh5c3RlcmVzaXNBY3Rpdml0eSBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7Ci19OwotCi1TcGVj
dWxhdGl2ZUxvYWRlcjo6U3BlY3VsYXRpdmVMb2FkZXIoU3RvcmFnZSYgc3RvcmFnZSkKLSAgICA6
IG1fc3RvcmFnZShzdG9yYWdlKQotewotfQotCi1TcGVjdWxhdGl2ZUxvYWRlcjo6flNwZWN1bGF0
aXZlTG9hZGVyKCkKLXsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUxvYWRlcjo6cmVnaXN0ZXJMb2Fk
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGZyYW1lS2V5ID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZUlELCB3
ZWJGcmFtZUlEKTsKLSAgICBhdXRvIGlzTWFpblJlc291cmNlID0gcmVxdWVzdC5yZXF1ZXN0ZXIo
KSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjsKLSAgICBpZiAoaXNNYWluUmVz
b3VyY2UpIHsKLSAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUgYXMg
Y29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxv
YWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUtleSkpCi0gICAgICAgICAgICBwZW5k
aW5nRnJhbWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKLQotICAgICAgICAvLyBTdGFydCB0cmFj
a2luZyBsb2FkcyBpbiB0aGlzIGZyYW1lLgotICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUtleSwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtl
eSwgW3RoaXMsIGZyYW1lS2V5XSgpIHsKLSAgICAgICAgICAgIGF1dG8gZnJhbWVMb2FkID0gbV9w
ZW5kaW5nRnJhbWVMb2Fkcy50YWtlKGZyYW1lS2V5KTsKLSAgICAgICAgICAgIGF1dG8gb3B0aW9u
YWxSZWNvcmQgPSBmcmFtZUxvYWQtPmVuY29kZUFzU3VicmVzb3VyY2VzUmVjb3JkKCk7Ci0gICAg
ICAgICAgICBpZiAoIW9wdGlvbmFsUmVjb3JkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShvcHRpb25hbFJlY29yZC52YWx1ZSgpLCBbXShjb25z
dCBEYXRhJikgeyB9KTsKLSAgICAgICAgfSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChm
cmFtZUtleSkpCi0gICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnJlZ2lzdGVyU3VicmVzb3VyY2Uo
cmVzb3VyY2VLZXkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxB
VElWRV9SRVZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJkZTMzN2UxMWJiMDA4OTUzMjFlODE1OTg2
ZTIwZmJmYWJiMjFjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXJfaAotI2RlZmluZSBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlcl9oCi0KLSNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0KLSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7Ci0KLWNsYXNzIFNwZWN1bGF0aXZlTG9hZGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBT
cGVjdWxhdGl2ZUxvYWRlcihTdG9yYWdlJik7Ci0gICAgflNwZWN1bGF0aXZlTG9hZGVyKCk7Ci0K
LSAgICB2b2lkIHJlZ2lzdGVyTG9hZCh1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtleSYgcmVzb3Vy
Y2VLZXkpOwotCi1wcml2YXRlOgotICAgIFN0b3JhZ2UmIG1fc3RvcmFnZTsKLQotICAgIGNsYXNz
IFBlbmRpbmdGcmFtZUxvYWQ7Ci0gICAgdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1
aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Ci0gICAgSGFz
aE1hcDxHbG9iYWxGcmFtZUlELCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1f
cGVuZGluZ0ZyYW1lTG9hZHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0KLSNlbmRpZiAvLyBOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmYyZWMxYzRjYmY1ZDk0YTNlNGM1YTkxODljZWYxMDI0ZGIyZjJm
ZC4uNWE5ZDdhZWQ4ODNlNGJmOWZmYjFiNjBmYTBkZmQ1MGQxMmI1MjIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE4MCw4
ICsxMTgwLDggQEAKIAkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi87
IH07CiAJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmggKi87IH07CiAJCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJy
ZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzEwNDI4QTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3Vy
Y2VzRW50cnkuY3BwICovOyB9OwotCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRlci5oICovOyB9OwotCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyog
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLzsgfTsKKwkJODMyQUUyNTIxQkUyRThDRDAw
RkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZB
QUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87IH07CisJCTgz
MkFFMjUzMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
MkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgg
Ki87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRC
MjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovOyB9Owog
CQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlE
MUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9OwpA
QCAtMzQyMCw4ICszNDIwLDggQEAKIAkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzEw
NDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDQyOEExQkQ2QjY2RjAw
QTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEw
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MTAxQTg0MkM4
NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
NTg3LDggKzc1ODcsOCBAQAogCQkJCUU0MkUwNjBEMUFBNzUwRTUwMEIxMTY5OSAvKiBOZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDb2NvYS5tbSAqLywKIAkJCQlFNDQzNkVDMDFBMENGREIyMDBFQUQyMDQg
LyogTmV0d29ya0NhY2hlS2V5LmNwcCAqLywKIAkJCQlFNDQzNkVDMTFBMENGREIyMDBFQUQyMDQg
LyogTmV0d29ya0NhY2hlS2V5LmggKi8sCi0JCQkJODMyQUUyNTExQkUyRThDRDAwRkFBRTEwIC8q
IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZGVyLmNwcCAqLywKLQkJCQk4MzJBRTI1MDFCRTJF
OENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuaCAqLywKKwkJCQk4
MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgKi8sCisJCQkJODMyQUUyNTAxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLywKIAkJCQk4M0JEQ0NCODFBQzVGREI2MDAzRjY0
NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi8sCiAJCQkJODM0QjI1MTAxQTg0MkM4
NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLywKIAkJCQlFNDQzNkVDMzFB
MENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8sCkBAIC03NzMyLDcg
Kzc3MzIsNyBAQAogCQkJCTc1QThEMkUxMTg3REVDMUEwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lv
blN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRENjY0ODE4QTJEOTFBMDBEODJFMjEgLyog
QVBJVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUx
MCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREI4NkMxMTIwMEZCOTcwMDcyNTRCRSAvKiBB
UElVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1QzM1QSAvKiBB
UElVUkxSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwQTFEMjEyMkRENTVFMDBDQzhD
NTAgLyogQVBJVVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTU0Niw3ICs5NTQ2LDcg
QEAKIAkJCQk3Qzg5RDI5NzFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzQTczQ0YxQTQ4QzdGMTAwNzIzMUIzIC8qIEFQSVBh
Z2VHcm91cEhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUMxMzM2RTE4NTY1RDJCMDBG
M0VDMDUgLyogQVBJUGFnZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MzJBRTI1MzFC
RTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMyQUUyNTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNEQyMUYxQTQ5
MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRUQzQzFEQzFCNDQ3RUFDMDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTgyRDVCNDFCRTZCRDI1MDA4N0E3
Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>