<?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>169313</bug_id>
          
          <creation_ts>2017-03-07 15:19:42 -0800</creation_ts>
          <short_desc>[MediaStream] Compensate for video capture orientation</short_desc>
          <delta_ts>2017-03-20 10:13:36 -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>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284599</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-07 15:19:42 -0800</bug_when>
    <thetext>Captured video frames may need to be rotated for display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286822</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-11 13:34:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/30994785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289123</commentid>
    <comment_count>2</comment_count>
      <attachid>304815</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 13:23:56 -0700</bug_when>
    <thetext>Created attachment 304815
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289142</commentid>
    <comment_count>3</comment_count>
      <attachid>304822</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 13:58:14 -0700</bug_when>
    <thetext>Created attachment 304822
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289150</commentid>
    <comment_count>4</comment_count>
      <attachid>304822</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 14:14:32 -0700</bug_when>
    <thetext>Comment on attachment 304822
Patch for landing.

Clearing flags on attachment: 304822

Committed r214120: &lt;http://trac.webkit.org/changeset/214120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289214</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 17:34:43 -0700</bug_when>
    <thetext>Plus r214130 to fix a crash found by the bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304815</attachid>
            <date>2017-03-17 13:23:56 -0700</date>
            <delta_ts>2017-03-20 10:13:29 -0700</delta_ts>
            <desc>Proposed 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>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304822</attachid>
            <date>2017-03-17 13:58:14 -0700</date>
            <delta_ts>2017-03-17 14:14:32 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>video_orientation_patch_6.txt</filename>
            <type>text/plain</type>
            <size>38335</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE3LTAzLTE3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
