<?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>140078</bug_id>
          
          <creation_ts>2015-01-05 06:36:13 -0800</creation_ts>
          <short_desc>[GStreamer] Rewrite MediaSource implementation - step 2</short_desc>
          <delta_ts>2016-09-21 02:34:41 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>157314</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>139441</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>b.gajda</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eocanha</cc>
    
    <cc>ernstp</cc>
    
    <cc>j.isorce</cc>
    
    <cc>nwaschbu</cc>
    
    <cc>pnormand</cc>
    
    <cc>slomo</cc>
    
    <cc>tingping</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058699</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-01-05 06:36:13 -0800</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #139441 +++

I&apos;ve rebased Sebastian&apos;s 2nd WiP patch on top of trunk. I&apos;ll upload it here, if Sebastian can finish it, it&apos;d be nice! Otherwise I can take over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058700</commentid>
    <comment_count>1</comment_count>
      <attachid>243975</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-01-05 06:37:55 -0800</bug_when>
    <thetext>Created attachment 243975
WIP patch (author: slomo)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058978</commentid>
    <comment_count>2</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2015-01-06 03:54:54 -0800</bug_when>
    <thetext>Thanks for taking care of that, I&apos;m currently on vacation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232022</commentid>
    <comment_count>3</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-09-21 02:34:41 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 157314 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243975</attachid>
            <date>2015-01-05 06:37:55 -0800</date>
            <delta_ts>2015-01-05 06:37:55 -0800</delta_ts>
            <desc>WIP patch (author: slomo)</desc>
            <filename>WIP-patch-author-slomo.patch</filename>
            <type>text/plain</type>
            <size>42768</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkNTk4MzE4NjIwNmE5MWMwYzRkMjQ4ZjBiOWY0N2JmOTExZWU4MWEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDUgSmFuIDIwMTUgMTU6Mzc6MDIgKzAxMDAKU3ViamVjdDogW1BBVENIXSBX
