<?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>169304</bug_id>
          
          <creation_ts>2017-03-07 13:53:31 -0800</creation_ts>
          <short_desc>Write tests for WKUIDelegatePrivate media capture methods.</short_desc>
          <delta_ts>2017-05-16 11:08:32 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>171292</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Gold">agold</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>agold</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284543</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Gold">agold</who>
    <bug_when>2017-03-07 13:53:31 -0800</bug_when>
    <thetext>The WKUIDelegatePrivate methods relating to media capture need tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286826</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-11 13:35:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/30994789&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289121</commentid>
    <comment_count>2</comment_count>
      <attachid>304813</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 13:22:00 -0700</bug_when>
    <thetext>Created attachment 304813
Remove incorrect patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309200</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-05-16 11:08:32 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 171292 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>304813</attachid>
            <date>2017-03-17 13:22:00 -0700</date>
            <delta_ts>2017-03-17 13:22:54 -0700</delta_ts>
            <desc>Remove incorrect patch.</desc>
            <filename>video_orientation_patch_5.txt</filename>
            <type>text/plain</type>
            <size>38314</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE3LTAzLTE3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q29tcGVuc2F0ZSBmb3IgdmlkZW8gY2FwdHVyZSBvcmllbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MzEzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMDk5NDc4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRoZSBtb2NrIHZpZGVvIHNvdXJjZSBkb2Vzbid0IHN1