Q29tcGVuc2F0ZSBmb3IgdmlkZW8gY2FwdHVyZSBvcmllbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MzEzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMDk5NDc4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCB0aGUgbW9jayB2aWRlbyBzb3VyY2UgZG9lc24ndCBzdXBwb3J0
IHJvdGF0aW9uLiBUZXN0IHdpbGwgYmUgYWRkZWQgd2hlbiB0aGlzCisgICAgICAgIGlzIGZpeGVk
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MjIuCisKKyAg
ICAgICAgQWRkICdvcmllbnRhdGlvbicgYW5kICdtaXJyb3JlZCcgYXR0cmlidXRlcyB0byBNZWRp
YVNhbXBsZQorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2FtcGxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZTo6dmlkZW9PcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVNhbXBsZTo6dmlkZW9NaXJyb3JlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorCisgICAgICAgIEEgdmlkZW8gc2Ft
cGxlIGNhbiBiZSByb3RhdGVkIGFuZC9vciBtaXJyb3JlZCwgc28gdGhlIHZpZGVvIGxheWVyIG1h
eSBuZWVkIHRvIGJlIHJvdGF0ZWQKKyAgICAgICAgYW5kIHJlc2l6ZWQgZm9yIGRpc3BsYXkuIFdl
IGRvbid0IHdhbnQgZXhwb3NlIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlIHJlbmRlcmVyLCBzbyBh
bGxvY2F0ZQorICAgICAgICByZXR1cm4gYSBnZW5lcmljIENBTGF5ZXIgYXMgdGhlIHBsYXllcidz
IHBsYXRmb3JMYXllciwgYW5kIGFkZCB0aGUgdmlkZW8gbGF5ZXIgYXMgYSBzdWJsYXllcgorICAg
ICAgICBzbyB3ZSBjYW4gYWRqdXN0IGl0IHRvIGRpc3BsYXkgY29ycmVjdGx5LiBBZGQgYW4gZW51
bSBmb3IgcGxheWJhY2sgc3RhdGUgYXMgd2VsbCBhcyBkaXNwbGF5CisgICAgICAgIG1vZGUgc28g
d2UgY29ycmVjdGx5IGRpc3BsYXkgYSBibGFjayBmcmFtZSB3aGVuIHZpZGVvIGZyYW1lcyBhcmUg
YXZhaWxhYmxlIGJ1dCBwbGF5YmFjayBoYXMKKyAgICAgICAgbm90IHlldCBzdGFydGVkLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRX
aXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc10pOgorICAgICAgICAoLVtXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcnNdKTogRGl0
dG8uCisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9UcmFu
c2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpydW5XaXRob3V0QW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyRXJyb3JEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXll
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpkZXN0cm95TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaXNwbGF5
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpiYWNrZ3JvdW5kTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNw
bGF5TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRNZWRpYVRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY3RpdmVTdGF0dXND
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6dXBkYXRlUmVuZGVyaW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNldFNob3VsZEJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2Vk
KToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdp
bk9ic2VydmluZ0xheWVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZl
clN0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5z
dXJlTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95TGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzaG91bGRCZVBsYXlpbmcpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmFtZSk6IEFkZCBjb25uZWN0aW9u
IHBhcmFtZXRlciBzbyB3ZSBjYW4gZ2V0IHRoZQorICAgICAgICB2aWRlbyBvcmllbnRhdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlk
T3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24pOgorCisgICAgICAgIFBhc3Mgc2FtcGxl
IG9yaWVudGF0aW9uIHRvIGxpYndlYnJ0Yy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuaDoKKwogMjAxNy0wMy0xNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgV2ViR1BVOiBidWlsZCBmaXhlcyBmb3Igbm9uLUNvY29hIHBsYXRmb3Jt
cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCShyZXZpc2lvbiAyMTQx
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3NywxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTYW1wbGVGbGFncyBm
bGFncygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgPSAwOwogCisgICAgZW51bSBjbGFzcyBWaWRlb09yaWVudGF0aW9uIHsKKyAgICAgICAg
VW5rbm93biwKKyAgICAgICAgUG9ydHJhaXQsCisgICAgICAgIFBvcnRyYWl0VXBzaWRlRG93biwK
KyAgICAgICAgTGFuZHNjYXBlUmlnaHQsCisgICAgICAgIExhbmRzY2FwZUxlZnQsCisgICAgfTsK
KyAgICB2aXJ0dWFsIFZpZGVvT3JpZW50YXRpb24gdmlkZW9PcmllbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIFZpZGVvT3JpZW50YXRpb246OlVua25vd247IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlk
ZW9NaXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBib29sIGlzU3luYygp
IGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc1N5bmM7IH0KICAgICBib29sIGlzTm9uRGlzcGxh
eWluZygpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBJc05vbkRpc3BsYXlpbmc7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2Ft
cGxlQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaAkocmV2aXNpb24gMjE0MTA1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2Ft
cGxlQVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIE1lZGlh
U2FtcGxlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyAKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1l
ZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgaW50IHRy
YWNrSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwg
dHJhY2tJRCkpOyB9CiAgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIEF0b21pY1N0cmluZyB0cmFja0lEKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQotICAg
IHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUp
KTsgfQorICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlLCBWaWRlb09yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gVmlkZW9Pcmll
bnRhdGlvbjo6VW5rbm93biwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIG9yaWVudGF0aW9uLCBtaXJyb3JlZCkp
OyB9CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2Ft
cGxlKFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9i
akM+IGNyZWF0ZUltYWdlU2FtcGxlKFZlY3Rvcjx1aW50OF90PiYmLCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKQEAgLTU2LDYgKzU2LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICwgbV9pZChTdHJpbmc6OmZvcm1hdCgiJWQiLCB0cmFja0lEKSkKICAgICB7CiAg
ICAgfQorICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZp
ZGVvT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGJvb2wgbWlycm9yZWQpCisgICAgICAgIDogbV9z
YW1wbGUoc2FtcGxlKQorICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAg
ICAgICwgbV9taXJyb3JlZChtaXJyb3JlZCkKKyAgICB7CisgICAgfQorCiAgICAgdmlydHVhbCB+
TWVkaWFTYW1wbGVBVkZPYmpDKCkgeyB9CiAKICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzksOCArODYsMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNv
bnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSkgb3ZlcnJpZGU7CiAgICAgUmVmPE1lZGlh
U2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAg
VmlkZW9PcmllbnRhdGlvbiB2aWRlb09yaWVudGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9vcmllbnRhdGlvbjsgfQorICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbWlycm9yZWQ7IH0KKwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4g
bV9zYW1wbGU7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgVmlkZW9PcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uIHsgVmlkZW9PcmllbnRhdGlvbjo6VW5rbm93biB9OworICAgIGJvb2wgbV9t
aXJyb3JlZCB7IGZhbHNlIH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aAkocmV2aXNpb24gMjE0MTA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzUsMTAgKzc2LDE1IEBAIHB1YmxpYzoKIAogICAg
IFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPiBjcmVhdGVXZWFr
UHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIAotICAg
IHZvaWQgZW5zdXJlTGF5ZXIoKTsKLSAgICB2b2lkIGRlc3Ryb3lMYXllcigpOworICAgIHZvaWQg
ZW5zdXJlTGF5ZXJzKCk7CisgICAgdm9pZCBkZXN0cm95TGF5ZXJzKCk7CiAKICAgICB2b2lkIGxh
eWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7CisgICAgdm9p
ZCBsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7CisgICAg
dm9pZCBiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7CisKKyAgICBQbGF0Zm9ybUxheWVy
KiBkaXNwbGF5TGF5ZXIoKTsKKyAgICBQbGF0Zm9ybUxheWVyKiBiYWNrZ3JvdW5kTGF5ZXIoKTsK
IAogcHJpdmF0ZToKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKQEAgLTk5LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKICAgICB2b2lk
IHBhdXNlKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBwYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFwbGF5aW5nKCk7IH0KIAog
ICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE11dGVkKGJv
b2wpIG92ZXJyaWRlOwpAQCAtMTU2LDcgKzE2Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGVu
ZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9lbmRlZDsgfQogCi0gICAgYm9vbCBzaG91
bGRCZVBsYXlpbmcoKSBjb25zdDsKKyAgICB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkg
b3ZlcnJpZGU7CiAKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBjdXJyZW50UmVhZHlTdGF0
ZSgpOwogICAgIHZvaWQgdXBkYXRlUmVhZHlTdGF0ZSgpOwpAQCAtMTc3LDYgKzE4MywxMyBAQCBw
cml2YXRlOgogICAgIGJvb2wgdXBkYXRlRGlzcGxheU1vZGUoKTsKICAgICB2b2lkIHVwZGF0ZUN1
cnJlbnRGcmFtZUltYWdlKCk7CiAKKyAgICBlbnVtIGNsYXNzIFBsYXliYWNrU3RhdGUgeworICAg
ICAgICBOb25lLAorICAgICAgICBQbGF5aW5nLAorICAgICAgICBQYXVzZWQsCisgICAgfTsKKyAg
ICBib29sIHBsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU3RhdGUgPT0gUGxheWJh
Y2tTdGF0ZTo6UGxheWluZzsgfQorCiAgICAgLy8gTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZl
cgogICAgIHZvaWQgYWN0aXZlU3RhdHVzQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpIG92ZXJyaWRlOwpAQCAtMjAwLDYgKzIxMyw4IEBAIHByaXZh
dGU6CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmlu
YWw7CiAKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1l
ZGlhU2FtcGxlJik7CisKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAg
ICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPiBt
X3dlYWtQdHJGYWN0b3J5OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IG1fbWVkaWFT
dHJlYW1Qcml2YXRlOwpAQCAtMjA4LDYgKzIyMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5Q
dHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gbV9zdGF0dXNDaGFuZ2VM
aXN0ZW5lcjsKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOworICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX2Jh
Y2tncm91bmRMYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IG1fY2xvY2s7CiAKICAg
ICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwpAQCAtMjMyLDEyICsyNDgsMTggQEAgcHJpdmF0ZToK
ICAgICBGbG9hdFNpemUgbV9pbnRyaW5zaWNTaXplOwogICAgIGZsb2F0IG1fdm9sdW1lIHsgMSB9
OwogICAgIERpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGUgeyBOb25lIH07CisgICAgUGxheWJhY2tT
dGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBQbGF5YmFja1N0YXRlOjpOb25lIH07CisgICAgTWVkaWFT
YW1wbGU6OlZpZGVvT3JpZW50YXRpb24gbV92aWRlb09yaWVudGF0aW9uIHsgTWVkaWFTYW1wbGU6
OlZpZGVvT3JpZW50YXRpb246OlVua25vd24gfTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3Zp
ZGVvVHJhbnNmb3JtOworICAgIGJvb2wgbV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fcGxheWluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNFdmVyRW5xdWV1ZWRWaWRl
b0ZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGVuZGluZ1NlbGVjdGVkVHJhY2tDaGVjayB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlGaXJzdFZpZGVvRnJhbWUgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV90cmFuc2Zvcm1Jc1ZhbGlkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
dmlkZW9TaXplQ2hhbmdlZDsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjE0MTA1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NywyMCArNTcsMjQgQEAgU09GVF9M
SU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpbwogCiBTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIAotI2RlZmlu
ZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwgZ2V0QVZBdWRpb1RpbWVQaXRjaEFs
Z29yaXRobVNwZWN0cmFsKCkKLSNkZWZpbmUgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlz
cGVlZCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkKCkKK1NPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUsIE5TU3RyaW5nICopCisKKyNkZWZp
bmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0KCkKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZp
bGwgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKQorI2RlZmluZSBBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplIGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKQogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3QgewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVudDsKLSAgICBWZWN0b3I8UmV0YWluUHRyPEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyPj4gX2xheWVyczsKIH0KIAogLSAoaWQpaW5pdFdpdGhQYXJlbnQ6
KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7CiAtICh2b2lk
KWludmFsaWRhdGU7Ci0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyICopbGF5ZXI7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcjooQVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsKKy0gKHZvaWQpYmVnaW5PYnNlcnZpbmdMYXll
cnM7CistICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcnM7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCkBAIC04MSw2ICs4NSw3IEBA
IC0gKGlkKWluaXRXaXRoUGFyZW50OihNZWRpYVBsYXllclByaXZhdGUKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApA
QCAtOTIsMzEgKzk3LDM1IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtICh2b2lkKWludmFsaWRhdGUK
IHsKLSAgICBmb3IgKGF1dG8mIGxheWVyIDogX2xheWVycykKLSAgICAgICAgW2xheWVyIHJlbW92
ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIF9sYXllcnMuY2xlYXIo
KTsKKyAgICBbc2VsZiBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKIAogICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKICAgICBfcGFy
ZW50ID0gbnVsbHB0cjsKIH0KIAotLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVyOihBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciopbGF5ZXIKKy0gKHZvaWQpYmVnaW5PYnNlcnZpbmdMYXllcnMK
IHsKICAgICBBU1NFUlQoX3BhcmVudCk7Ci0gICAgQVNTRVJUKCFfbGF5ZXJzLmNvbnRhaW5zKGxh
eWVyKSk7CisgICAgQVNTRVJUKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKTsKKyAgICBBU1NFUlQo
X3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkpOwogCi0gICAgX2xheWVycy5hcHBlbmQobGF5ZXIp
OwotICAgIFtsYXllciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om51bGxwdHJdOworICAgIFtf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0
dXMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cisg
ICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpA
ImVycm9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxd
OworICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktl
eVBhdGg6QCJib3VuZHMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250
ZXh0Om5pbF07CiB9CiAKLS0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVyOihBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciopbGF5ZXIKKy0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVycwogewotICAg
IEFTU0VSVChfcGFyZW50KTsKLSAgICBBU1NFUlQoX2xheWVycy5jb250YWlucyhsYXllcikpOwor
ICAgIGlmICghX3BhcmVudCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgW2xheWVyIHJlbW92ZU9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIF9sYXllcnMucmVtb3ZlKF9s
YXllcnMuZmluZChsYXllcikpOworICAgIGlmIChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkgewor
ICAgICAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOkAic3RhdHVzIl07CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1v
dmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciJdOworICAgIH0KKyAgICBpZiAoX3Bh
cmVudC0+YmFja2dyb3VuZExheWVyKCkpCisgICAgICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5
ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiXTsKIH0KIAogLSAo
dm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICop
Y29udGV4dApAQCAtMTI1LDIzICsxMzQsNDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOihOU1N0cmluZwogICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKICAgICBBU1NFUlQoX3Bh
cmVudCk7CiAKLSAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0
ZW5lcj4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKSB7CiAgICAgICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgKilvYmplY3Q7Ci0gICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gc3RhdHVz
ID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICAgICAg
QVNTRVJUKGxheWVyLmdldCgpID09IF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKTsKIAotICAgICAg
ICBBU1NFUlQoX2xheWVycy5jb250YWlucyhsYXllci5nZXQoKSkpOwotICAgICAgICBBU1NFUlQo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pOworICAgICAgICBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxO
U051bWJlcj4gc3RhdHVzID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3
S2V5XTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBXVEZN
b3ZlKHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1
cyldIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVy
KV0gewotICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5s
YXllclN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5f
cGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7Ci0gICAgICAgIH0pOwor
ICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZXJyb3IiXSkgeworICAgICAg
ICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5T
S2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkU2VsZiA9IFdURk1vdmUoc2VsZiksIGxheWVyID0gV1RGTW92ZShsYXllciksIHN0YXR1
cyA9IFdURk1vdmUoc3RhdHVzKV0geworICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2Vs
Zi0+X3BhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJFcnJvckRpZENoYW5nZShsYXllci5nZXQo
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZp
Y2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KChDQUxheWVyICopb2JqZWN0ID09IF9wYXJlbnQtPmJhY2tncm91bmRMYXllcigpKSB7CisgICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJib3VuZHMiXSkgeworICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFdURk1vdmUoc2VsZildIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQt
PmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfQogCi0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogQGVuZAogCkBAIC0xNzcsNyArMjEwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp+TQogICAgICAgICAgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsK
ICAgICB9CiAKLSAgICBkZXN0cm95TGF5ZXIoKTsKKyAgICBkZXN0cm95TGF5ZXJzKCk7CiAKICAg
ICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjY4LDYgKzMwMSw0
NiBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BCiAgICAgcmV0dXJu
IHRpbWVsaW5lT2Zmc2V0OwogfQogCitDR0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoTWVkaWFTYW1w
bGUmIHNhbXBsZSkKK3sKKyAgICBpZiAobV90cmFuc2Zvcm1Jc1ZhbGlkKQorICAgICAgICByZXR1
cm4gbV92aWRlb1RyYW5zZm9ybTsKKworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
ciA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcjsKKyAgICBD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJl
Zj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGVCdWZmZXIpKTsKKyAgICBzaXpl
X3Qgd2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpOworICAgIHNpemVf
dCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKTsKKyAgICBpZiAo
IXdpZHRoIHx8ICFoZWlnaHQpCisgICAgICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUlkZW50
aXR5OworCisgICAgQVNTRVJUKG1fdmlkZW9PcmllbnRhdGlvbiA+PSBNZWRpYVNhbXBsZTo6Vmlk
ZW9PcmllbnRhdGlvbjo6VW5rbm93bik7CisgICAgQVNTRVJUKG1fdmlkZW9PcmllbnRhdGlvbiA8
PSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6TGFuZHNjYXBlTGVmdCk7CisKKyAgICAv
LyBVbmtub3duLCBQb3J0cmFpdCwgUG9ydHJhaXRVcHNpZGVEb3duLCBMYW5kc2NhcGVSaWdodCwg
TGFuZHNjYXBlTGVmdCwKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGZsb2F0IHNlbnNv
ckFuZ2xlW10gPSB7IDAsIDAsIDE4MCwgOTAsIDI3MCB9OworI2Vsc2UKKyAgICBzdGF0aWMgZmxv
YXQgc2Vuc29yQW5nbGVbXSA9IHsgMTgwLCAxODAsIDAsIDkwLCAyNzAgfTsKKyNlbmRpZgorICAg
IGZsb2F0IHJvdGF0aW9uID0gc2Vuc29yQW5nbGVbc3RhdGljX2Nhc3Q8aW50PihtX3ZpZGVvT3Jp
ZW50YXRpb24pXTsKKyAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtl
Um90YXRpb24ocm90YXRpb24gKiBNX1BJIC8gMTgwKTsKKworICAgIGlmIChzYW1wbGUudmlkZW9N
aXJyb3JlZCgpKQorICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1T
Y2FsZShtX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CisKKyAgICBtX3RyYW5zZm9ybUlzVmFsaWQg
PSB0cnVlOworICAgIHJldHVybiBtX3ZpZGVvVHJhbnNmb3JtOworfQorCitzdGF0aWMgdm9pZCBy
dW5XaXRob3V0QW5pbWF0aW9ucyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7Cisg
ICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlv
bkR1cmF0aW9uOjBdOworICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107
CisgICAgZnVuY3Rpb24oKTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxl
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsK
ICAgICBBU1NFUlQobV92aWRlb1RyYWNrTWFwLmNvbnRhaW5zKHRyYWNrLmlkKCkpKTsKQEAgLTI5
Niw2ICszNjksMjUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagog
ICAgIHVwZGF0ZVNhbXBsZVRpbWVzKHNhbXBsZSwgdGltZWxpbmVPZmZzZXQsICJNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSIpOwogCiAgICAg
aWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7CisgICAgICAgIGlmIChzYW1wbGUudmlk
ZW9PcmllbnRhdGlvbigpICE9IG1fdmlkZW9PcmllbnRhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJy
b3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgeworICAgICAgICAgICAgbV92aWRlb09yaWVudGF0
aW9uID0gc2FtcGxlLnZpZGVvT3JpZW50YXRpb24oKTsKKyAgICAgICAgICAgIG1fdmlkZW9NaXJy
b3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybUlz
VmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3ZpZGVvU2l6ZUNoYW5n
ZWQgfHwgIW1fdHJhbnNmb3JtSXNWYWxpZCkgeworICAgICAgICAgICAgcnVuV2l0aG91dEFuaW1h
dGlvbnMoW3RoaXMsICZzYW1wbGVdIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJhY2tncm91bmRC
b3VuZHMgPSBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHM7CisgICAgICAgICAgICAgICAg
YXV0byB2aWRlb0JvdW5kcyA9IGJhY2tncm91bmRCb3VuZHM7CisgICAgICAgICAgICAgICAgaWYg
KG1fdmlkZW9PcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6TGFu
ZHNjYXBlUmlnaHQgfHwgbV92aWRlb09yaWVudGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb09y
aWVudGF0aW9uOjpMYW5kc2NhcGVMZWZ0KQorICAgICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAo
dmlkZW9Cb3VuZHMuc2l6ZS53aWR0aCwgdmlkZW9Cb3VuZHMuc2l6ZS5oZWlnaHQpOworICAgICAg
ICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVv
Qm91bmRzOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LnBvc2l0aW9uID0geyBiYWNrZ3JvdW5kQm91bmRzLnNpemUud2lkdGggLyAyLCBiYWNrZ3JvdW5k
Qm91bmRzLnNpemUuaGVpZ2h0IC8gMn07CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYWZmaW5lVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1h
dHJpeChzYW1wbGUpOworICAgICAgICAgICAgICAgIG1fdmlkZW9TaXplQ2hhbmdlZCA9IGZhbHNl
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIVttX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUsIHNhbXBs
ZSk7CiAgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRh
KCk7CkBAIC0zMzQsNiArNDI2LDEyIEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVy
UHJpdmF0ZU0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyRXJyb3JEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIqIGxheWVyKQoreworICAgIFVOVVNFRF9QQVJBTShsYXllcik7CisgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9y
RGlkQ2hhbmdlKCVwKSAtIGVycm9yID0gJXMiLCB0aGlzLCBbW2xheWVyLmVycm9yIGxvY2FsaXpl
ZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciogbGF5ZXIpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZSglcCkgLSBzdGF0dXMgPSAl
ZCIsIHRoaXMsIChpbnQpbGF5ZXIuc3RhdHVzKTsKQEAgLTM1OSw3ICs0NTcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiB7CiAgICAgaWYgKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CkBAIC0zNzMsMzAgKzQ3MSw0
NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNr
Z3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdl
ID0gWUVTOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0
eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisgICAgbV9iYWNrZ3Jv
dW5kTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fYmFja2dy
b3VuZExheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJs
YWNrKTsKKyAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJvdW5kc0No
YW5nZSA9IFlFUzsKKworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2JzZXJ2aW5n
TGF5ZXJzXTsKKworICAgIFttX2JhY2tncm91bmRMYXllciBhZGRTdWJsYXllcjptX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKV07CisKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9iYWNrZ3JvdW5k
TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBwYXJlbnQiXTsKICNlbmRpZgotICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrKTsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xh
eWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAogICAgIHVwZGF0ZVJlbmRl
cmluZ01vZGUoKTsKICAgICAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0Vmlk
ZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3Qo
bV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsK
KyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX2JhY2tn
cm91bmRMYXllci5nZXQoKSwgc25hcHBlZEludFJlY3QobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlh
UGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpKTsKICNlbmRpZgogfQogCi12b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVyKCkKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95TGF5ZXJzKCkKIHsKICAg
ICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKICAgICBpZiAo
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKICAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1w
bGVRdWV1ZS5jbGVhcigpOwotICAgICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2Jz
ZXJ2aW5nTGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwogICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAg
ICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fYmFja2dyb3VuZExh
eWVyID0gbnVsbHB0cjsKIAogICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICAKQEAgLTQ0
Niw3ICs1NTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCgpCiB7
CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
YW5jZWxMb2FkKCVwKSIsIHRoaXMpOwotICAgIGlmIChtX3BsYXlpbmcpCisgICAgaWYgKHBsYXlp
bmcoKSkKICAgICAgICAgcGF1c2UoKTsKIH0KIApAQCAtNDU3LDE1ICs1NjksMjQgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogCiBQbGF0Zm9ybUxheWVyKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
ewotICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9
PSBOb25lKQorICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBO
b25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+dmlkZW9JbmxpbmVMYXllcigpOwogI2Vsc2UKKyAgICByZXR1cm4gbV9i
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCk7CisjZW5kaWYKK30KIAorUGxhdGZvcm1MYXllciogTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaXNwbGF5TGF5ZXIoKQorewogICAgIHJl
dHVybiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsKLSNlbmRpZgorfQorCitQbGF0
Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91
bmRMYXllcigpCit7CisgICAgcmV0dXJuIG1fYmFja2dyb3VuZExheWVyLmdldCgpOwogfQogCiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OkRpc3BsYXlNb2RlIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudERpc3BsYXlNb2RlKCkgY29uc3QK
QEAgLTQ3NCwxNiArNTk1LDE5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6RGkKICAgICAgICAgcmV0dXJuIE5vbmU7CiAKICAgICBpZiAoYXV0byogdHJhY2sgPSBtX21l
ZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpKSB7Ci0gICAgICAgIGlmICghbV9z
aG91bGREaXNwbGF5Rmlyc3RWaWRlb0ZyYW1lIHx8ICF0cmFjay0+ZW5hYmxlZCgpIHx8IHRyYWNr
LT5tdXRlZCgpKQorICAgICAgICBpZiAoIXRyYWNrLT5lbmFibGVkKCkgfHwgdHJhY2stPm11dGVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gUGFpbnRJdEJsYWNrOwogICAgIH0KIAotICAgIGlmICht
X3BsYXlpbmcpIHsKKyAgICBpZiAocGxheWluZygpKSB7CiAgICAgICAgIGlmICghbV9tZWRpYVN0
cmVhbVByaXZhdGUtPmlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIFBhdXNl
ZEltYWdlOwogICAgICAgICByZXR1cm4gTGl2ZVByZXZpZXc7CiAgICAgfQogCisgICAgaWYgKG1f
cGxheWJhY2tTdGF0ZSA9PSBQbGF5YmFja1N0YXRlOjpOb25lKQorICAgICAgICByZXR1cm4gUGFp
bnRJdEJsYWNrOworCiAgICAgcmV0dXJuIFBhdXNlZEltYWdlOwogfQogCkBAIC00OTMsMTEgKzYx
NywxMyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICBp
ZiAoZGlzcGxheU1vZGUgPT0gbV9kaXNwbGF5TW9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgbV9kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlOwogCi0gICAgaWYgKG1fZGlzcGxheU1v
ZGUgPCBQYXVzZWRJbWFnZSAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAg
Zmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBsZUJ1ZmZlcnMoKTsKKyAgICBpZiAobV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpIHsKKyAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXNdIHsK
KyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9IG1f
ZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC01MDYsMTAgKzYzMiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF5KCVwKSIsIHRoaXMpOwogCi0gICAgaWYgKCFtZXRhRGF0
YUF2YWlsYWJsZSgpIHx8IG1fcGxheWluZyB8fCBtX2VuZGVkKQorICAgIGlmICghbWV0YURhdGFB
dmFpbGFibGUoKSB8fCBwbGF5aW5nKCkgfHwgbV9lbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wbGF5aW5nID0gdHJ1ZTsKKyAgICBtX3BsYXliYWNrU3RhdGUgPSBQbGF5YmFja1N0YXRl
OjpQbGF5aW5nOwogICAgIGlmICghbV9jbG9jay0+aXNSdW5uaW5nKCkpCiAgICAgICAgIG1fY2xv
Y2stPnN0YXJ0KCk7CiAKQEAgLTUyOCwxMSArNjU0LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKCVwKSIsIHRoaXMpOwogCi0gICAgaWYgKCFtZXRh
RGF0YUF2YWlsYWJsZSgpIHx8ICFtX3BsYXlpbmcgfHwgbV9lbmRlZCkKKyAgICBpZiAoIW1ldGFE
YXRhQXZhaWxhYmxlKCkgfHwgIXBsYXlpbmcoKSB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3BhdXNlZFRpbWUgPSBjdXJyZW50TWVkaWFUaW1lKCk7Ci0gICAgbV9wbGF5aW5n
ID0gZmFsc2U7CisgICAgbV9wbGF5YmFja1N0YXRlID0gUGxheWJhY2tTdGF0ZTo6UGF1c2VkOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkK
ICAgICAgICAgdHJhY2stPnBhdXNlKCk7CkBAIC01NDEsMTEgKzY2Nyw2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBmbHVzaFJlbmRlcmVycygpOwogfQog
Ci1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2VkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gIW1fcGxheWluZzsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiB7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUo
JXApIiwgdGhpcyk7CkBAIC01OTMsNyArNzE0LDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGxheWlu
ZykKKyAgICBpZiAocGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBtX3BhdXNlZFRpbWU7CiAKICAg
ICByZXR1cm4gc3RyZWFtVGltZSgpOwpAQCAtNjUwLDcgKzc3MSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhb
dGhpc10gewogICAgICAgICBib29sIGVuZGVkID0gIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3Rp
dmUoKTsKLSAgICAgICAgaWYgKGVuZGVkICYmIG1fcGxheWluZykKKyAgICAgICAgaWYgKGVuZGVk
ICYmIHBsYXlpbmcoKSkKICAgICAgICAgICAgIHBhdXNlKCk7CiAKICAgICAgICAgdXBkYXRlUmVh
ZHlTdGF0ZSgpOwpAQCAtNjcwLDYgKzc5MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmoKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRh
c2soW3RoaXNdIHsKKyAgICAgICAgbV90cmFuc2Zvcm1Jc1ZhbGlkID0gZmFsc2U7CiAgICAgICAg
IGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXll
clJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKICAgICB9KTsKQEAgLTgyNSw3ICs5NDcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAKICAgICAgICAg
aWYgKG9sZFZpZGVvVHJhY2sgIT0gbV9hY3RpdmVWaWRlb1RyYWNrKQogICAgICAgICAgICAgbV9p
bWFnZVBhaW50ZXIucmVzZXQoKTsKLSAgICAgICAgZW5zdXJlTGF5ZXIoKTsKKyAgICAgICAgZW5z
dXJlTGF5ZXJzKCk7CiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGVWaWRlb0xheWVyOwogICAgICAgICBtX3BlbmRpbmdTZWxlY3RlZFRyYWNrQ2hl
Y2sgPSBmYWxzZTsKICAgICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKQEAgLTkxNCwxMSArMTAz
NiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqCiAgICAgaWYg
KG1fZGlzcGxheU1vZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0
LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotCiAgICAgaWYgKG1fZGlzcGxheU1v
ZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQogICAgICAg
ICB1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpOwogCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChtX2Rpc3BsYXlNb2RlID09IFBhaW50
SXRCbGFjayB8fCAhbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVk
aWFTYW1wbGUpIHsKICAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCks
IEludFNpemUoZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkpKSwgQ29sb3I6OmJs
YWNrKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTI2LDE1ICsxMDQ3LDE4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIAogICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlLmdldCgpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOwotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCBkZXN0UmVjdCwgaW1h
Z2VSZWN0KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5z
Zm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAgRmxvYXRS
ZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3QpOworICAgIGNvbnRleHQuY29u
Y2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBpZiAobV9wbGF5ZXItPmNsaWVudCgpLm1l
ZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcikpCi0gICAgICAgIGVu
c3VyZUxheWVyKCk7CisgICAgICAgIGVuc3VyZUxheWVycygpOwogICAgIGVsc2UKLSAgICAgICAg
ZGVzdHJveUxheWVyKCk7CisgICAgICAgIGRlc3Ryb3lMYXllcnMoKTsKIH0KIAogU3RyaW5nIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5naW5lRGVzY3JpcHRpb24oKSBj
b25zdApAQCAtOTQzLDExICsxMDY3LDYgQEAgU3RyaW5nIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGTwogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KIAotYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNob3VsZEJlUGxheWluZygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fcGxheWluZyAmJiBtX3JlYWR5U3RhdGUgPj0gTWVkaWFQbGF5ZXI6OkhhdmVG
dXR1cmVEYXRhOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogewog
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gcmVhZHlTdGF0ZSkKQEAgLTk2OSw2ICsxMDg4LDEyIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBtX3BsYXllci0+
bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2V0U2hvdWxkQnVmZmVyRGF0YShib29sIHNob3VsZEJ1ZmZlcikKK3sK
KyAgICBpZiAoIXNob3VsZEJ1ZmZlcikKKyAgICAgICAgZmx1c2hBbmRSZW1vdmVWaWRlb1NhbXBs
ZUJ1ZmZlcnMoKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnNjaGVkdWxlRGVmZXJyZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKQEAgLTk4Nyw2ICsxMTEyLDE0IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9
IG51bGxwdHI7CiB9CiAKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3Vu
ZExheWVyIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV92aWRlb1NpemVDaGFuZ2VkID0gdHJ1ZTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRl
RnJhbWVyYXRlKENNU2FtcGxlQnVmZmVyUmVmKTsKIAogICAgIHZvaWQgY2FwdHVyZU91dHB1dERp
ZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2Ft
cGxlQnVmZmVyUmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKikgZmluYWw7Ci0gICAgdm9pZCBwcm9j
ZXNzTmV3RnJhbWUoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPik7CisgICAgdm9pZCBwcm9j
ZXNzTmV3RnJhbWUoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiwgUmV0YWluUHRyPEFWQ2Fw
dHVyZUNvbm5lY3Rpb24+KTsKIAogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJl
c2V0OwogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQxNyw3ICs0MTcsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291
cmNlOjp1cGRhdGVGcmFtZXJhCiAgICAgcmV0dXJuIGZyYW1lUmF0ZSAhPSBtX2ZyYW1lUmF0ZTsK
IH0KIAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxlQnVmZmVyKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxl
QnVmZmVyLCBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvblR5cGU+IGNvbm5lY3Rpb24pCiB7
CiAgICAgLy8gSWdub3JlIGZyYW1lcyBkZWxpdmVyZWQgd2hlbiB0aGUgc2Vzc2lvbiBpcyBub3Qg
cnVubmluZywgd2Ugd2FudCB0byBoYW5nIG9udG8gdGhlIGxhc3QgaW1hZ2UKICAgICAvLyBkZWxp
dmVyZWQgYmVmb3JlIGl0IHN0b3BwZWQuCkBAIC00MzIsOCArNDMyLDI3IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmEKICAgICBtX2J1ZmZlciA9IHNhbXBsZUJ1ZmZl
cjsKICAgICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CiAKKyAgICBNZWRpYVNhbXBsZTo6VmlkZW9P
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb09yaWVudGF0aW9uOjpV
bmtub3duOworICAgIHN3aXRjaCAoW2Nvbm5lY3Rpb24gdmlkZW9PcmllbnRhdGlvbl0pIHsKKyAg
ICBjYXNlIEFWQ2FwdHVyZVZpZGVvT3JpZW50YXRpb25Qb3J0cmFpdDoKKyAgICAgICAgb3JpZW50
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6UG9ydHJhaXQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQVZDYXB0dXJlVmlkZW9PcmllbnRhdGlvblBvcnRyYWl0VXBzaWRl
RG93bjoKKyAgICAgICAgb3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlv
bjo6UG9ydHJhaXRVcHNpZGVEb3duOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFWQ2FwdHVy
ZVZpZGVvT3JpZW50YXRpb25MYW5kc2NhcGVSaWdodDoKKyAgICAgICAgb3JpZW50YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6TGFuZHNjYXBlUmlnaHQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQVZDYXB0dXJlVmlkZW9PcmllbnRhdGlvbkxhbmRzY2FwZUxlZnQ6Cisg
ICAgICAgIG9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OkxhbmRz
Y2FwZUxlZnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGJvb2wgc2V0dGluZ3NDaGFu
Z2VkID0gZmFsc2U7CiAgICAgQ01WaWRlb0RpbWVuc2lvbnMgZGltZW5zaW9ucyA9IENNVmlkZW9G
b3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgIGlm
IChvcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6TGFuZHNjYXBl
UmlnaHQgfHwgb3JpZW50YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246Okxh
bmRzY2FwZUxlZnQpCisgICAgICAgIHN0ZDo6c3dhcChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNp
b25zLmhlaWdodCk7CisKICAgICBpZiAoZGltZW5zaW9ucy53aWR0aCAhPSBtX3dpZHRoIHx8IGRp
bWVuc2lvbnMuaGVpZ2h0ICE9IG1faGVpZ2h0KSB7CiAgICAgICAgIG1fd2lkdGggPSBkaW1lbnNp
b25zLndpZHRoOwogICAgICAgICBtX2hlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0OwpAQCAtNDQz
LDE1ICs0NjIsMTYgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYQog
ICAgIGlmIChzZXR0aW5nc0NoYW5nZWQpCiAgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CiAK
LSAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShtX2J1
ZmZlci5nZXQoKSkpOworICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpLCBvcmllbnRhdGlvbiwgW2Nvbm5lY3Rpb24gaXNWaWRl
b01pcnJvcmVkXSkpOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0
cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJlT3V0cHV0VHlw
ZSosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQVZDYXB0dXJlQ29ubmVjdGlvblR5
cGUqKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNh
bXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dFR5cGUqLCBDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiBjYXB0dXJlQ29u
bmVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGJ1ZmZlciA9IHNh
bXBsZUJ1ZmZlcjsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvblR5cGU+IGNvbm5l
Y3Rpb24gPSBjYXB0dXJlQ29ubmVjdGlvbjsKIAotICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0
aGlzLCBidWZmZXJdIHsKLSAgICAgICAgdGhpcy0+cHJvY2Vzc05ld0ZyYW1lKGJ1ZmZlcik7Cisg
ICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIGJ1ZmZlciwgY29ubmVjdGlvbl0geworICAg
ICAgICB0aGlzLT5wcm9jZXNzTmV3RnJhbWUoYnVmZmVyLCBjb25uZWN0aW9uKTsKICAgICB9KTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAJ
KHJldmlzaW9uIDIxNDEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw5ICs3Myw5IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmUKICAg
ICBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOwogfQogCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6c2VuZEZyYW1lKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNl
bmRGcmFtZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1
ZmZlciwgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogewotICAgIHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSBmcmFtZShidWZmZXIsIDAsIDAsIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCk7Cisg
ICAgd2VicnRjOjpWaWRlb0ZyYW1lIGZyYW1lKGJ1ZmZlciwgMCwgMCwgcm90YXRpb24pOwogICAg
IGZvciAoYXV0byogc2luayA6IG1fc2lua3MpCiAgICAgICAgIHNpbmstPk9uRnJhbWUoZnJhbWUp
OwogfQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
dmlkZW9TCiAgICAgaWYgKG1fbXV0ZWQgfHwgIW1fZW5hYmxlZCkgewogICAgICAgICBhdXRvIGJs
YWNrQnVmZmVyID0gbV9idWZmZXJQb29sLkNyZWF0ZUJ1ZmZlcihzZXR0aW5ncy53aWR0aCgpLCBz
ZXR0aW5ncy5oZWlnaHQoKSk7CiAgICAgICAgIGJsYWNrQnVmZmVyLT5TZXRUb0JsYWNrKCk7Ci0g
ICAgICAgIHNlbmRGcmFtZShXVEZNb3ZlKGJsYWNrQnVmZmVyKSk7CisgICAgICAgIHNlbmRGcmFt
ZShXVEZNb3ZlKGJsYWNrQnVmZmVyKSwgd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTksOCArOTksMjUgQEAgdm9pZCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2U6OnZpZGVvUwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gcGl4ZWxG
b3JtYXRUeXBlID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7
CiAKLSAgICBpZiAocGl4ZWxGb3JtYXRUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENi
Q3I4UGxhbmFyKSB7Ci0gICAgICAgIHNlbmRGcmFtZShuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0
PHdlYnJ0Yzo6Q29yZVZpZGVvRnJhbWVCdWZmZXI+KHBpeGVsQnVmZmVyKSk7CisgICAgd2VicnRj
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uOworICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvT3JpZW50
YXRpb24oKSkgeworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246OlVua25v
d246CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9PcmllbnRhdGlvbjo6UG9ydHJhaXQ6Cisg
ICAgICAgIHJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb09yaWVudGF0aW9uOjpQb3J0cmFpdFVwc2lk
ZURvd246CisgICAgICAgIHJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRpb246Okxh
bmRzY2FwZVJpZ2h0OgorICAgICAgICByb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25f
OTA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvT3JpZW50YXRp
b246OkxhbmRzY2FwZUxlZnQ6CisgICAgICAgIHJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8yNzA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChwaXhlbEZvcm1hdFR5
cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFuYXIgfHwgcGl4ZWxGb3JtYXRU
eXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpIHsK
KyAgICAgICAgc2VuZEZyYW1lKG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8d2VicnRjOjpDb3Jl
VmlkZW9GcmFtZUJ1ZmZlcj4ocGl4ZWxCdWZmZXIpLCByb3RhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTExNiw3ICsxMzMsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZTo6dmlkZW9TCiAgICAgICAgIHdlYnJ0Yzo6Q29udmVydFRvSTQyMCh3ZWJydGM6OmtC
R1JBLCBzb3VyY2UsIDAsIDAsIHNldHRpbmdzLndpZHRoKCksIHNldHRpbmdzLmhlaWdodCgpLCAw
LCB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAsIG5ld0J1ZmZlcik7CiAgICAgfQogICAgIENWUGl4
ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwgMCk7Ci0gICAgc2VuZEZyYW1l
KFdURk1vdmUobmV3QnVmZmVyKSk7CisgICAgc2VuZEZyYW1lKFdURk1vdmUobmV3QnVmZmVyKSwg
cm90YXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAyMTQxMDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOwogCi0gICAgdm9pZCBzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9GcmFtZUJ1ZmZlcj4mJik7CisgICAgdm9pZCBzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgd2VicnRjOjpWaWRlb1JvdGF0aW9uKTsK
IAogICAgIC8vIE5vdGlmaWVyIEFQSQogICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6
Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>