SVAgcGF0Y2ggKGF1dGhvcjogc2xvbW8pCgotLS0KIC4uLi9nc3RyZWFtZXIvQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwICAgICAgIHwgICAyICsKIC4uLi9nc3RyZWFtZXIvQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgIHwgICAzICstCiAuLi4vZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICAgICB8ICAxOSArCiAuLi4vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcCAgICB8ICAxNCArLQogLi4uL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5oICAgICAgfCAgIDEgKwogLi4uL2dzdHJl
YW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgfCAgMzAgKy0KIC4uLi9n
c3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgIHwgICA4ICstCiAu
Li4vZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgICB8ICAgMiAr
CiAuLi4vZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmggICAgICAgICB8ICAg
NCArLQogLi4uL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgICAgICAg
fCA2MzMgKysrKysrKysrKysrKysrKysrKy0tCiAuLi4vZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291
cmNlR1N0cmVhbWVyLmggICAgICAgICB8ICAxNSArLQogMTEgZmlsZXMgY2hhbmdlZCwgNjcxIGlu
c2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDJmMGRlYmMuLjRhOWM2ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzcsNiArMzcsOCBA
QCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIo
R1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YgogICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cih0aGlzLCBpbmRleCwgcGFkKQogICAgICwgbV9wbGF5YmluKHBsYXliaW4pCiB7CisgICAgLy8g
RklYTUU6IEdldCBhIHJlYWwgSUQgaGVyZQorICAgIG1faWQgPSAiQSIgKyBTdHJpbmc6Om51bWJl
cihpbmRleCk7CiAgICAgbm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5nZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxNzc1YjIwLi44YWY3
NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAt
NDcsMTMgKzQ3LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wg
ZW5hYmxlZCkgb3ZlcnJpZGUgeyBzZXRFbmFibGVkKGVuYWJsZWQpOyB9CiAKICAgICB2aXJ0dWFs
IGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQotCisg
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lk
OyB9CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xhYmVsOyB9CiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAKIHByaXZhdGU6CiAgICAgQXVkaW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIoR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF5YmluLCBnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwogCisgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBtX3BsYXliaW47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNjNDc4Y2UuLjdmMWVjNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02ODUs
NiArNjg1LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKCkKIAogICAgICAgICBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtX3BsYXlCaW4sIGks
IHBhZCk7CiAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKKyNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQorICAgICAgICBpZiAoaXNNZWRpYVNvdXJjZSgpKSB7CisgICAgICAgICAg
ICAvLyBUT0RPOiBUaGlzIHdpbGwgbGVhayBpZiB0aGUgZXZlbnQgZ2V0cyBmcmVlZCB3aXRob3V0
IGFycml2aW5nIGluCisgICAgICAgICAgICAvLyB0aGUgc291cmNlLCBlLmcuIHdoZW4gd2UgZ28g
Zmx1c2hpbmcgaGVyZQorICAgICAgICAgICAgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyPiogdHJhY2tDb3B5ID0gbmV3IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4o
dHJhY2spOworICAgICAgICAgICAgR3N0U3RydWN0dXJlKiB2aWRlb0V2ZW50U3RydWN0dXJlID0g
Z3N0X3N0cnVjdHVyZV9uZXcoIndlYktpdFZpZGVvVHJhY2siLCAidHJhY2siLCBHX1RZUEVfUE9J
TlRFUiwgdHJhY2tDb3B5LCBudWxscHRyKTsKKyAgICAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVu
dChwYWQuZ2V0KCksIGdzdF9ldmVudF9uZXdfY3VzdG9tKEdTVF9FVkVOVF9DVVNUT01fVVBTVFJF
QU0sIHZpZGVvRXZlbnRTdHJ1Y3R1cmUpKTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIG1f
cGxheWVyLT5hZGRWaWRlb1RyYWNrKHRyYWNrLnJlbGVhc2UoKSk7CiAgICAgfQogCkBAIC03MzMs
NiArNzQyLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZkF1ZGlvKCkKIAogICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+
IHRyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShtX3BsYXlCaW4sIGks
IHBhZCk7CiAgICAgICAgIG1fYXVkaW9UcmFja3MuaW5zZXJ0KGksIHRyYWNrKTsKKyAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKKyAgICAgICAgIGlmIChpc01lZGlhU291cmNlKCkpIHsKKyAgICAg
ICAgICAgICAvLyBUT0RPOiBUaGlzIHdpbGwgbGVhayBpZiB0aGUgZXZlbnQgZ2V0cyBmcmVlZCB3
aXRob3V0IGFycml2aW5nIGluCisgICAgICAgICAgICAgLy8gdGhlIHNvdXJjZSwgZS5nLiB3aGVu
IHdlIGdvIGZsdXNoaW5nIGhlcmUKKyAgICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI+KiB0cmFja0NvcHkgPSBuZXcgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyPih0cmFjayk7CisgICAgICAgICAgICAgR3N0U3RydWN0dXJlKiBhdWRpb0V2ZW50U3Ry
dWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcoIndlYktpdEF1ZGlvVHJhY2siLCAidHJhY2siLCBH
X1RZUEVfUE9JTlRFUiwgdHJhY2tDb3B5LCBudWxscHRyKTsKKyAgICAgICAgICAgICBnc3RfcGFk
X3B1c2hfZXZlbnQocGFkLmdldCgpLCBnc3RfZXZlbnRfbmV3X2N1c3RvbShHU1RfRVZFTlRfQ1VT
VE9NX1VQU1RSRUFNLCBhdWRpb0V2ZW50U3RydWN0dXJlKSk7CisgICAgICAgICB9CisgI2VuZGlm
CiAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKHRyYWNrLnJlbGVhc2UoKSk7CiAgICAg
fQogCkBAIC03NzMsNiArNzkxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVGV4dCgpCiAKICAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6
Y3JlYXRlKGksIHBhZCk7CiAgICAgICAgIG1fdGV4dFRyYWNrcy5pbnNlcnQoaSwgdHJhY2spOwor
ICAgICAgICAvLyBUT0RPOiBUZXh0IHRyYWNrcyBmb3IgdGhlIG1lZGlhIHNvdXJjZQogICAgICAg
ICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLnJlbGVhc2UoKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA4ZDMzYTIwLi40Nzc1OGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ2LDE1ICs0NiwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIE1lZGlhU291cmNlR1N0cmVhbWVyOjpvcGVuKE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UsIFdlYktpdE1lZGlhU3JjKiBzcmMp
CiB7CiAgICAgQVNTRVJUKG1lZGlhU291cmNlKTsKLSAgICBtZWRpYVNvdXJjZS0+c2V0UHJpdmF0
ZUFuZE9wZW4oYWRvcHRSZWYoKm5ldyBNZWRpYVNvdXJjZUdTdHJlYW1lcihtZWRpYVNvdXJjZSwg
c3JjKSkpOworICAgIFJlZlB0cjxNZWRpYVNvdXJjZUdTdHJlYW1lcj4gc291cmNlR1N0cmVhbWVy
ID0gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlR1N0cmVhbWVyKG1lZGlhU291cmNlLCBzcmMpKTsK
KyAgICBtZWRpYVNvdXJjZS0+c2V0UHJpdmF0ZUFuZE9wZW4oKnNvdXJjZUdTdHJlYW1lcik7CiB9
CiAKIE1lZGlhU291cmNlR1N0cmVhbWVyOjpNZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlLCBXZWJLaXRNZWRpYVNyYyogc3JjKQotICAgIDog
bV9jbGllbnQoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyKHNyYykpKQor
ICAgIDogTWVkaWFTb3VyY2VQcml2YXRlKCkKICAgICAsIG1fbWVkaWFTb3VyY2UobWVkaWFTb3Vy
Y2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogewotICAg
IEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQgPSBNZWRpYVNvdXJjZUNsaWVudEdTdHJl
YW1lcjo6Y3JlYXRlKHNyYyk7CiB9CiAKIE1lZGlhU291cmNlR1N0cmVhbWVyOjp+TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIoKQpAQCAtNjMsMTAgKzY0LDkgQEAgTWVkaWFTb3VyY2VHU3RyZWFtZXI6On5N
ZWRpYVNvdXJjZUdTdHJlYW1lcigpCiAKIE1lZGlhU291cmNlR1N0cmVhbWVyOjpBZGRTdGF0dXMg
TWVkaWFTb3VyY2VHU3RyZWFtZXI6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYgc291cmNlQnVmZmVyUHJp
dmF0ZSkKIHsKLSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gc291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lciA9IG5ldyBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
KG1fY2xpZW50LmdldCgpLCBjb250ZW50VHlwZSk7Ci0KLSAgICBzb3VyY2VCdWZmZXJQcml2YXRl
ID0gYWRvcHRSZWYoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5nZXQoKSk7Ci0gICAgcmV0
dXJuIG1fY2xpZW50LT5hZGRTb3VyY2VCdWZmZXIoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
ciwgY29udGVudFR5cGUpOworICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1fY2xpZW50LmdldCgpLCBjb250ZW50VHlwZSkpOwor
ICAgIHNvdXJjZUJ1ZmZlclByaXZhdGUgPSBtX3NvdXJjZUJ1ZmZlcnMubGFzdCgpOworICAgIHJl
dHVybiBtX2NsaWVudC0+YWRkU291cmNlQnVmZmVyKG1fc291cmNlQnVmZmVycy5sYXN0KCksIGNv
bnRlbnRUeXBlKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFu
Z2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmgKaW5kZXggZjMwYjI5Zi4uZGU5
NTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU291cmNlR1N0cmVhbWVyLmgKQEAgLTU5LDYgKzU5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNZWRpYVNvdXJjZUdTdHJlYW1lcihNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQqLCBXZWJLaXRNZWRpYVNyYyopOwogCisgICAgVmVjdG9yPFJlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPj4gbV9zb3VyY2VCdWZmZXJzOwogICAgIFJlZlB0
cjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcj4gbV9jbGllbnQ7CiAgICAgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50KiBtX21lZGlhU291cmNlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCBiYjUwODQwLi5iNDE3OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNiwxMiArMzYsMTkgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiQ29u
dGVudFR5cGUuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyPiBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
UGFzc1JlZlB0cjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcj4gY2xpZW50LCBjb25zdCBDb250
ZW50VHlwZSYgY29udGVudFR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyKGNsaWVudCwgY29udGVudFR5cGUpKTsKK30KKwogU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcihQYXNz
UmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyPiBjbGllbnQsIGNvbnN0IENvbnRlbnRU
eXBlJiBjb250ZW50VHlwZSkKLSAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKKyAgICA6IFNvdXJj
ZUJ1ZmZlclByaXZhdGUoKQorICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykK
IHsKQEAgLTYxLDggKzY4LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6
YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgQVNTRVJU
KG1fY2xpZW50KTsKICAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KTsKIAot
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCByZXN1bHQgPSBtX2Ns
aWVudC0+YXBwZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUodGhpcywgcmVzdWx0
KTsKKyAgICBpZiAoIW1fY2xpZW50LT5hcHBlbmQodGhpcywgZGF0YSwgbGVuZ3RoKSkgeworICAg
ICAgICBpZiAobV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KQorICAgICAgICAgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
dGhpcywgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6UmVhZFN0cmVhbUZhaWxlZCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAg
ICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKHRoaXMsIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2Nl
ZWRlZCk7CisgICAgfQogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmFi
b3J0KCkKQEAgLTExOCw1ICsxMzAsMTcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHIKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiBpbml0aWFsaXphdGlvblNlZ21lbnQpCit7
CisgICAgaWYgKG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKKyAgICAgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudCh0aGlzLCBpbml0aWFsaXphdGlvblNlZ21lbnQpOworfQorCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OmRpZFJlY2VpdmVTYW1wbGUoUGFzc1JlZlB0cjxN
ZWRpYVNhbXBsZT4gc2FtcGxlKQoreworICAgIGlmIChtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQpCisgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVTYW1wbGUodGhpcywgc2FtcGxlKTsKK30KKwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA5NjBmODc2
Li45OGFmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZh
dGUgewogcHVibGljOgotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoUGFzc1JlZlB0
cjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcj4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4gY3JlYXRlKFBh
c3NSZWZQdHI8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+LCBjb25zdCBDb250ZW50VHlwZSYp
OwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopOwpAQCAtNjMs
NiArNjMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVh
ZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpOwogCiBwcml2YXRlOgorICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIoUGFzc1JlZlB0cjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
cj4sIGNvbnN0IENvbnRlbnRUeXBlJik7CisgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291cmNlQ2xp
ZW50R1N0cmVhbWVyOworCisgICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPik7CisK
ICAgICBDb250ZW50VHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0
cmVhbWVyPiBtX2NsaWVudDsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCBlMzY1MmMzLi5jZmNkZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDYgKzM3LDggQEAgVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKEdSZWZQdHI8
R3N0RWxlbWVudD4gcGxheWIKICAgICA6IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIodGhpcywg
aW5kZXgsIHBhZCkKICAgICAsIG1fcGxheWJpbihwbGF5YmluKQogeworICAgIC8vIEZJWE1FOiBH
ZXQgYSByZWFsIElEIGhlcmUKKyAgICBtX2lkID0gIlYiICsgU3RyaW5nOjpudW1iZXIoaW5kZXgp
OwogICAgIG5vdGlmeVRyYWNrT2ZBY3RpdmVDaGFuZ2VkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggYjIxNjIyMS4uNDVhM2JmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ3LDEzICs0
NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGVuYWJsZWQp
IG92ZXJyaWRlIHsgc2V0U2VsZWN0ZWQoZW5hYmxlZCk7IH0KIAogICAgIHZpcnR1YWwgaW50IHRy
YWNrSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9Ci0KKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KICAg
ICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGFiZWw7IH0KICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KIAogcHJpdmF0ZToKICAgICBWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcihHUmVmUHRyPEdzdEVsZW1lbnQ+IHBsYXliaW4sIGdpbnQgaW5kZXgsIEdS
ZWZQdHI8R3N0UGFkPik7Ci0KKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IG1fcGxheWJpbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc0YTcwNzYuLjQ2NWRmYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMjQsMjEgKzI0LDE2NCBA
QAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoR1NU
UkVBTUVSKQogCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZUdTdHJlYW1l
ci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKKyNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCi0jaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBz
cmMuaD4KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2lu
Zy1wbHVnaW5zLmg+CisjaW5jbHVkZSA8Z3N0L2FwcC9hcHAuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1
dGlscy9wYnV0aWxzLmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUKK3sKK2NsYXNzIEdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb24g
OiBwdWJsaWMgTWVkaWFEZXNjcmlwdGlvbiB7Citwcml2YXRlOgorICAgIEdzdENhcHMqIG1fY2Fw
czsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJNZWRpYURlc2NyaXB0
aW9uPiBjcmVhdGUoR3N0Q2FwcyogY2FwcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbihjYXBzKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+R1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbigpCisgICAgeworICAgICAgICBnc3RfY2Fw
c191bnJlZihtX2NhcHMpOworICAgIH0KKworICAgIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICBnY2hhciogZGVzY3JpcHRpb24gPSBnc3RfcGJfdXRp
bHNfZ2V0X2NvZGVjX2Rlc2NyaXB0aW9uKG1fY2Fwcyk7CisgICAgICAgIEF0b21pY1N0cmluZyBj
b2RlY05hbWUoZGVzY3JpcHRpb24pOworICAgICAgICBnX2ZyZWUoZGVzY3JpcHRpb24pOworCisg
ICAgICAgIHJldHVybiBjb2RlY05hbWU7CisgICAgfQorCisgICAgYm9vbCBpc1ZpZGVvKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdzdFN0cnVjdHVyZSogcyA9IGdzdF9jYXBzX2dl
dF9zdHJ1Y3R1cmUobV9jYXBzLCAwKTsKKyAgICAgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnc3Rf
c3RydWN0dXJlX2dldF9uYW1lKHMpOworCisgICAgICAgIHJldHVybiBnX3N0cl9oYXNfcHJlZml4
KG5hbWUsICJ2aWRlby8iKTsKKyAgICB9CisKKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVj
dHVyZShtX2NhcHMsIDApOworICAgICAgICBjb25zdCBnY2hhciogbmFtZSA9IGdzdF9zdHJ1Y3R1
cmVfZ2V0X25hbWUocyk7CisKKyAgICAgICAgcmV0dXJuIGdfc3RyX2hhc19wcmVmaXgobmFtZSwg
ImF1ZGlvLyIpOworICAgIH0KKworICAgIGJvb2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBHU3RyZWFtZXJNZWRpYURlc2NyaXB0aW9uKEdzdENhcHMqIGNhcHMpCisgICAg
ICAgIDogTWVkaWFEZXNjcmlwdGlvbigpCisgICAgICAgICwgbV9jYXBzKGdzdF9jYXBzX3JlZihj
YXBzKSkKKyAgICB7CisgICAgfQorfTsKKworY2xhc3MgR1N0cmVhbWVyTWVkaWFTYW1wbGUgOiBw
dWJsaWMgTWVkaWFTYW1wbGUKK3sKK3ByaXZhdGU6CisgICAgTWVkaWFUaW1lIG1fcHRzLCBtX2R0
cywgbV9kdXJhdGlvbjsKKyAgICBBdG9taWNTdHJpbmcgbV90cmFja0lEOworICAgIHNpemVfdCBt
X3NpemU7CisgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKKyAgICBNZWRpYVNhbXBs
ZTo6U2FtcGxlRmxhZ3MgbV9mbGFnczsKKyAgICBHU3RyZWFtZXJNZWRpYVNhbXBsZShHc3RCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHRyYWNrSUQpCisgICAgICAgIDogTWVkaWFTYW1wbGUoKQorICAgICAgICAsIG1f
cHRzKE1lZGlhVGltZTo6emVyb1RpbWUoKSkKKyAgICAgICAgLCBtX2R0cyhNZWRpYVRpbWU6Onpl
cm9UaW1lKCkpCisgICAgICAgICwgbV9kdXJhdGlvbihNZWRpYVRpbWU6Onplcm9UaW1lKCkpCisg
ICAgICAgICwgbV90cmFja0lEKHRyYWNrSUQpCisgICAgICAgICwgbV9wcmVzZW50YXRpb25TaXpl
KHByZXNlbnRhdGlvblNpemUpCisgICAgICAgICwgbV9mbGFncyhNZWRpYVNhbXBsZTo6SXNTeW5j
KQorICAgIHsKKyAgICAgICAgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpCisg
ICAgICAgICAgICBtX3B0cyA9IE1lZGlhVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpLCBHU1Rf
U0VDT05EKTsKKyAgICAgICAgaWYgKEdTVF9CVUZGRVJfRFRTX0lTX1ZBTElEKGJ1ZmZlcikpCisg
ICAgICAgICAgICBtX2R0cyA9IE1lZGlhVGltZShHU1RfQlVGRkVSX0RUUyhidWZmZXIpLCBHU1Rf
U0VDT05EKTsKKyAgICAgICAgaWYgKEdTVF9CVUZGRVJfRFVSQVRJT05fSVNfVkFMSUQoYnVmZmVy
KSkKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUoR1NUX0JVRkZFUl9EVVJBVElP
TihidWZmZXIpLCBHU1RfU0VDT05EKTsKKyAgICAgICAgbV9zaXplID0gZ3N0X2J1ZmZlcl9nZXRf
c2l6ZShidWZmZXIpOworCisgICAgICAgIGlmIChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUKGJ1ZmZl
ciwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpKQorICAgICAgICAgICAgbV9mbGFncyA9IE1l
ZGlhU2FtcGxlOjpOb25lOworCisgICAgICAgIGlmIChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUKGJ1
ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RFQ09ERV9PTkxZKSkKKyAgICAgICAgICAgIG1fZmxhZ3Mg
PSAoTWVkaWFTYW1wbGU6OlNhbXBsZUZsYWdzKSAobV9mbGFncyB8IE1lZGlhU2FtcGxlOjpOb25E
aXNwbGF5aW5nKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3Ry
ZWFtZXJNZWRpYVNhbXBsZT4gY3JlYXRlKEdzdEJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJRCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1N0cmVhbWVyTWVkaWFTYW1wbGUoYnVmZmVy
LCBwcmVzZW50YXRpb25TaXplLCB0cmFja0lEKSk7CisgICAgfQorCisgICAgTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3B0czsgfQorICAgIE1lZGlhVGltZSBk
ZWNvZGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9kdHM7IH0KKyAgICBNZWRpYVRpbWUgZHVyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgQXRvbWljU3RyaW5nIHRyYWNr
SUQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQorICAgIFNhbXBsZUZsYWdz
IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIFBsYXRmb3JtU2FtcGxlIHBs
YXRmb3JtU2FtcGxlKCkgeyByZXR1cm4gUGxhdGZvcm1TYW1wbGUoKTsgfQorICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IHt9Cit9OworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX1N0cmVh
bSBTdHJlYW07CiB0eXBlZGVmIHN0cnVjdCBfU291cmNlIFNvdXJjZTsKKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIEdzdEJ1ZmZlciogYnVmZmVyOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVz
ZW50YXRpb25TaXplOworfSBQZW5kaW5nUmVjZWl2ZVNhbXBsZTsKKworc3RydWN0IF9TdHJlYW0K
K3sKKyAgICBTb3VyY2UqIHBhcmVudDsKKworICAgIC8vIE1pZ2h0IGJlIDAsIGUuZy4gZm9yIFZQ
OC9WUDkKKyAgICBHc3RFbGVtZW50ICpwYXJzZXI7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAg
R3N0Q2FwcyogY2FwczsKKyAgICBSZWZQdHI8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+ICphdWRpb1RyYWNrOworICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4gKnZpZGVvVHJhY2s7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRh
dGlvblNpemU7CisgICAgR0xpc3QqIHBlbmRpbmdSZWNlaXZlU2FtcGxlOworfTsKKwogc3RydWN0
IF9Tb3VyY2UgeworICAgIFdlYktpdE1lZGlhU3JjKiBwYXJlbnQ7CiAgICAgR3N0RWxlbWVudCog
c3JjOworICAgIEdzdEVsZW1lbnQqIHR5cGVmaW5kOworICAgIC8vIE1heSBiZSAwIGlmIGVsZW1l
bnRhcnkgc3RyZWFtCisgICAgR3N0RWxlbWVudCogZGVtdXhlcjsKKyAgICBHc3RFbGVtZW50KiBt
dWx0aXF1ZXVlOworICAgIEdMaXN0KiBzdHJlYW1zOworCisgICAgLy8gV2UgZXhwb3NlIGV2ZXJ5
dGhpbmcgd2hlbgorICAgIC8vIGFsbCBzb3VyY2VzIGFyZSBub01vcmVQYWRzCisgICAgYm9vbCBu
b01vcmVQYWRzOworCiAgICAgLy8gSnVzdCBmb3IgaWRlbnRpZmljYXRpb24KLSAgICBXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlKiBzb3VyY2VCdWZmZXI7CisgICAgV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lciogc291cmNlQnVmZmVyOwogfTsKIAogc3RydWN0IF9XZWJL
aXRNZWRpYVNyY1ByaXZhdGUgewpAQCAtNDgsNiArMTkxLDkgQEAgc3RydWN0IF9XZWJLaXRNZWRp
YVNyY1ByaXZhdGUgewogICAgIGJvb2wgaGF2ZUFwcHNyYzsKICAgICBib29sIGFzeW5jU3RhcnQ7
CiAgICAgYm9vbCBub01vcmVQYWRzOworICAgIGludCBudW1iZXJPZlBhZHM7CisKKyAgICBXZWJD
b3JlOjpNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lciogbWVkaWFTb3VyY2VDbGllbnQ7CiB9Owog
CiBlbnVtIHsKQEAgLTY5LDYgKzIxNSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU2V0
UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSosCiBzdGF0
aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0dldFByb3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsdWUqLCBHUGFyYW1TcGVjKik7CiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4g
d2ViS2l0TWVkaWFTcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiwgR3N0U3RhdGVDaGFuZ2UpOwog
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjUXVlcnlXaXRoUGFyZW50KEdzdFBhZCosIEdz
dE9iamVjdCosIEdzdFF1ZXJ5Kik7CitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNFdmVu
dFdpdGhQYXJlbnQoR3N0UGFkKiwgR3N0T2JqZWN0KiwgR3N0RXZlbnQqKTsKIAogI2RlZmluZSB3
ZWJraXRfbWVkaWFfc3JjX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIC8vIFdlIHNwbGl0IHRo
aXMgb3V0IGludG8gYW5vdGhlciBtYWNybyB0byBhdm9pZCBhIGNoZWNrLXdlYmtpdC1zdHlsZSBl
cnJvci4KQEAgLTI0Miw2ICszODksNDA3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNy
Y1F1ZXJ5V2l0aFBhcmVudChHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBwYXJlbnQsIEdzCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KFNvdXJjZSogc291cmNlKTsKKworc3RhdGljIGdib29sZWFu
IHdlYktpdE1lZGlhU3JjRXZlbnRXaXRoUGFyZW50KEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHBh
cmVudCwgR3N0RXZlbnQqIGV2ZW50KQoreworICAgIGdib29sZWFuIHJlc3VsdCA9IEZBTFNFOwor
CisgICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRShldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVO
VF9DVVNUT01fVVBTVFJFQU06eworICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHMgPSBnc3Rf
ZXZlbnRfZ2V0X3N0cnVjdHVyZShldmVudCk7CisKKyAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUocywgIndlYktpdEF1ZGlvVHJhY2siKSkgeworICAgICAgICAgICAgU3RyZWFtKiBz
dHJlYW0gPSAoU3RyZWFtKikgZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlKHBhZCk7CisgICAg
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+KiBhdWRp
b1RyYWNrOworCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldChzLCAidHJhY2siLCBHX1RZ
UEVfUE9JTlRFUiwgJmF1ZGlvVHJhY2ssIG51bGxwdHIpOworICAgICAgICAgICAgc3RyZWFtLT5h
dWRpb1RyYWNrID0gYXVkaW9UcmFjazsKKworICAgICAgICAgICAgd2ViS2l0TWVkaWFTcmNEaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cmVhbS0+cGFyZW50KTsKKworICAgICAgICAg
ICAgcmVzdWx0ID0gVFJVRTsKKyAgICAgICAgICAgIGdzdF9ldmVudF91bnJlZihldmVudCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzLCAid2ViS2l0VmlkZW9U
cmFjayIpKSB7CisgICAgICAgICAgICBTdHJlYW0qIHN0cmVhbSA9IChTdHJlYW0qKSBnc3RfcGFk
X2dldF9lbGVtZW50X3ByaXZhdGUocGFkKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4qIHZpZGVvVHJhY2s7CisKKyAgICAgICAgICAgIGdz
dF9zdHJ1Y3R1cmVfZ2V0KHMsICJ0cmFjayIsIEdfVFlQRV9QT0lOVEVSLCAmdmlkZW9UcmFjaywg
bnVsbHB0cik7CisgICAgICAgICAgICBzdHJlYW0tPnZpZGVvVHJhY2sgPSB2aWRlb1RyYWNrOwor
CisgICAgICAgICAgICB3ZWJLaXRNZWRpYVNyY0RpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoc3RyZWFtLT5wYXJlbnQpOworCisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAg
ICAgICAgZ3N0X2V2ZW50X3VucmVmKGV2ZW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdChwYWQsIHBhcmVudCwgZXZlbnQpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXN1bHQgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQocGFkLCBwYXJlbnQsIGV2ZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEdzdFBh
ZCogZ2V0X2ludGVybmFsX2xpbmtlZF9wYWQoR3N0UGFkKiBwYWQpCit7CisgICAgR3N0SXRlcmF0
b3IqIGl0OworICAgIEdzdFBhZCogb3RoZXJwYWQ7CisgICAgR1ZhbHVlIGl0ZW0gPSBHX1ZBTFVF
X0lOSVQ7CisKKyAgICBpdCA9IGdzdF9wYWRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcyhwYWQpOwor
CisgICAgaWYgKCFpdCB8fCAoZ3N0X2l0ZXJhdG9yX25leHQoaXQsICZpdGVtKSkgIT0gR1NUX0lU
RVJBVE9SX09LCisgICAgICAgIHx8ICgob3RoZXJwYWQgPSBHU1RfUEFEKGdfdmFsdWVfZHVwX29i
amVjdCgmaXRlbSkpKSA9PSAwKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZ192
YWx1ZV91bnNldCgmaXRlbSk7CisgICAgaWYgKGl0KQorICAgICAgICBnc3RfaXRlcmF0b3JfZnJl
ZShpdCk7CisKKyAgICByZXR1cm4gb3RoZXJwYWQ7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAg
ICBTdHJlYW0qIHN0cmVhbTsKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpHU3RyZWFtZXJNZWRp
YVNhbXBsZT4gc2FtcGxlOworfSBSZWNlaXZlU2FtcGxlOworCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0V2ViU3JjRGlkUmVjZWl2ZVNhbXBsZShSZWNlaXZlU2FtcGxlKiBzYW1wbGUpCit7CisgICAg
c2FtcGxlLT5zdHJlYW0tPnBhcmVudC0+cGFyZW50LT5wcml2LT5tZWRpYVNvdXJjZUNsaWVudC0+
ZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGUtPnN0cmVhbS0+cGFyZW50LT5zb3VyY2VCdWZmZXIsIHNh
bXBsZS0+c2FtcGxlKTsKKyAgICBzYW1wbGUtPnNhbXBsZS5yZWxlYXNlKCk7CisgICAgZ19mcmVl
KHNhbXBsZSk7CisgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworc3RhdGljIEdzdFBh
ZFByb2JlUmV0dXJuIHdlYktpdFdlYlNyY0J1ZmZlclByb2JlKEdzdFBhZCosIEdzdFBhZFByb2Jl
SW5mbyogaW5mbywgU3RyZWFtKiBzdHJlYW0pCit7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBH
U1RfQlVGRkVSKGluZm8tPmRhdGEpOworCisgICAgaWYgKCFzdHJlYW0tPmF1ZGlvVHJhY2sgJiYg
IXN0cmVhbS0+dmlkZW9UcmFjaykgeworICAgICAgICBQZW5kaW5nUmVjZWl2ZVNhbXBsZSogc2Ft
cGxlID0gZ19uZXcwKFBlbmRpbmdSZWNlaXZlU2FtcGxlLCAxKTsKKyAgICAgICAgc2FtcGxlLT5i
dWZmZXIgPSBnc3RfYnVmZmVyX3JlZihidWZmZXIpOworICAgICAgICBzYW1wbGUtPnByZXNlbnRh
dGlvblNpemUgPSBzdHJlYW0tPnByZXNlbnRhdGlvblNpemU7CisgICAgICAgIHN0cmVhbS0+cGVu
ZGluZ1JlY2VpdmVTYW1wbGUgPSBnX2xpc3RfYXBwZW5kKHN0cmVhbS0+cGVuZGluZ1JlY2VpdmVT
YW1wbGUsIHNhbXBsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVjZWl2ZVNhbXBsZSogc2Ft
cGxlID0gZ19uZXcwKFJlY2VpdmVTYW1wbGUsIDEpOworICAgICAgICBzYW1wbGUtPnNhbXBsZSA9
IFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhU2FtcGxlOjpjcmVhdGUoYnVmZmVyLCBzdHJlYW0tPnBy
ZXNlbnRhdGlvblNpemUsIHN0cmVhbS0+YXVkaW9UcmFjayA/IHN0cmVhbS0+YXVkaW9UcmFjay0+
Z2V0KCktPmlkKCkgOiBzdHJlYW0tPnZpZGVvVHJhY2stPmdldCgpLT5pZCgpKTsKKyAgICAgICAg
c2FtcGxlLT5zdHJlYW0gPSBzdHJlYW07CisgICAgICAgIGdfaWRsZV9hZGQoKEdTb3VyY2VGdW5j
KXdlYktpdFdlYlNyY0RpZFJlY2VpdmVTYW1wbGUsIHNhbXBsZSk7CisgICAgfQorICAgIHJldHVy
biBHU1RfUEFEX1BST0JFX09LOworfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0RlbXV4
ZXJOb01vcmVQYWRzKEdzdEVsZW1lbnQqLCBTb3VyY2UqIHNvdXJjZSk7CisKK3N0YXRpYyB2b2lk
IHdlYktpdE1lZGlhU3JjUGFyc2VyTm90aWZ5Q2FwcyhHT2JqZWN0KiBvYmplY3QsIEdQYXJhbVNw
ZWMqLCBTdHJlYW0qIHN0cmVhbSkKK3sKKyAgICBHc3RQYWQqIHNyY3BhZCA9IEdTVF9QQUQob2Jq
ZWN0KTsKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKHNyY3Bh
ZCk7CisKKyAgICBpZiAoIWNhcHMpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdFN0cnVjdHVy
ZSogcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisgICAgY29uc3QgZ2NoYXIq
IHN0cnVjdHVyZU5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lKHMpOworICAgIEdzdFZpZGVv
SW5mbyBpbmZvOworICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KHN0cnVjdHVyZU5hbWUsICJ2aWRl
by8iKSAmJiBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKSB7CisgICAgICAg
IGZsb2F0IHdpZHRoLCBoZWlnaHQ7CisKKyAgICAgICAgLy8gVE9ETzogY29ycmVjdD8KKyAgICAg
ICAgd2lkdGggPSBpbmZvLndpZHRoOworICAgICAgICBoZWlnaHQgPSBpbmZvLmhlaWdodCAqICgo
ZmxvYXQpIGluZm8ucGFyX2QgLyAoZmxvYXQpIGluZm8ucGFyX24pOworICAgICAgICBzdHJlYW0t
PnByZXNlbnRhdGlvblNpemUgPSBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6
RmxvYXRTaXplKCk7CisgICAgfQorCisgICAgLy8gVE9ETworICAgIGlmIChnc3RfcGFkX2lzX2xp
bmtlZChzcmNwYWQpKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gVE9ETzogQXRvbWljIGludHMsIEdSZWZQdHIKKyAgICBn
Y2hhciogcGFkTmFtZSA9IGdfc3RyZHVwX3ByaW50Zigic3JjXyV1Iiwgc3RyZWFtLT5wYXJlbnQt
PnBhcmVudC0+cHJpdi0+bnVtYmVyT2ZQYWRzKyspOworICAgIEdzdFBhZCogZ2hvc3RwYWQgPSBn
c3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlKHBhZE5hbWUsIHNyY3BhZCwgZ3N0X3N0YXRp
Y19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworCisKKyAgICBnc3RfcGFkX3NldF9x
dWVyeV9mdW5jdGlvbihnaG9zdHBhZCwgd2ViS2l0TWVkaWFTcmNRdWVyeVdpdGhQYXJlbnQpOwor
ICAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uKGdob3N0cGFkLCB3ZWJLaXRNZWRpYVNyY0V2
ZW50V2l0aFBhcmVudCk7CisKKyAgICBnc3RfcGFkX3NldF9lbGVtZW50X3ByaXZhdGUoZ2hvc3Rw
YWQsIHN0cmVhbSk7CisgICAgZ3N0X3BhZF9hZGRfcHJvYmUoZ2hvc3RwYWQsIEdTVF9QQURfUFJP
QkVfVFlQRV9CVUZGRVIsIChHc3RQYWRQcm9iZUNhbGxiYWNrKSB3ZWJLaXRXZWJTcmNCdWZmZXJQ
cm9iZSwgc3RyZWFtLCBudWxscHRyKTsKKworICAgIGdzdF9wYWRfc2V0X2FjdGl2ZShnaG9zdHBh
ZCwgVFJVRSk7CisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVChzdHJlYW0tPnBh
cmVudC0+cGFyZW50KSwgZ2hvc3RwYWQpOworICAgIHN0cmVhbS0+c3JjcGFkID0gZ2hvc3RwYWQ7
CisgICAgc3RyZWFtLT5jYXBzID0gY2FwczsKKworICAgIHdlYktpdE1lZGlhU3JjRGVtdXhlck5v
TW9yZVBhZHMobnVsbHB0ciwgc3RyZWFtLT5wYXJlbnQpOworfQorCitzdGF0aWMgdm9pZCB3ZWJL
aXRNZWRpYVNyY0RlbXV4ZXJQYWRBZGRlZChHc3RFbGVtZW50KiBkZW11eGVyLCBHc3RQYWQqIHBh
ZCwgU291cmNlKiBzb3VyY2UpCit7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9wYWRfZ2V0X2N1
cnJlbnRfY2FwcyhwYWQpOworICAgIEdzdFN0cnVjdHVyZSogcyA9IGdzdF9jYXBzX2dldF9zdHJ1
Y3R1cmUoY2FwcywgMCk7CisgICAgU3RyZWFtKiBzdHJlYW0gPSBnX25ldzAoU3RyZWFtLCAxKTsK
KworICAgIHN0cmVhbS0+cGFyZW50ID0gc291cmNlOworICAgIHNvdXJjZS0+c3RyZWFtcyA9IGdf
bGlzdF9wcmVwZW5kKHNvdXJjZS0+c3RyZWFtcywgc3RyZWFtKTsKKworICAgIGdfYXNzZXJ0KGNh
cHMgIT0gMCk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzLCAidmlkZW8veC1o
MjY0IikpIHsKKyAgICAgICAgR3N0RWxlbWVudCogcGFyc2VyOworICAgICAgICBHc3RFbGVtZW50
KiBjYXBzZmlsdGVyOworICAgICAgICBHc3RQYWQqIHBhZDsKKyAgICAgICAgR3N0Q2FwcyogY2Fw
czsKKworICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1oMjY0Iiwg
ImFsaWdubWVudCIsIEdfVFlQRV9TVFJJTkcsICJhdSIsIE5VTEwpOworICAgICAgICBwYXJzZXIg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImgyNjRwYXJzZSIsIDApOworICAgICAgICBjYXBz
ZmlsdGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJjYXBzZmlsdGVyIiwgMCk7CisgICAg
ICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMsIG51bGxwdHIpOworICAg
ICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgICAgICBzdHJlYW0tPnBhcnNlciA9IGdz
dF9iaW5fbmV3KG51bGxwdHIpOworICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4oc3Ry
ZWFtLT5wYXJzZXIpLCBwYXJzZXIsIGNhcHNmaWx0ZXIsIG51bGxwdHIpOworICAgICAgICBnc3Rf
ZWxlbWVudF9saW5rX3BhZHMocGFyc2VyLCAic3JjIiwgY2Fwc2ZpbHRlciwgInNpbmsiKTsKKwor
ICAgICAgICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChwYXJzZXIsICJzaW5rIik7
CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIsIGdzdF9naG9zdF9w
YWRfbmV3KCJzaW5rIiwgcGFkKSk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocGFkKTsKKwor
ICAgICAgICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChjYXBzZmlsdGVyLCAic3Jj
Iik7CisgICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIsIGdzdF9naG9z
dF9wYWRfbmV3KCJzcmMiLCBwYWQpKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihwYWQpOwor
ICAgIH0gZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzLCAidmlkZW8veC1oMjY1Iikp
IHsKKyAgICAgICAgR3N0RWxlbWVudCogcGFyc2VyOworICAgICAgICBHc3RFbGVtZW50KiBjYXBz
ZmlsdGVyOworICAgICAgICBHc3RQYWQqIHBhZDsKKyAgICAgICAgR3N0Q2FwcyogY2FwczsKKwor
ICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1oMjY1IiwgImFsaWdu
bWVudCIsIEdfVFlQRV9TVFJJTkcsICJhdSIsIE5VTEwpOworICAgICAgICBwYXJzZXIgPSBnc3Rf
ZWxlbWVudF9mYWN0b3J5X21ha2UoImgyNjVwYXJzZSIsIDApOworICAgICAgICBjYXBzZmlsdGVy
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJjYXBzZmlsdGVyIiwgMCk7CisgICAgICAgIGdf
b2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGNhcHMsIG51bGxwdHIpOworICAgICAgICBn
c3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgICAgICBzdHJlYW0tPnBhcnNlciA9IGdzdF9iaW5f
bmV3KG51bGxwdHIpOworICAgICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4oc3RyZWFtLT5w
YXJzZXIpLCBwYXJzZXIsIGNhcHNmaWx0ZXIsIG51bGxwdHIpOworICAgICAgICBnc3RfZWxlbWVu
dF9saW5rX3BhZHMocGFyc2VyLCAic3JjIiwgY2Fwc2ZpbHRlciwgInNpbmsiKTsKKworICAgICAg
ICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChwYXJzZXIsICJzaW5rIik7CisgICAg
ICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIsIGdzdF9naG9zdF9wYWRfbmV3
KCJzaW5rIiwgcGFkKSk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocGFkKTsKKworICAgICAg
ICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChjYXBzZmlsdGVyLCAic3JjIik7Cisg
ICAgICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoc3RyZWFtLT5wYXJzZXIsIGdzdF9naG9zdF9wYWRf
bmV3KCJzcmMiLCBwYWQpKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihwYWQpOworICAgIH0g
ZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzLCAiYXVkaW8vbXBlZyIpKSB7CisgICAg
ICAgIGdpbnQgbXBlZ3ZlcnNpb24gPSAtMTsKKworICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9p
bnQocywgIm1wZWd2ZXJzaW9uIiwgJm1wZWd2ZXJzaW9uKTsKKyAgICAgICAgaWYgKG1wZWd2ZXJz
aW9uID09IDEpIHsKKyAgICAgICAgICAgIHN0cmVhbS0+cGFyc2VyID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJtcGVnYXVkaW9wYXJzZSIsIDApOworICAgICAgICB9IGVsc2UgaWYgKG1wZWd2
ZXJzaW9uID09IDIgfHwgbXBlZ3ZlcnNpb24gPT0gNCkgeworICAgICAgICAgICAgc3RyZWFtLT5w
YXJzZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFhY3BhcnNlIiwgMCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICB9
CisgICAgfQorCisgICAgR3N0UGFkKiBzaW5rcGFkOworICAgIEdzdFBhZCogc3JjcGFkOworICAg
IEdzdFBhZCogZ2hvc3RwYWQ7CisKKyAgICBzaW5rcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVl
c3RfcGFkKHNvdXJjZS0+bXVsdGlxdWV1ZSwgInNpbmtfJXUiKTsKKyAgICBnc3RfcGFkX2xpbmso
cGFkLCBzaW5rcGFkKTsKKworICAgIHNyY3BhZCA9IGdldF9pbnRlcm5hbF9saW5rZWRfcGFkKHNp
bmtwYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoc2lua3BhZCk7CisKKyAgICBpZiAoc3RyZWFt
LT5wYXJzZXIpIHsKKyAgICAgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihzb3VyY2UtPnBhcmVudCks
IHN0cmVhbS0+cGFyc2VyKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3Bh
cmVudChzdHJlYW0tPnBhcnNlcik7CisgICAgICAgIHNpbmtwYWQgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChzdHJlYW0tPnBhcnNlciwgInNpbmsiKTsKKyAgICAgICAgZ3N0X3BhZF9saW5r
KHNyY3BhZCwgc2lua3BhZCk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoc3JjcGFkKTsKKyAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihzaW5rcGFkKTsKKyAgICAgICAgc3JjcGFkID0gZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQoc3RyZWFtLT5wYXJzZXIsICJzcmMiKTsKKyAgICAgICAgZ19z
aWduYWxfY29ubmVjdChzcmNwYWQsICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNLKHdlYktpdE1l
ZGlhU3JjUGFyc2VyTm90aWZ5Q2FwcyksIHN0cmVhbSk7CisgICAgICAgIGdzdF9vYmplY3RfdW5y
ZWYoc3JjcGFkKTsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHNyY3BhZCwgIm5vdGlmeTo6Y2FwcyIs
IEdfQ0FMTEJBQ0sod2ViS2l0TWVkaWFTcmNQYXJzZXJOb3RpZnlDYXBzKSwgc3RyZWFtKTsKKwor
ICAgIC8vIFRPRE86IEF0b21pYyBpbnRzLCBHUmVmUHRyCisgICAgZ2NoYXIqIHBhZE5hbWUgPSBn
X3N0cmR1cF9wcmludGYoInNyY18ldSIsIHNvdXJjZS0+cGFyZW50LT5wcml2LT5udW1iZXJPZlBh
ZHMrKyk7CisgICAgZ2hvc3RwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlKHBh
ZE5hbWUsIHNyY3BhZCwgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkp
OworICAgIGdzdF9vYmplY3RfdW5yZWYoc3JjcGFkKTsKKworICAgIGdzdF9wYWRfc2V0X3F1ZXJ5
X2Z1bmN0aW9uKGdob3N0cGFkLCB3ZWJLaXRNZWRpYVNyY1F1ZXJ5V2l0aFBhcmVudCk7CisgICAg
Z3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24oZ2hvc3RwYWQsIHdlYktpdE1lZGlhU3JjRXZlbnRX
aXRoUGFyZW50KTsKKworICAgIGdzdF9wYWRfc2V0X2VsZW1lbnRfcHJpdmF0ZShnaG9zdHBhZCwg
c3RyZWFtKTsKKyAgICBnc3RfcGFkX2FkZF9wcm9iZShnaG9zdHBhZCwgR1NUX1BBRF9QUk9CRV9U
WVBFX0JVRkZFUiwgKEdzdFBhZFByb2JlQ2FsbGJhY2spIHdlYktpdFdlYlNyY0J1ZmZlclByb2Jl
LCBzdHJlYW0sIG51bGxwdHIpOworCisgICAgZ3N0X3BhZF9zZXRfYWN0aXZlKGdob3N0cGFkLCBU
UlVFKTsKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNvdXJjZS0+cGFyZW50
KSwgZ2hvc3RwYWQpOworICAgIHN0cmVhbS0+c3JjcGFkID0gZ2hvc3RwYWQ7CisgICAgc3RyZWFt
LT5jYXBzID0gY2FwczsKKworICAgIGNvbnN0IGdjaGFyKiBzdHJ1Y3R1cmVOYW1lID0gZ3N0X3N0
cnVjdHVyZV9nZXRfbmFtZShzKTsKKyAgICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgICBpZiAoZ19z
dHJfaGFzX3ByZWZpeChzdHJ1Y3R1cmVOYW1lLCAidmlkZW8vIikgJiYgZ3N0X3ZpZGVvX2luZm9f
ZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgeworICAgICAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0Owor
CisgICAgICAgIC8vIFRPRE86IGNvcnJlY3Q/CisgICAgICAgIHdpZHRoID0gaW5mby53aWR0aDsK
KyAgICAgICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQgKiAoKGZsb2F0KSBpbmZvLnBhcl9kIC8gKGZs
b2F0KSBpbmZvLnBhcl9uKTsKKworICAgICAgICBzdHJlYW0tPnByZXNlbnRhdGlvblNpemUgPSBX
ZWJDb3JlOjpGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
c3RyZWFtLT5wcmVzZW50YXRpb25TaXplID0gV2ViQ29yZTo6RmxvYXRTaXplKCk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0RlbXV4ZXJQYWRSZW1vdmVkKEdzdEVsZW1l
bnQqIGRlbXV4ZXIsIEdzdFBhZCogcGFkLCBTb3VyY2UqIHNvdXJjZSkKK3sKKworfQorCitzdGF0
aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0RpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291
cmNlKiBzb3VyY2UpCit7CisgICAgR0xpc3QqIGw7CisgICAgZm9yIChsID0gc291cmNlLT5zdHJl
YW1zOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgICBTdHJlYW0qIHN0cmVhbSA9IChTdHJlYW0q
KWwtPmRhdGE7CisgICAgICAgIGlmICghc3RyZWFtLT5hdWRpb1RyYWNrICYmICFzdHJlYW0tPnZp
ZGVvVHJhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVE9ETzogTG9j
a2luZworICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudCBpbml0aWFsaXphdGlvblNlZ21lbnQ7CisKKyAgICBpbml0aWFsaXphdGlvblNl
Z21lbnQuZHVyYXRpb24gPSBNZWRpYVRpbWUoc291cmNlLT5wYXJlbnQtPnByaXYtPmR1cmF0aW9u
LCBHU1RfU0VDT05EKTsKKyAgICBmb3IgKGwgPSBzb3VyY2UtPnN0cmVhbXM7IGw7IGwgPSBsLT5u
ZXh0KSB7CisgICAgICAgIFN0cmVhbSogc3RyZWFtID0gKFN0cmVhbSopbC0+ZGF0YTsKKyAgICAg
ICAgR3N0Q2FwcyogY2FwcyA9IHN0cmVhbS0+Y2FwczsKKworICAgICAgICBpZiAoc3RyZWFtLT5h
dWRpb1RyYWNrKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwor
ICAgICAgICAgICAgaW5mby50cmFjayA9ICpzdHJlYW0tPmF1ZGlvVHJhY2s7CisgICAgICAgICAg
ICBpbmZvLmRlc2NyaXB0aW9uID0gV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFEZXNjcmlwdGlvbjo6
Y3JlYXRlKHN0cmVhbS0+Y2Fwcyk7CisgICAgICAgICAgICBpbml0aWFsaXphdGlvblNlZ21lbnQu
YXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICB9IGVsc2UgaWYgKHN0cmVhbS0+dmlk
ZW9UcmFjaykgeworICAgICAgICAgICAgV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpWaWRlb1RyYWNrSW5mb3JtYXRpb24gaW5mbzsKKyAg
ICAgICAgICAgIGluZm8udHJhY2sgPSAqc3RyZWFtLT52aWRlb1RyYWNrOworICAgICAgICAgICAg
aW5mby5kZXNjcmlwdGlvbiA9IFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRGVzY3JpcHRpb246OmNy
ZWF0ZShzdHJlYW0tPmNhcHMpOworICAgICAgICAgICAgaW5pdGlhbGl6YXRpb25TZWdtZW50LnZp
ZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzb3VyY2UtPnBh
cmVudC0+cHJpdi0+bWVkaWFTb3VyY2VDbGllbnQtPmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoc291cmNlLT5zb3VyY2VCdWZmZXIsIGluaXRpYWxpemF0aW9uU2VnbWVudCk7CisKKyAg
ICBmb3IgKGwgPSBzb3VyY2UtPnN0cmVhbXM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICAgIFN0
cmVhbSogc3RyZWFtID0gKFN0cmVhbSopbC0+ZGF0YTsKKyAgICAgICAgR0xpc3QqIG07CisKKyAg
ICAgICAgZm9yIChtID0gc3RyZWFtLT5wZW5kaW5nUmVjZWl2ZVNhbXBsZTsgbTsgbSA9IG0tPm5l
eHQpIHsKKyAgICAgICAgICAgIFBlbmRpbmdSZWNlaXZlU2FtcGxlKiBwZW5kaW5nID0gKFBlbmRp
bmdSZWNlaXZlU2FtcGxlKiltLT5kYXRhOworCisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
R1N0cmVhbWVyTWVkaWFTYW1wbGU+IHNhbXBsZSA9IFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhU2Ft
cGxlOjpjcmVhdGUocGVuZGluZy0+YnVmZmVyLCBwZW5kaW5nLT5wcmVzZW50YXRpb25TaXplLCBz
dHJlYW0tPmF1ZGlvVHJhY2sgPyBzdHJlYW0tPmF1ZGlvVHJhY2stPmdldCgpLT5pZCgpIDogc3Ry
ZWFtLT52aWRlb1RyYWNrLT5nZXQoKS0+aWQoKSk7CisgICAgICAgICAgICBzb3VyY2UtPnBhcmVu
dC0+cHJpdi0+bWVkaWFTb3VyY2VDbGllbnQtPmRpZFJlY2VpdmVTYW1wbGUoc291cmNlLT5zb3Vy
Y2VCdWZmZXIsIHNhbXBsZSk7CisgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHBlbmRpbmct
PmJ1ZmZlcik7CisgICAgICAgICAgICBnX2ZyZWUocGVuZGluZyk7CisgICAgICAgIH0KKyAgICAg
ICAgZ19saXN0X2ZyZWUoc3RyZWFtLT5wZW5kaW5nUmVjZWl2ZVNhbXBsZSk7CisgICAgICAgIHN0
cmVhbS0+cGVuZGluZ1JlY2VpdmVTYW1wbGUgPSBudWxscHRyOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFTcmNEZW11eGVyTm9Nb3JlUGFkcyhHc3RFbGVtZW50KiwgU291cmNl
KiBzb3VyY2UpCit7CisgICAgR0xpc3QqIGw7CisgICAgYm9vbCBhbGxEb25lID0gdHJ1ZTsKKyAg
ICBzb3VyY2UtPm5vTW9yZVBhZHMgPSB0cnVlOworICAgIC8vIFRPRE86IExvY2tpbmcKKyAgICBm
b3IgKGwgPSBzb3VyY2UtPnBhcmVudC0+cHJpdi0+c291cmNlczsgbDsgbCA9IGwtPm5leHQpIHsK
KyAgICAgICAgU291cmNlKiB0bXAgPSAoU291cmNlKilsLT5kYXRhOworCisgICAgICAgIGFsbERv
bmUgPSBhbGxEb25lICYmIHRtcC0+bm9Nb3JlUGFkczsKKworICAgICAgICBHTGlzdCogbTsKKyAg
ICAgICAgZm9yIChtID0gc291cmNlLT5zdHJlYW1zOyBtOyBtID0gbS0+bmV4dCkgeworICAgICAg
ICAgICAgU3RyZWFtKiBzdHJlYW0gPSAoU3RyZWFtKiltLT5kYXRhOworCisgICAgICAgICAgICBh
bGxEb25lID0gYWxsRG9uZSAmJiBzdHJlYW0tPmNhcHMgIT0gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoYWxsRG9uZSkgeworICAgICAgICBzb3VyY2UtPnBhcmVudC0+cHJpdi0+
bm9Nb3JlUGFkcyA9IHRydWU7CisgICAgICAgIGdzdF9lbGVtZW50X25vX21vcmVfcGFkcyhHU1Rf
RUxFTUVOVChzb3VyY2UtPnBhcmVudCkpOworICAgICAgICB3ZWJLaXRNZWRpYVNyY0RvQXN5bmNE
b25lKHNvdXJjZS0+cGFyZW50KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlh
U3JjSGF2ZVR5cGUoR3N0RWxlbWVudCogdHlwZWZpbmQsIGd1aW50IHByb2JhYmlsaXR5LCBHc3RD
YXBzKiBjYXBzLCBTb3VyY2UqIHNvdXJjZSkKK3sKKyAgICBpZiAoc291cmNlLT5kZW11eGVyIHx8
IHNvdXJjZS0+c3RyZWFtcykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0U3RydWN0dXJlKiBz
ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShjYXBzLCAwKTsKKyAgICBpZiAoZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzLCAidmlkZW8vd2VibSIpIHx8IGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUocywg
ImF1ZGlvL3dlYm0iKSkgeworICAgICAgICBzb3VyY2UtPmRlbXV4ZXIgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoIm1hdHJvc2thZGVtdXgiLCBOVUxMKTsKKyAgICB9IGVsc2UgaWYgKGdzdF9z
dHJ1Y3R1cmVfaGFzX25hbWUocywgInZpZGVvL3F1aWNrdGltZSIpIHx8IGdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUocywgImF1ZGlvL3gtbTRhIikKKyAgICAgICAgICAgICAgIHx8IGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUocywgImFwcGxpY2F0aW9uL3gtM2dwIikpIHsKKyAgICAgICAgc291cmNlLT5k
ZW11eGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdGRlbXV4IiwgTlVMTCk7CisgICAg
fSBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHMsICJ2aWRlby9tcGVndHMiKSkgewor
ICAgICAgICBzb3VyY2UtPmRlbXV4ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInRzZGVt
dXgiLCBOVUxMKTsKKyAgICB9IGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUocywgImF1
ZGlvL21wZWciKSkgeworICAgICAgICBnaW50IG1wZWd2ZXJzaW9uID0gLTE7CisKKyAgICAgICAg
Z3N0X3N0cnVjdHVyZV9nZXRfaW50KHMsICJtcGVndmVyc2lvbiIsICZtcGVndmVyc2lvbik7Cisg
ICAgICAgIGlmIChtcGVndmVyc2lvbiA9PSAxKSB7CisgICAgICAgICAgICAvLyBUT0RPOiBNUDMK
KyAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAo
bXBlZ3ZlcnNpb24gPT0gMiB8fCBtcGVndmVyc2lvbiA9PSA0KSB7CisgICAgICAgICAgICAvLyBU
T0RPOiBBQUMKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9CisKKyAg
ICBpZiAoc291cmNlLT5kZW11eGVyKSB7CisgICAgICAgIHNvdXJjZS0+bXVsdGlxdWV1ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgibXVsdGlxdWV1ZSIsIE5VTEwpOworCisgICAgICAgIGdz
dF9iaW5fYWRkX21hbnkoR1NUX0JJTihzb3VyY2UtPnBhcmVudCksIHNvdXJjZS0+ZGVtdXhlciwg
c291cmNlLT5tdWx0aXF1ZXVlLCBudWxscHRyKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3luY19z
dGF0ZV93aXRoX3BhcmVudChzb3VyY2UtPmRlbXV4ZXIpOworICAgICAgICBnc3RfZWxlbWVudF9z
eW5jX3N0YXRlX3dpdGhfcGFyZW50KHNvdXJjZS0+bXVsdGlxdWV1ZSk7CisKKyAgICAgICAgZ3N0
X2VsZW1lbnRfbGlua19wYWRzKHR5cGVmaW5kLCAic3JjIiwgc291cmNlLT5kZW11eGVyLCAic2lu
ayIpOworCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cmNlLT5kZW11eGVyLCAicGFkLWFk
ZGVkIiwgR19DQUxMQkFDSyh3ZWJLaXRNZWRpYVNyY0RlbXV4ZXJQYWRBZGRlZCksIHNvdXJjZSk7
CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cmNlLT5kZW11eGVyLCAicGFkLXJlbW92ZWQi
LCBHX0NBTExCQUNLKHdlYktpdE1lZGlhU3JjRGVtdXhlclBhZFJlbW92ZWQpLCBzb3VyY2UpOwor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNvdXJjZS0+ZGVtdXhlciwgIm5vLW1vcmUtcGFkcyIs
IEdfQ0FMTEJBQ0sod2ViS2l0TWVkaWFTcmNEZW11eGVyTm9Nb3JlUGFkcyksIHNvdXJjZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9Cit9CisK
KworCiAvLyB1cmkgaGFuZGxlciBpbnRlcmZhY2UKIHN0YXRpYyBHc3RVUklUeXBlIHdlYktpdE1l
ZGlhU3JjVXJpR2V0VHlwZShHVHlwZSkKIHsKQEAgLTMwMCwxNiArODQ4LDIzIEBAIHN0YXRpYyB2
b2lkIHdlYktpdE1lZGlhU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRl
cikKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworUGFzc1JlZlB0cjxNZWRpYVNvdXJjZUNsaWVu
dEdTdHJlYW1lcj4gTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI6OmNyZWF0ZShXZWJLaXRNZWRp
YVNyYyogc3JjKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VDbGllbnRH
U3RyZWFtZXIoc3JjKSk7Cit9CisKIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyOjpNZWRpYVNv
dXJjZUNsaWVudEdTdHJlYW1lcihXZWJLaXRNZWRpYVNyYyogc3JjKQotICAgIDogbV9zcmMoYWRv
cHRHUmVmKHN0YXRpY19jYXN0PFdlYktpdE1lZGlhU3JjKj4oZ3N0X29iamVjdF9yZWYoc3JjKSkp
KQorICAgIDogUmVmQ291bnRlZDxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcj4oKQorICAgICwg
bV9zcmMoYWRvcHRHUmVmKHN0YXRpY19jYXN0PFdlYktpdE1lZGlhU3JjKj4oZ3N0X29iamVjdF9y
ZWYoc3JjKSkpKQogeworICAgIG1fc3JjLT5wcml2LT5tZWRpYVNvdXJjZUNsaWVudCA9IHRoaXM7
CiB9CiAKIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyOjp+TWVkaWFTb3VyY2VDbGllbnRHU3Ry
ZWFtZXIoKQogewogfQogCi1NZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lcjo6YWRkU291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U291cmNlQnVmZmVy
UHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSwgY29uc3QgQ29udGVudFR5cGUmKQorTWVkaWFT
b3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI6OmFkZFNv
dXJjZUJ1ZmZlcihQYXNzUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJj
ZUJ1ZmZlclByaXZhdGUsIGNvbnN0IENvbnRlbnRUeXBlJikKIHsKICAgICBXZWJLaXRNZWRpYVNy
Y1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJpdjsKIApAQCAtMzI1LDI1ICs4ODAsMTkgQEAgTWVk
aWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI6OmFk
ZFNvdXJjZUJ1ZmZlcihQYXNzUmUKICAgICBTb3VyY2UqIHNvdXJjZSA9IGdfbmV3MChTb3VyY2Us
IDEpOwogICAgIGd1aW50IG51bWJlck9mU291cmNlcyA9IGdfbGlzdF9sZW5ndGgocHJpdi0+c291
cmNlcyk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3JjTmFtZShnX3N0cmR1cF9wcmludGYoInNy
YyV1IiwgbnVtYmVyT2ZTb3VyY2VzKSk7Ci0KKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0eXBlZmlu
ZE5hbWUoZ19zdHJkdXBfcHJpbnRmKCJ0eXBlZmluZCV1IiwgbnVtYmVyT2ZTb3VyY2VzKSk7Cisg
ICAgc291cmNlLT5wYXJlbnQgPSBtX3NyYy5nZXQoKTsKICAgICBzb3VyY2UtPnNyYyA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc3JjIiwgc3JjTmFtZS5nZXQoKSk7CisgICAgc291cmNl
LT50eXBlZmluZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidHlwZWZpbmQiLCB0eXBlZmlu
ZE5hbWUuZ2V0KCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cmNlLT50eXBlZmluZCwgImhh
dmUtdHlwZSIsIEdfQ0FMTEJBQ0sod2ViS2l0TWVkaWFTcmNIYXZlVHlwZSksIHNvdXJjZSk7CiAg
ICAgc291cmNlLT5zb3VyY2VCdWZmZXIgPSBzb3VyY2VCdWZmZXJQcml2YXRlLmdldCgpOwotCi0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGFkTmFtZShnX3N0cmR1cF9wcmludGYoInNyY18ldSIsIG51
bWJlck9mU291cmNlcykpOwogICAgIHByaXYtPnNvdXJjZXMgPSBnX2xpc3RfcHJlcGVuZChwcml2
LT5zb3VyY2VzLCBzb3VyY2UpOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKG1fc3JjLmdldCgpKTsK
LQotICAgIHByaXYtPmhhdmVBcHBzcmMgPSBzb3VyY2UtPnNyYzsKLQotICAgIGdzdF9iaW5fYWRk
KEdTVF9CSU4obV9zcmMuZ2V0KCkpLCBzb3VyY2UtPnNyYyk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+
IHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzb3VyY2UtPnNyYywg
InNyYyIpKTsKLSAgICBHUmVmUHRyPEdzdFBhZD4gZ2hvc3RQYWQgPSBhZG9wdEdSZWYoZ3N0X2do
b3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZShwYWROYW1lLmdldCgpLCBwYWQuZ2V0KCksCi0gICAg
ICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKSk7Ci0gICAgZ3N0
X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24oZ2hvc3RQYWQuZ2V0KCksIHdlYktpdE1lZGlhU3JjUXVl
cnlXaXRoUGFyZW50KTsKLSAgICBnc3RfcGFkX3NldF9hY3RpdmUoZ2hvc3RQYWQuZ2V0KCksIFRS
VUUpOwotICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlQobV9zcmMuZ2V0KCkpLCBn
aG9zdFBhZC5sZWFrUmVmKCkpOworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3NyYy5n
ZXQoKSksIHNvdXJjZS0+c3JjLCBzb3VyY2UtPnR5cGVmaW5kLCBudWxscHRyKTsKKyAgICBnc3Rf
ZWxlbWVudF9saW5rX3BhZHMoc291cmNlLT5zcmMsICJzcmMiLCBzb3VyY2UtPnR5cGVmaW5kLCAi
c2luayIpOwogCiAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChzb3VyY2Ut
PnNyYyk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChzb3VyY2UtPnR5
cGVmaW5kKTsKIAogICAgIHJldHVybiBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rOwogfQpAQCAtMzYx
LDQwICs5MTAsMjggQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcjo6ZHVyYXRpb25D
aGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgZ3N0X2VsZW1lbnRfcG9zdF9t
ZXNzYWdlKEdTVF9FTEVNRU5UKG1fc3JjLmdldCgpKSwgZ3N0X21lc3NhZ2VfbmV3X2R1cmF0aW9u
X2NoYW5nZWQoR1NUX09CSkVDVChtX3NyYy5nZXQoKSkpKTsKIH0KIAotU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyOjphcHBl
bmQoUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIE1lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyOjphcHBlbmQoUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0g
bV9zcmMtPnByaXY7CiAgICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKICAgICBH
c3RCdWZmZXIqIGJ1ZmZlcjsKICAgICBTb3VyY2UqIHNvdXJjZSA9IDA7CisgICAgR0xpc3QgKmw7
CiAKLSAgICBpZiAoIXByaXYtPm5vTW9yZVBhZHMpIHsKLSAgICAgICAgcHJpdi0+bm9Nb3JlUGFk
cyA9IHRydWU7Ci0gICAgICAgIGdzdF9lbGVtZW50X25vX21vcmVfcGFkcyhHU1RfRUxFTUVOVCht
X3NyYy5nZXQoKSkpOwotICAgICAgICB3ZWJLaXRNZWRpYVNyY0RvQXN5bmNEb25lKG1fc3JjLmdl
dCgpKTsKLSAgICB9Ci0KLSAgICBmb3IgKEdMaXN0KiBpdGVyID0gcHJpdi0+c291cmNlczsgaXRl
cjsgaXRlciA9IGl0ZXItPm5leHQpIHsKLSAgICAgICAgU291cmNlKiB0bXAgPSBzdGF0aWNfY2Fz
dDxTb3VyY2UqPihpdGVyLT5kYXRhKTsKKyAgICBmb3IgKGwgPSBwcml2LT5zb3VyY2VzOyBsOyBs
ID0gbC0+bmV4dCkgeworICAgICAgICBTb3VyY2UgKnRtcCA9IHN0YXRpY19jYXN0PFNvdXJjZSo+
KGwtPmRhdGEpOwogICAgICAgICBpZiAodG1wLT5zb3VyY2VCdWZmZXIgPT0gc291cmNlQnVmZmVy
UHJpdmF0ZS5nZXQoKSkgewogICAgICAgICAgICAgc291cmNlID0gdG1wOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICBpZiAoIXNvdXJjZSB8fCAhc291cmNlLT5z
cmMpCi0gICAgICAgIHJldHVybiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpSZWFkU3RyZWFt
RmFpbGVkOwotCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBidWZmZXIgPSBnc3RfYnVmZmVy
X25ld19hbmRfYWxsb2MobGVuZ3RoKTsKICAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBk
YXRhLCBsZW5ndGgpOwotCiAgICAgcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIoR1NUX0FQ
UF9TUkMoc291cmNlLT5zcmMpLCBidWZmZXIpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMu
Z2V0KCksICJwdXNoIGJ1ZmZlciAlZFxuIiwgc3RhdGljX2Nhc3Q8aW50PihyZXQpKTsKLQotICAg
IGlmIChyZXQgPT0gR1NUX0ZMT1dfT0spCi0gICAgICAgIHJldHVybiBTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKLSAgICByZXR1cm4gU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6UmVhZFN0cmVhbUZhaWxlZDsKKyAgICByZXR1cm4gKHJldCA9PSBHU1RfRkxP
V19PSyk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI6Om1hcmtFbmRPZlN0
cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVuZE9mU3RyZWFtU3RhdHVzKQpAQCAtNDE2LDIyICs5
NTMsMzQgQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFt
KE1lZGlhU291cmNlUHJpdmF0ZTo6RW5kT2ZTdHJlYW0KICAgICB9CiB9CiAKLXZvaWQgTWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXI6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoUGFzc1JlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlKQordm9pZCBNZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lcjo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZShQYXNzUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUpCiB7CiAgICAgV2Vi
S2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CiAgICAgU291cmNlKiBzb3Vy
Y2UgPSAwOworICAgIEdMaXN0ICpsOwogCi0gICAgZm9yIChHTGlzdCogaXRlciA9IHByaXYtPnNv
dXJjZXM7IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7Ci0gICAgICAgIFNvdXJjZSogdG1wID0g
c3RhdGljX2Nhc3Q8U291cmNlKj4oaXRlci0+ZGF0YSk7CisgICAgZm9yIChsID0gcHJpdi0+c291
cmNlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgICAgU291cmNlICp0bXAgPSBzdGF0aWNfY2Fz
dDxTb3VyY2UqPihsLT5kYXRhKTsKICAgICAgICAgaWYgKHRtcC0+c291cmNlQnVmZmVyID09IHNv
dXJjZUJ1ZmZlclByaXZhdGUuZ2V0KCkpIHsKICAgICAgICAgICAgIHNvdXJjZSA9IHRtcDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgQVNTRVJUKHNvdXJjZSAm
JiBzb3VyY2UtPnNyYyk7CisgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZS0+c3JjKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKHNvdXJjZS0+c3JjKQorICAgICAgICBnc3RfYXBwX3NyY19lbmRf
b2Zfc3RyZWFtKEdTVF9BUFBfU1JDKHNvdXJjZS0+c3JjKSk7Cit9CisKK3ZvaWQgTWVkaWFTb3Vy
Y2VDbGllbnRHU3RyZWFtZXI6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lciogc291cmNlQnVmZmVyLCBjb25zdCBTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIGluaXRpYWxpemF0aW9uU2VnbWVu
dCkKK3sKKyAgICBzb3VyY2VCdWZmZXItPmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
aW5pdGlhbGl6YXRpb25TZWdtZW50KTsKK30KIAotICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJl
YW0oR1NUX0FQUF9TUkMoc291cmNlLT5zcmMpKTsKK3ZvaWQgTWVkaWFTb3VyY2VDbGllbnRHU3Ry
ZWFtZXI6OmRpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lciogc291
cmNlQnVmZmVyLCBQYXNzUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGUpCit7CisgICAgc291cmNl
QnVmZmVyLT5kaWRSZWNlaXZlU2FtcGxlKHNhbXBsZSk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oCmluZGV4IDIzNGEwOGMuLjRlMzdmMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oCkBAIC02NiwyMiAr
NjYsMjkgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxXZWJLaXRNZWRpYVNyYz4oV2ViS2l0
TWVkaWFTcmMqIHB0cik7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBl
OworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjsKK2NsYXNzIE1lZGlhU291cmNl
R1N0cmVhbWVyOwogCiBjbGFzcyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcjogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXI+IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyKFdlYktpdE1lZGlhU3JjKik7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyPiBjcmVhdGUoV2Vi
S2l0TWVkaWFTcmMqKTsKICAgICAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFt
ZXIoKTsKIAogICAgICAgICAvLyBGcm9tIE1lZGlhU291cmNlR1N0cmVhbWVyCi0gICAgICAgIE1l
ZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihQYXNzUmVmUHRyPFNv
dXJjZUJ1ZmZlclByaXZhdGU+LCBjb25zdCBDb250ZW50VHlwZSYpOworICAgICAgICBNZWRpYVNv
dXJjZVByaXZhdGU6OkFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoUGFzc1JlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyPiwgY29uc3QgQ29udGVudFR5cGUmKTsKICAgICAgICAgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJik7CiAgICAgICAgIHZvaWQgbWFya0Vu
ZE9mU3RyZWFtKE1lZGlhU291cmNlUHJpdmF0ZTo6RW5kT2ZTdHJlYW1TdGF0dXMpOwogCiAgICAg
ICAgIC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcgotICAgICAgICBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kKFBhc3NSZWZQdHI8U291cmNl
QnVmZmVyUHJpdmF0ZT4sIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZShQYXNzUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGU+KTsKKyAgICAgICAgYm9vbCBhcHBlbmQoUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyPiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKFBhc3NSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4pOworCisgICAgICAgIC8vIEZyb20gb3VyIFdlYktpdE1lZGlhU3JjCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRl
R1N0cmVhbWVyKiwgY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50Jik7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyKiBzb3VyY2VCdWZmZXIsIFBhc3NSZWZQdHI8TWVkaWFTYW1wbGU+IHNh
bXBsZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
cihXZWJLaXRNZWRpYVNyYyopOwogICAgICAgICBHUmVmUHRyPFdlYktpdE1lZGlhU3JjPiBtX3Ny
YzsKIH07CiAKLS0gCjIuMS4z
</data>

          </attachment>
      

    </bug>

</bugzilla>