cHBvcnQgcm90YXRpb24uIFRlc3Qgd2lsbCBiZSBhZGRlZCB3aGVuIHRoaXMKKyAgICAgICAgaXMg
Zml4ZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTgyMi4K
KworICAgICAgICBBZGQgJ29yaWVudGF0aW9uJyBhbmQgJ21pcnJvcmVkJyBhdHRyaWJ1dGVzIHRv
IE1lZGlhU2FtcGxlCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjp2aWRlb09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2FtcGxlOjp2aWRlb01pcnJvcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmg6CisKKyAgICAgICAgQSB2aWRl
byBzYW1wbGUgY2FuIGJlIHJvdGF0ZWQgYW5kL29yIG1pcnJvcmVkLCBzbyB0aGUgdmlkZW8gbGF5
ZXIgbWF5IG5lZWQgdG8gYmUgcm90YXRlZAorICAgICAgICBhbmQgcmVzaXplZCBmb3IgZGlzcGxh
eS4gV2UgZG9uJ3Qgd2FudCBleHBvc2UgdGhpcyBpbmZvcm1hdGlvbiB0byB0aGUgcmVuZGVyZXIs
IHNvIGFsbG9jYXRlCisgICAgICAgIHJldHVybiBhIGdlbmVyaWMgQ0FMYXllciBhcyB0aGUgcGxh
eWVyJ3MgcGxhdGZvckxheWVyLCBhbmQgYWRkIHRoZSB2aWRlbyBsYXllciBhcyBhIHN1YmxheWVy
CisgICAgICAgIHNvIHdlIGNhbiBhZGp1c3QgaXQgdG8gZGlzcGxheSBjb3JyZWN0bHkuIEFkZCBh
biBlbnVtIGZvciBwbGF5YmFjayBzdGF0ZSBhcyB3ZWxsIGFzIGRpc3BsYXkKKyAgICAgICAgbW9k
ZSBzbyB3ZSBjb3JyZWN0bHkgZGlzcGxheSBhIGJsYWNrIGZyYW1lIHdoZW4gdmlkZW8gZnJhbWVz
IGFyZSBhdmFpbGFibGUgYnV0IHBsYXliYWNrIGhhcworICAgICAgICBub3QgeWV0IHN0YXJ0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIg
aW5pdFdpdGhQYXJlbnQ6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hh
bmdlTGlzdGVuZXIgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXJzXSk6CisgICAgICAgICgtW1dl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyc10p
OiBEaXR0by4KKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5l
ciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OnJ1bldpdGhvdXRBbmlt
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3Vy
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZURpc3BsYXlNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudE1lZGlhVGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjdGl2ZVN0
YXR1c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVSZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c2V0U2hvdWxkQnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllckJvdW5kc0No
YW5nZWQpOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVy
IGJlZ2luT2JzZXJ2aW5nTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyOl0pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjplbnN1cmVMYXllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNob3VsZEJlUGxheWluZyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKTogQWRkIGNvbm5l
Y3Rpb24gcGFyYW1ldGVyIHNvIHdlIGNhbiBnZXQgdGhlCisgICAgICAgIHZpZGVvIG9yaWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRw
dXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbik6CisKKyAgICAgICAgUGFzcyBz
YW1wbGUgb3JpZW50YXRpb24gdG8gbGlid2VicnRjLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZW5kRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTAzLTE3ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBXZWJHUFU6IGJ1aWxkIGZpeGVzIGZvciBub24tQ29jb2EgcGxh
dGZvcm1zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHJldmlzaW9u
IDIxNDEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDYgKzc3LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNhbXBsZUZs
YWdzIGZsYWdzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSA9IDA7CiAKKyAgICBlbnVtIGNsYXNzIFZpZGVvT3JpZW50YXRpb24geworICAg
ICAgICBVbmtub3duLAorICAgICAgICBQb3J0cmFpdCwKKyAgICAgICAgUG9ydHJhaXRVcHNpZGVE
b3duLAorICAgICAgICBMYW5kc2NhcGVSaWdodCwKKyAgICAgICAgTGFuZHNjYXBlTGVmdCwKKyAg
ICB9OworICAgIHZpcnR1YWwgVmlkZW9PcmllbnRhdGlvbiB2aWRlb09yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9PcmllbnRhdGlvbjo6VW5rbm93bjsgfQorICAgIHZpcnR1YWwgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGJvb2wgaXNT
eW5jKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzU3luYzsgfQogICAgIGJvb2wgaXNOb25E
aXNwbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIElzTm9uRGlzcGxheWluZzsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFTYW1wbGVBVkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCShyZXZpc2lvbiAyMTQx
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFTYW1wbGVBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
TWVkaWFTYW1wbGVBVkZPYmpDIGZpbmFsIDogcHVibGljIAogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBp
bnQgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2Ft
cGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3Jl
YXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbWljU3RyaW5nIHRyYWNrSUQpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgdHJhY2tJRCkpOyB9
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNh
bXBsZSkpOyB9CisgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNh
bXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBWaWRl
b09yaWVudGF0aW9uOjpVbmtub3duLCBib29sIG1pcnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgb3JpZW50YXRpb24sIG1pcnJv
cmVkKSk7IH0KICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlSW1h
Z2VTYW1wbGUoUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxl
QVZGT2JqQz4gY3JlYXRlSW1hZ2VTYW1wbGUoVmVjdG9yPHVpbnQ4X3Q+JiYsIHVuc2lnbmVkIGxv
bmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIApAQCAtNTYsNiArNTYsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgLCBtX2lkKFN0cmluZzo6Zm9ybWF0KCIlZCIsIHRyYWNrSUQpKQogICAg
IHsKICAgICB9CisgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZSwgVmlkZW9PcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgYm9vbCBtaXJyb3JlZCkKKyAgICAgICAg
OiBtX3NhbXBsZShzYW1wbGUpCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
KyAgICAgICAgLCBtX21pcnJvcmVkKG1pcnJvcmVkKQorICAgIHsKKyAgICB9CisKICAgICB2aXJ0
dWFsIH5NZWRpYVNhbXBsZUFWRk9iakMoKSB7IH0KIAogICAgIE1lZGlhVGltZSBwcmVzZW50YXRp
b25UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC03OSw4ICs4NiwxMyBAQCBwcml2YXRlOgogICAg
IHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZp
ZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lKSBvdmVycmlkZTsKICAgICBSZWY8
TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICBWaWRlb09yaWVudGF0aW9uIHZpZGVvT3JpZW50YXRpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9taXJyb3JlZDsgfQorCiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBtX3NhbXBsZTsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBWaWRlb09yaWVudGF0
aW9uIG1fb3JpZW50YXRpb24geyBWaWRlb09yaWVudGF0aW9uOjpVbmtub3duIH07CisgICAgYm9v
bCBtX21pcnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5oCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3Jt
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC03NSwxMCArNzYsMTUgQEAgcHVibGljOgog
CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IGNyZWF0
ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQog
Ci0gICAgdm9pZCBlbnN1cmVMYXllcigpOwotICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CisgICAg
dm9pZCBlbnN1cmVMYXllcnMoKTsKKyAgICB2b2lkIGRlc3Ryb3lMYXllcnMoKTsKIAogICAgIHZv
aWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKTsKKyAg
ICB2b2lkIGxheWVyRXJyb3JEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKTsK
KyAgICB2b2lkIGJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKKworICAgIFBsYXRmb3Jt
TGF5ZXIqIGRpc3BsYXlMYXllcigpOworICAgIFBsYXRmb3JtTGF5ZXIqIGJhY2tncm91bmRMYXll
cigpOwogCiBwcml2YXRlOgogICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQpAQCAt
OTksNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKLSAgICBib29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgcGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIXBsYXlpbmcoKTsg
fQogCiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TXV0
ZWQoYm9vbCkgb3ZlcnJpZGU7CkBAIC0xNTYsNyArMTYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgZW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2VuZGVkOyB9CiAKLSAgICBib29s
IHNob3VsZEJlUGxheWluZygpIGNvbnN0OworICAgIHZvaWQgc2V0U2hvdWxkQnVmZmVyRGF0YShi
b29sKSBvdmVycmlkZTsKIAogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIGN1cnJlbnRSZWFk
eVN0YXRlKCk7CiAgICAgdm9pZCB1cGRhdGVSZWFkeVN0YXRlKCk7CkBAIC0xNzcsNiArMTgzLDEz
IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVEaXNwbGF5TW9kZSgpOwogICAgIHZvaWQgdXBk
YXRlQ3VycmVudEZyYW1lSW1hZ2UoKTsKIAorICAgIGVudW0gY2xhc3MgUGxheWJhY2tTdGF0ZSB7
CisgICAgICAgIE5vbmUsCisgICAgICAgIFBsYXlpbmcsCisgICAgICAgIFBhdXNlZCwKKyAgICB9
OworICAgIGJvb2wgcGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTdGF0ZSA9PSBQ
bGF5YmFja1N0YXRlOjpQbGF5aW5nOyB9CisKICAgICAvLyBNZWRpYVN0cmVhbVByaXZhdGU6Ok9i
c2VydmVyCiAgICAgdm9pZCBhY3RpdmVTdGF0dXNDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CkBAIC0yMDAsNiArMjEzLDggQEAg
cHJpdmF0ZToKIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIo
KSBmaW5hbDsKIAorICAgIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtYXRpb25NYXRy
aXgoTWVkaWFTYW1wbGUmKTsKKwogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIg
fTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9t
ZWRpYVN0cmVhbVByaXZhdGU7CkBAIC0yMDgsNiArMjIzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
dGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0No
YW5nZUxpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4g
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fYmFja2dyb3VuZExheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gbV9jbG9jazsK
IAogICAgIE1lZGlhVGltZSBtX3BhdXNlZFRpbWU7CkBAIC0yMzIsMTIgKzI0OCwxOCBAQCBwcml2
YXRlOgogICAgIEZsb2F0U2l6ZSBtX2ludHJpbnNpY1NpemU7CiAgICAgZmxvYXQgbV92b2x1bWUg
eyAxIH07CiAgICAgRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZSB7IE5vbmUgfTsKKyAgICBQbGF5
YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IFBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKKyAgICBN
ZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbiBtX3ZpZGVvT3JpZW50YXRpb24geyBNZWRpYVNh
bXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6VW5rbm93biB9OworICAgIENHQWZmaW5lVHJhbnNmb3Jt
IG1fdmlkZW9UcmFuc2Zvcm07CisgICAgYm9vbCBtX3ZpZGVvTWlycm9yZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0V2ZXJFbnF1ZXVl
ZFZpZGVvRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0No
ZWNrIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzcGxheUZpcnN0VmlkZW9GcmFtZSB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3RyYW5zZm9ybUlzVmFsaWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV92aWRlb1NpemVDaGFuZ2VkOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDIwICs1NywyNCBAQCBT
T0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvCiAKIFNPRlRfTElOS19DTEFT
U19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogCi0j
ZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCBnZXRBVkF1ZGlvVGltZVBp
dGNoQWxnb3JpdGhtU3BlY3RyYWwoKQotI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGht
VmFyaXNwZWVkIGdldEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQoKQorU09GVF9M
SU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKKwor
I2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGdldEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QoKQorI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0RmlsbCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpCisjZGVmaW5l
IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgp
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiBfcGFyZW50OwotICAgIFZlY3RvcjxSZXRhaW5QdHI8QVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwogfQogCiAtIChpZClpbml0V2l0aFBh
cmVudDooTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiljYWxsYmFjazsKIC0g
KHZvaWQpaW52YWxpZGF0ZTsKLS0gKHZvaWQpYmVnaW5PYnNlcnZpbmdMYXllcjooQVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsKLS0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVyOihB
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqKWxheWVyOworLSAodm9pZCliZWdpbk9ic2Vydmlu
Z0xheWVyczsKKy0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVyczsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKQEAgLTgxLDYgKzg1
LDcgQEAgLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZQogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgX3BhcmVudCA9IHBhcmVudDsKKwogICAgIHJldHVybiBzZWxmOwog
fQogCkBAIC05MiwzMSArOTcsMzUgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKHZvaWQpaW52YWxp
ZGF0ZQogewotICAgIGZvciAoYXV0byYgbGF5ZXIgOiBfbGF5ZXJzKQotICAgICAgICBbbGF5ZXIg
cmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07Ci0gICAgX2xheWVycy5j
bGVhcigpOworICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXllcnNdOwogCiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKIAogICAg
IF9wYXJlbnQgPSBudWxscHRyOwogfQogCi0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXI6KEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKilsYXllcgorLSAodm9pZCliZWdpbk9ic2VydmluZ0xh
eWVycwogewogICAgIEFTU0VSVChfcGFyZW50KTsKLSAgICBBU1NFUlQoIV9sYXllcnMuY29udGFp
bnMobGF5ZXIpKTsKKyAgICBBU1NFUlQoX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOworICAgIEFT
U0VSVChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSk7CiAKLSAgICBfbGF5ZXJzLmFwcGVuZChs
YXllcik7Ci0gICAgW2xheWVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIg
b3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Cisg
ICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpA
InN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmls
XTsKKyAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQ
YXRoOkAiZXJyb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0
Om5pbF07CisgICAgW19wYXJlbnQtPmJhY2tncm91bmRMYXllcigpIGFkZE9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpAImJvdW5kcyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3
IGNvbnRleHQ6bmlsXTsKIH0KIAotLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKilsYXllcgorLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzCiB7
Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwotICAgIEFTU0VSVChfbGF5ZXJzLmNvbnRhaW5zKGxheWVy
KSk7CisgICAgaWYgKCFfcGFyZW50KQorICAgICAgICByZXR1cm47CiAKLSAgICBbbGF5ZXIgcmVt
b3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07Ci0gICAgX2xheWVycy5yZW1v
dmUoX2xheWVycy5maW5kKGxheWVyKSk7CisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigp
KSB7CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxm
IGZvcktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigp
IHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQorICAgIGlm
IChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSkKKyAgICAgICAgW19wYXJlbnQtPmJhY2tncm91
bmRMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImJvdW5kcyJdOwogfQog
CiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9i
amVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZv
aWQgKiljb250ZXh0CkBAIC0xMjUsMjMgKzEzNCw0NyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZv
cktleVBhdGg6KE5TU3RyaW5nCiAgICAgVU5VU0VEX1BBUkFNKGtleVBhdGgpOwogICAgIEFTU0VS
VChfcGFyZW50KTsKIAotICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5n
ZUxpc3RlbmVyPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKICAgICBpZiAoW29iamVjdCBpc0tpbmRP
ZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKICAgICAgICAg
UmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAqKW9iamVjdDsKLSAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBz
dGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAg
ICAgICBBU1NFUlQobGF5ZXIuZ2V0KCkgPT0gX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwogCi0g
ICAgICAgIEFTU0VSVChfbGF5ZXJzLmNvbnRhaW5zKGxheWVyLmdldCgpKSk7Ci0gICAgICAgIEFT
U0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSk7CisgICAgICAgIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgeworICAgICAgICAgICAgUmV0YWlu
UHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFu
Z2VOZXdLZXldOworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUoc2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIHN0YXR1cyA9IFdURk1vdmUo
c3RhdHVzKV0geworICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpLCBsYXllciA9IFdURk1vdmUo
bGF5ZXIpXSB7Ci0gICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxheWVyLmdldCgpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIHByb3RlY3RlZFNl
bGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxheWVyLmdldCgpKTsKLSAgICAgICAg
fSk7CisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7Cisg
ICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JL
ZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShzZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwg
c3RhdHVzID0gV1RGTW92ZShzdGF0dXMpXSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0
ZWRTZWxmLT5fcGFyZW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllckVycm9yRGlkQ2hhbmdlKGxheWVy
LmdldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VO
b3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoKENBTGF5ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkpIHsK
KyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShzZWxmKV0g
eworICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3Bh
cmVudC0+YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICB9IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiBAZW5kCiAKQEAgLTE3Nyw3ICsyMTAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6On5NCiAgICAgICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIoKnRo
aXMpOwogICAgIH0KIAotICAgIGRlc3Ryb3lMYXllcigpOworICAgIGRlc3Ryb3lMYXllcnMoKTsK
IAogICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRhdGVdOwogCkBAIC0yNjgsNiAr
MzAxLDQ2IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUEKICAgICBy
ZXR1cm4gdGltZWxpbmVPZmZzZXQ7CiB9CiAKK0NHQWZmaW5lVHJhbnNmb3JtIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChNZWRp
YVNhbXBsZSYgc2FtcGxlKQoreworICAgIGlmIChtX3RyYW5zZm9ybUlzVmFsaWQpCisgICAgICAg
IHJldHVybiBtX3ZpZGVvVHJhbnNmb3JtOworCisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyID0gc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyOwor
ICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVm
ZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZUJ1ZmZlcikpOworICAg
IHNpemVfdCB3aWR0aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcik7CisgICAg
c2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpOworICAg
IGlmICghd2lkdGggfHwgIWhlaWdodCkKKyAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHk7CisKKyAgICBBU1NFUlQobV92aWRlb09yaWVudGF0aW9uID49IE1lZGlhU2FtcGxl
OjpWaWRlb09yaWVudGF0aW9uOjpVbmtub3duKTsKKyAgICBBU1NFUlQobV92aWRlb09yaWVudGF0
aW9uIDw9IE1lZGlhU2FtcGxlOjpWaWRlb09yaWVudGF0aW9uOjpMYW5kc2NhcGVMZWZ0KTsKKwor
ICAgIC8vIFVua25vd24sIFBvcnRyYWl0LCBQb3J0cmFpdFVwc2lkZURvd24sIExhbmRzY2FwZVJp
Z2h0LCBMYW5kc2NhcGVMZWZ0LAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgZmxvYXQg
c2Vuc29yQW5nbGVbXSA9IHsgMCwgMCwgMTgwLCA5MCwgMjcwIH07CisjZWxzZQorICAgIHN0YXRp
YyBmbG9hdCBzZW5zb3JBbmdsZVtdID0geyAxODAsIDE4MCwgMCwgOTAsIDI3MCB9OworI2VuZGlm
CisgICAgZmxvYXQgcm90YXRpb24gPSBzZW5zb3JBbmdsZVtzdGF0aWNfY2FzdDxpbnQ+KG1fdmlk
ZW9PcmllbnRhdGlvbildOworICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9y
bU1ha2VSb3RhdGlvbihyb3RhdGlvbiAqIE1fUEkgLyAxODApOworCisgICAgaWYgKHNhbXBsZS52
aWRlb01pcnJvcmVkKCkpCisgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybVNjYWxlKG1fdmlkZW9UcmFuc2Zvcm0sIC0xLCAxKTsKKworICAgIG1fdHJhbnNmb3JtSXNW
YWxpZCA9IHRydWU7CisgICAgcmV0dXJuIG1fdmlkZW9UcmFuc2Zvcm07Cit9CisKK3N0YXRpYyB2
b2lkIHJ1bldpdGhvdXRBbmltYXRpb25zKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikK
K3sKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5p
bWF0aW9uRHVyYXRpb246MF07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6
WUVTXTsKKyAgICBmdW5jdGlvbigpOworICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Cit9CisK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9T
YW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxl
KQogewogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOwpA
QCAtMjk2LDYgKzM2OSwyNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqCiAgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlIik7CiAK
ICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKKyAgICAgICAgaWYgKHNhbXBs
ZS52aWRlb09yaWVudGF0aW9uKCkgIT0gbV92aWRlb09yaWVudGF0aW9uIHx8IHNhbXBsZS52aWRl
b01pcnJvcmVkKCkgIT0gbV92aWRlb01pcnJvcmVkKSB7CisgICAgICAgICAgICBtX3ZpZGVvT3Jp
ZW50YXRpb24gPSBzYW1wbGUudmlkZW9PcmllbnRhdGlvbigpOworICAgICAgICAgICAgbV92aWRl
b01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAgICAgICAgICAgIG1fdHJhbnNm
b3JtSXNWYWxpZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fdmlkZW9TaXpl
Q2hhbmdlZCB8fCAhbV90cmFuc2Zvcm1Jc1ZhbGlkKSB7CisgICAgICAgICAgICBydW5XaXRob3V0
QW5pbWF0aW9ucyhbdGhpcywgJnNhbXBsZV0geworICAgICAgICAgICAgICAgIGF1dG8gYmFja2dy
b3VuZEJvdW5kcyA9IG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kczsKKyAgICAgICAgICAg
ICAgICBhdXRvIHZpZGVvQm91bmRzID0gYmFja2dyb3VuZEJvdW5kczsKKyAgICAgICAgICAgICAg
ICBpZiAobV92aWRlb09yaWVudGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb09yaWVudGF0aW9u
OjpMYW5kc2NhcGVSaWdodCB8fCBtX3ZpZGVvT3JpZW50YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZp
ZGVvT3JpZW50YXRpb246OkxhbmRzY2FwZUxlZnQpCisgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3dhcCh2aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2aWRlb0JvdW5kcy5zaXplLmhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYm91bmRzID0g
dmlkZW9Cb3VuZHM7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCkucG9zaXRpb24gPSB7IGJhY2tncm91bmRCb3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJhY2tn
cm91bmRCb3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hZmZpbmVUcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cml4KHNhbXBsZSk7CisgICAgICAgICAgICAgICAgbV92aWRlb1NpemVDaGFuZ2VkID0g
ZmFsc2U7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewogICAgICAg
ICAgICAgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZSwg
c2FtcGxlKTsKICAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRl
b0RhdGEoKTsKQEAgLTMzNCw2ICs0MjYsMTEgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQ
bGF5ZXJQcml2YXRlTQogICAgIHJldHVybiBudWxscHRyOwogfQogCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bGF5ZXJFcnJvckRpZENoYW5nZShBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciogbGF5ZXIpCit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKCVwKSAtIGVycm9y
ID0gJXMiLCB0aGlzLCBbW2xheWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3Ry
aW5nXSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjps
YXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIpCiB7
CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjps
YXllclN0YXR1c0RpZENoYW5nZSglcCkgLSBzdGF0dXMgPSAlZCIsIHRoaXMsIChpbnQpbGF5ZXIu
c3RhdHVzKTsKQEAgLTM1OSw3ICs0NTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVt
b3ZlSW1hZ2VdOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6ZW5zdXJlTGF5ZXIoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVuc3VyZUxheWVycygpCiB7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KQogICAgICAgICByZXR1cm47CkBAIC0zNzMsMzAgKzQ3MCw0NCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRD
R0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOworICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3RGaWxsOworCisgICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBhZG9wdE5TKFtb
Q0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJhY2tn
cm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICBtX2JhY2tncm91
bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKKworICAgIFtt
X3N0YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXJzXTsKKworICAgIFttX2Jh
Y2tncm91bmRMYXllciBhZGRTdWJsYXllcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KV07CisKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNl
dE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9iYWNrZ3JvdW5kTGF5ZXIgc2V0TmFtZTpAIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBwYXJlbnQiXTsKICNlbmRpZgotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICBbbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpXTsKIAogICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICAKICNp
ZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1l
ZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX2JhY2tncm91bmRMYXllci5nZXQoKSwgc25h
cHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3Qo
KSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpkZXN0cm95TGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0
ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpIHsKICAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAg
ICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXI6bV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwogICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgICAgICBbbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgZmx1c2hdOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9
IG51bGxwdHI7CiAgICAgfQorICAgIG1fYmFja2dyb3VuZExheWVyID0gbnVsbHB0cjsKIAogICAg
IHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICAKQEAgLTQ0Niw3ICs1NTcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYW5jZWxMb2FkKCVwKSIsIHRoaXMp
OwotICAgIGlmIChtX3BsYXlpbmcpCisgICAgaWYgKHBsYXlpbmcoKSkKICAgICAgICAgcGF1c2Uo
KTsKIH0KIApAQCAtNDU3LDE1ICs1NjgsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGlmICghbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQorICAgIGlmICghbV9i
YWNrZ3JvdW5kTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKQogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+dmlkZW9J
bmxpbmVMYXllcigpOwogI2Vsc2UKKyAgICByZXR1cm4gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCk7
CisjZW5kaWYKK30KIAorUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpkaXNwbGF5TGF5ZXIoKQorewogICAgIHJldHVybiBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKTsKLSNlbmRpZgorfQorCitQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllcigpCit7CisgICAgcmV0
dXJuIG1fYmFja2dyb3VuZExheWVyLmdldCgpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OkRpc3BsYXlNb2RlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6Y3VycmVudERpc3BsYXlNb2RlKCkgY29uc3QKQEAgLTQ3NCwxNiArNTk0LDE5IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGkKICAgICAgICAgcmV0dXJu
IE5vbmU7CiAKICAgICBpZiAoYXV0byogdHJhY2sgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0
aXZlVmlkZW9UcmFjaygpKSB7Ci0gICAgICAgIGlmICghbV9zaG91bGREaXNwbGF5Rmlyc3RWaWRl
b0ZyYW1lIHx8ICF0cmFjay0+ZW5hYmxlZCgpIHx8IHRyYWNrLT5tdXRlZCgpKQorICAgICAgICBp
ZiAoIXRyYWNrLT5lbmFibGVkKCkgfHwgdHJhY2stPm11dGVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gUGFpbnRJdEJsYWNrOwogICAgIH0KIAotICAgIGlmIChtX3BsYXlpbmcpIHsKKyAgICBpZiAo
cGxheWluZygpKSB7CiAgICAgICAgIGlmICghbV9tZWRpYVN0cmVhbVByaXZhdGUtPmlzUHJvZHVj
aW5nRGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIFBhdXNlZEltYWdlOwogICAgICAgICByZXR1
cm4gTGl2ZVByZXZpZXc7CiAgICAgfQogCisgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBQbGF5
YmFja1N0YXRlOjpOb25lKQorICAgICAgICByZXR1cm4gUGFpbnRJdEJsYWNrOworCiAgICAgcmV0
dXJuIFBhdXNlZEltYWdlOwogfQogCkBAIC00OTMsMTEgKzYxNiwxMyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBpZiAoZGlzcGxheU1vZGUgPT0gbV9k
aXNwbGF5TW9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgbV9kaXNwbGF5TW9kZSA9
IGRpc3BsYXlNb2RlOwogCi0gICAgaWYgKG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZSAmJiBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAgZmx1c2hBbmRSZW1vdmVWaWRlb1Nh
bXBsZUJ1ZmZlcnMoKTsKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKKyAg
ICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXNdIHsKKyAgICAgICAgICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9IG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJ
bWFnZTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MDYs
MTAgKzYzMSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiB7
CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpw
bGF5KCVwKSIsIHRoaXMpOwogCi0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IG1fcGxh
eWluZyB8fCBtX2VuZGVkKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBwbGF5aW5n
KCkgfHwgbV9lbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF5aW5nID0gdHJ1ZTsK
KyAgICBtX3BsYXliYWNrU3RhdGUgPSBQbGF5YmFja1N0YXRlOjpQbGF5aW5nOwogICAgIGlmICgh
bV9jbG9jay0+aXNSdW5uaW5nKCkpCiAgICAgICAgIG1fY2xvY2stPnN0YXJ0KCk7CiAKQEAgLTUy
OCwxMSArNjUzLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhdXNlKCVwKSIsIHRoaXMpOwogCi0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFt
X3BsYXlpbmcgfHwgbV9lbmRlZCkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgIXBs
YXlpbmcoKSB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhdXNlZFRpbWUg
PSBjdXJyZW50TWVkaWFUaW1lKCk7Ci0gICAgbV9wbGF5aW5nID0gZmFsc2U7CisgICAgbV9wbGF5
YmFja1N0YXRlID0gUGxheWJhY2tTdGF0ZTo6UGF1c2VkOwogCiAgICAgZm9yIChjb25zdCBhdXRv
JiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkKICAgICAgICAgdHJhY2stPnBhdXNl
KCk7CkBAIC01NDEsMTEgKzY2Niw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmoKICAgICBmbHVzaFJlbmRlcmVycygpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1f
cGxheWluZzsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUoJXApIiwgdGhpcyk7CkBAIC01OTMs
NyArNzEzLDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQQogCiBN
ZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50TWVk
aWFUaW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGxheWluZykKKyAgICBpZiAocGF1c2VkKCkp
CiAgICAgICAgIHJldHVybiBtX3BhdXNlZFRpbWU7CiAKICAgICByZXR1cm4gc3RyZWFtVGltZSgp
OwpAQCAtNjUwLDcgKzc3MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmoKIHsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBib29s
IGVuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKTsKLSAgICAgICAgaWYgKGVu
ZGVkICYmIG1fcGxheWluZykKKyAgICAgICAgaWYgKGVuZGVkICYmIHBsYXlpbmcoKSkKICAgICAg
ICAgICAgIHBhdXNlKCk7CiAKICAgICAgICAgdXBkYXRlUmVhZHlTdGF0ZSgpOwpAQCAtNjcwLDYg
Kzc5MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKKyAgICAgICAg
bV90cmFuc2Zvcm1Jc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3BsYXllcikKICAgICAg
ICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2Vk
KG1fcGxheWVyKTsKICAgICB9KTsKQEAgLTgyNSw3ICs5NDYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2sgIT0g
bV9hY3RpdmVWaWRlb1RyYWNrKQogICAgICAgICAgICAgbV9pbWFnZVBhaW50ZXIucmVzZXQoKTsK
LSAgICAgICAgZW5zdXJlTGF5ZXIoKTsKKyAgICAgICAgZW5zdXJlTGF5ZXJzKCk7CiAgICAgICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVWaWRlb0xheWVy
OwogICAgICAgICBtX3BlbmRpbmdTZWxlY3RlZFRyYWNrQ2hlY2sgPSBmYWxzZTsKICAgICAgICAg
dXBkYXRlRGlzcGxheU1vZGUoKTsKQEAgLTkxNCwxMSArMTAzNSwxMCBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTm9u
ZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwotCiAgICAgaWYgKG1fZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrICYm
IG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAgICB1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpOwogCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwogICAgIGlmIChtX2Rpc3BsYXlNb2RlID09IFBhaW50SXRCbGFjayB8fCAhbV9pbWFnZVBh
aW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpIHsKICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoZGVzdFJlY3Qud2lk
dGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkpKSwgQ29sb3I6OmJsYWNrKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTI2LDE1ICsxMDQ2LDE4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmoKIAogICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlLmdldCgp
OwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwg
Q0dJbWFnZUdldEhlaWdodChpbWFnZSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBkZXN0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJl
Y3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3QoZGVzdFJlY3QpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3Jt
KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwg
dHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2Vk
KCkKIHsKICAgICBpZiAobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2Fu
QmVBY2NlbGVyYXRlZChtX3BsYXllcikpCi0gICAgICAgIGVuc3VyZUxheWVyKCk7CisgICAgICAg
IGVuc3VyZUxheWVycygpOwogICAgIGVsc2UKLSAgICAgICAgZGVzdHJveUxheWVyKCk7CisgICAg
ICAgIGRlc3Ryb3lMYXllcnMoKTsKIH0KIAogU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdApAQCAtOTQzLDExICsxMDY2
LDYgQEAgU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGTwogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNob3VsZEJlUGxheWluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxheWluZyAm
JiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVGdXR1cmVEYXRhOwotfQotCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogewogICAgIGlmIChtX3JlYWR5U3RhdGUg
PT0gcmVhZHlTdGF0ZSkKQEAgLTk2OSw2ICsxMDg3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgp
OwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0U2hv
dWxkQnVmZmVyRGF0YShib29sIHNob3VsZEJ1ZmZlcikKK3sKKyAgICBpZiAoIXNob3VsZEJ1ZmZl
cikKKyAgICAgICAgZmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKK30KKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJyZWRU
YXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTk4Nyw2ICsxMTExLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmoKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7CiB9CiAKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpiYWNrZ3JvdW5kTGF5ZXJCb3Vu
ZHNDaGFuZ2VkKCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3VuZExheWVyIHx8ICFtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92aWRlb1NpemVDaGFu
Z2VkID0gdHJ1ZTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
NyArNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlRnJhbWVyYXRlKENNU2FtcGxlQnVm
ZmVyUmVmKTsKIAogICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZy
b21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmLCBBVkNhcHR1
cmVDb25uZWN0aW9uKikgZmluYWw7Ci0gICAgdm9pZCBwcm9jZXNzTmV3RnJhbWUoUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPik7CisgICAgdm9pZCBwcm9jZXNzTmV3RnJhbWUoUmV0YWluUHRy
PENNU2FtcGxlQnVmZmVyUmVmPiwgUmV0YWluUHRyPEFWQ2FwdHVyZUNvbm5lY3Rpb24+KTsKIAog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJlc2V0OwogICAgIFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQx
Nyw3ICs0MTcsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjp1cGRhdGVGcmFtZXJhCiAg
ICAgcmV0dXJuIGZyYW1lUmF0ZSAhPSBtX2ZyYW1lUmF0ZTsKIH0KIAotdm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
c2FtcGxlQnVmZmVyKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1l
KFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxlQnVmZmVyLCBSZXRhaW5QdHI8QVZD
YXB0dXJlQ29ubmVjdGlvblR5cGU+IGNvbm5lY3Rpb24pCiB7CiAgICAgLy8gSWdub3JlIGZyYW1l
cyBkZWxpdmVyZWQgd2hlbiB0aGUgc2Vzc2lvbiBpcyBub3QgcnVubmluZywgd2Ugd2FudCB0byBo
YW5nIG9udG8gdGhlIGxhc3QgaW1hZ2UKICAgICAvLyBkZWxpdmVyZWQgYmVmb3JlIGl0IHN0b3Bw
ZWQuCkBAIC00MzIsOCArNDMyLDI3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nl
c3NOZXdGcmEKICAgICBtX2J1ZmZlciA9IHNhbXBsZUJ1ZmZlcjsKICAgICBtX2xhc3RJbWFnZSA9
IG51bGxwdHI7CiAKKyAgICBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbiBvcmllbnRhdGlv
biA9IE1lZGlhU2FtcGxlOjpWaWRlb09yaWVudGF0aW9uOjpVbmtub3duOworICAgIHN3aXRjaCAo
W2Nvbm5lY3Rpb24gdmlkZW9PcmllbnRhdGlvbl0pIHsKKyAgICBjYXNlIEFWQ2FwdHVyZVZpZGVv
T3JpZW50YXRpb25Qb3J0cmFpdDoKKyAgICAgICAgb3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9PcmllbnRhdGlvbjo6UG9ydHJhaXQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVZD
YXB0dXJlVmlkZW9PcmllbnRhdGlvblBvcnRyYWl0VXBzaWRlRG93bjoKKyAgICAgICAgb3JpZW50
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6UG9ydHJhaXRVcHNpZGVEb3du
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFWQ2FwdHVyZVZpZGVvT3JpZW50YXRpb25MYW5k
c2NhcGVSaWdodDoKKyAgICAgICAgb3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Pcmll
bnRhdGlvbjo6TGFuZHNjYXBlUmlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVZDYXB0
dXJlVmlkZW9PcmllbnRhdGlvbkxhbmRzY2FwZUxlZnQ6CisgICAgICAgIG9yaWVudGF0aW9uID0g
TWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OkxhbmRzY2FwZUxlZnQ7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGJvb2wgc2V0dGluZ3NDaGFuZ2VkID0gZmFsc2U7CiAgICAgQ01W
aWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERp
bWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgIGlmIChvcmllbnRhdGlvbiA9PSBNZWRp
YVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6TGFuZHNjYXBlUmlnaHQgfHwgb3JpZW50YXRpb24g
PT0gTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OkxhbmRzY2FwZUxlZnQpCisgICAgICAg
IHN0ZDo6c3dhcChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCk7CisKICAgICBp
ZiAoZGltZW5zaW9ucy53aWR0aCAhPSBtX3dpZHRoIHx8IGRpbWVuc2lvbnMuaGVpZ2h0ICE9IG1f
aGVpZ2h0KSB7CiAgICAgICAgIG1fd2lkdGggPSBkaW1lbnNpb25zLndpZHRoOwogICAgICAgICBt
X2hlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0OwpAQCAtNDQzLDE1ICs0NjIsMTYgQEAgdm9pZCBB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYQogICAgIGlmIChzZXR0aW5nc0NoYW5n
ZWQpCiAgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiAKLSAgICB2aWRlb1NhbXBsZUF2YWls
YWJsZShNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShtX2J1ZmZlci5nZXQoKSkpOworICAgIHZp
ZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdl
dCgpLCBvcmllbnRhdGlvbiwgW2Nvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSkpOwogfQogCi12
b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVm
ZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJlT3V0cHV0VHlwZSosIENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlciwgQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKQordm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0
aW9uKEFWQ2FwdHVyZU91dHB1dFR5cGUqLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIs
IEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiBjYXB0dXJlQ29ubmVjdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGJ1ZmZlciA9IHNhbXBsZUJ1ZmZlcjsKKyAgICBSZXRh
aW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvblR5cGU+IGNvbm5lY3Rpb24gPSBjYXB0dXJlQ29ubmVj
dGlvbjsKIAotICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBidWZmZXJdIHsKLSAgICAg
ICAgdGhpcy0+cHJvY2Vzc05ld0ZyYW1lKGJ1ZmZlcik7CisgICAgc2NoZWR1bGVEZWZlcnJlZFRh
c2soW3RoaXMsIGJ1ZmZlciwgY29ubmVjdGlvbl0geworICAgICAgICB0aGlzLT5wcm9jZXNzTmV3
RnJhbWUoYnVmZmVyLCBjb25uZWN0aW9uKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDIxNDEwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw5IEBAIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmUKICAgICBtX3NpbmtzLnJlbW92ZUZpcnN0
KHNpbmspOwogfQogCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEZyYW1l
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRGcmFtZShydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgd2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQogewotICAgIHdlYnJ0Yzo6VmlkZW9GcmFtZSBmcmFtZShidWZmZXIs
IDAsIDAsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCk7CisgICAgd2VicnRjOjpWaWRlb0ZyYW1l
IGZyYW1lKGJ1ZmZlciwgMCwgMCwgcm90YXRpb24pOwogICAgIGZvciAoYXV0byogc2luayA6IG1f
c2lua3MpCiAgICAgICAgIHNpbmstPk9uRnJhbWUoZnJhbWUpOwogfQpAQCAtOTEsNyArOTEsNyBA
QCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6dmlkZW9TCiAgICAgaWYgKG1fbXV0
ZWQgfHwgIW1fZW5hYmxlZCkgewogICAgICAgICBhdXRvIGJsYWNrQnVmZmVyID0gbV9idWZmZXJQ
b29sLkNyZWF0ZUJ1ZmZlcihzZXR0aW5ncy53aWR0aCgpLCBzZXR0aW5ncy5oZWlnaHQoKSk7CiAg
ICAgICAgIGJsYWNrQnVmZmVyLT5TZXRUb0JsYWNrKCk7Ci0gICAgICAgIHNlbmRGcmFtZShXVEZN
b3ZlKGJsYWNrQnVmZmVyKSk7CisgICAgICAgIHNlbmRGcmFtZShXVEZNb3ZlKGJsYWNrQnVmZmVy
KSwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtOTksOCArOTksMjUgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnZpZGVv
UwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihD
TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBs
ZS5jbVNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1
ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CiAKLSAgICBpZiAocGl4ZWxGb3Jt
YXRUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4UGxhbmFyKSB7Ci0gICAgICAg
IHNlbmRGcmFtZShuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PHdlYnJ0Yzo6Q29yZVZpZGVvRnJh
bWVCdWZmZXI+KHBpeGVsQnVmZmVyKSk7CisgICAgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uOworICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvT3JpZW50YXRpb24oKSkgeworICAgIGNhc2Ug
TWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OlVua25vd246CisgICAgY2FzZSBNZWRpYVNh
bXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6UG9ydHJhaXQ6CisgICAgICAgIHJvdGF0aW9uID0gd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8wOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU2Ft
cGxlOjpWaWRlb09yaWVudGF0aW9uOjpQb3J0cmFpdFVwc2lkZURvd246CisgICAgICAgIHJvdGF0
aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OkxhbmRzY2FwZVJpZ2h0OgorICAgICAg
ICByb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OkxhbmRzY2FwZUxlZnQ6Cisg
ICAgICAgIHJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGlmIChwaXhlbEZvcm1hdFR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjhQbGFuYXIgfHwgcGl4ZWxGb3JtYXRUeXBlID09IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpIHsKKyAgICAgICAgc2VuZEZyYW1lKG5l
dyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8d2VicnRjOjpDb3JlVmlkZW9GcmFtZUJ1ZmZlcj4ocGl4
ZWxCdWZmZXIpLCByb3RhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNiw3
ICsxMzMsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6dmlkZW9TCiAgICAg
ICAgIHdlYnJ0Yzo6Q29udmVydFRvSTQyMCh3ZWJydGM6OmtCR1JBLCBzb3VyY2UsIDAsIDAsIHNl
dHRpbmdzLndpZHRoKCksIHNldHRpbmdzLmhlaWdodCgpLCAwLCB3ZWJydGM6OmtWaWRlb1JvdGF0
aW9uXzAsIG5ld0J1ZmZlcik7CiAgICAgfQogICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRk
cmVzcyhwaXhlbEJ1ZmZlciwgMCk7Ci0gICAgc2VuZEZyYW1lKFdURk1vdmUobmV3QnVmZmVyKSk7
CisgICAgc2VuZEZyYW1lKFdURk1vdmUobmV3QnVmZmVyKSwgcm90YXRpb24pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5oCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOwogCi0gICAgdm9pZCBz
ZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJik7
CisgICAgdm9pZCBzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFt
ZUJ1ZmZlcj4mJiwgd2VicnRjOjpWaWRlb1JvdGF0aW9uKTsKIAogICAgIC8vIE5vdGlmaWVyIEFQ
SQogICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikg
ZmluYWwgeyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>