<?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>42237</bug_id>
          
          <creation_ts>2010-07-13 23:55:19 -0700</creation_ts>
          <short_desc>[Chromium] Replace BackForwardListClient with BackForwardControllerClient/BackForwardList</short_desc>
          <delta_ts>2011-01-14 14:00:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>250998</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-13 23:55:19 -0700</bug_when>
    <thetext>[Chromium] Replace BackForwardListClient with BackForwardControllerClient/BackForwardList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334470</commentid>
    <comment_count>1</comment_count>
      <attachid>78972</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-01-14 11:52:18 -0800</bug_when>
    <thetext>Created attachment 78972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334534</commentid>
    <comment_count>2</comment_count>
      <attachid>78972</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-01-14 12:58:02 -0800</bug_when>
    <thetext>Comment on attachment 78972
Patch

Very nice!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334588</commentid>
    <comment_count>3</comment_count>
      <attachid>78972</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-14 14:00:01 -0800</bug_when>
    <thetext>Comment on attachment 78972
Patch

Clearing flags on attachment: 78972

Committed r75815: &lt;http://trac.webkit.org/changeset/75815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334589</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-14 14:00:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78972</attachid>
            <date>2011-01-14 11:52:18 -0800</date>
            <delta_ts>2011-01-14 14:00:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42237-20110114115216.patch</filename>
            <type>text/plain</type>
            <size>36003</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1ODA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDEtMTQgIEFkYW0gS2xl
aW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBSZXBsYWNlIEJhY2tGb3J3YXJkTGlzdENsaWVu
dCB3aXRoIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC9CYWNrRm9yd2FyZExpc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMjM3CisKKyAgICAg
ICAgUmVtb3ZlIENocm9taXVtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGZyb20gV2ViQ29yZS4K
KworICAgICAgICBObyB0ZXN0cyBhZGRlZDsgdGhpcyByZWZhY3RvciBzaG91bGQgYmUgY292ZXJl
ZCBieSBleGlzdGluZyBoaXN0b3J5LWV4ZXJjaXNpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmg6CisKIDIwMTEtMDEtMTQgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTGV0IFhjb2RlIGhhdmUgaXQn
cyB3YXkgd2l0aCB0aGUgcHJvamVjdCBmaWxlLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gNzU3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTE1ODksNyArMTU4OSw2IEBACiAgICAgICAgICAgICAnaGlzdG9yeS9CYWNrRm9yd2FyZExp
c3QuaCcsCiAgICAgICAgICAgICAnaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAnaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmgnLAotICAgICAgICAgICAg
J2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdoaXN0
b3J5L0NhY2hlZEZyYW1lLmNwcCcsCiAgICAgICAgICAgICAnaGlzdG9yeS9DYWNoZWRGcmFtZS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgnLApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDc1NzU2KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMjMsOSArMTMyMyw2IEBACiAgICAgICAgICMgRG9uJ3QgYnVpbGQgSURCS2V5UGF0aEJh
Y2tlbmRJbXBsLiAgV2UgaGF2ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uLgogICAgICAgICBbJ2V4
Y2x1ZGUnLCAnc3RvcmFnZS9JREJLZXlQYXRoQmFja2VuZEltcGxcXC5jcHAkJ10sCiAKLSAgICAg
ICAgIyBVc2UgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAgaW5zdGVhZC4KLSAg
ICAgICAgWydleGNsdWRlJywgJ2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0SW1wbFxcLmNwcCQnXSwK
LQogICAgICAgICAjIFVzZSBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VOb25lLmNwcCBpbnN0ZWFk
LgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlXFwuY3BwJCdd
LAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdENocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlz
dENocm9taXVtLmNwcAkocmV2aXNpb24gNzU3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2Jp
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20v
KQotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0
SW1wbC5oIgotCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIERlZmF1bHRD
YXBhY2l0eSA9IDEwMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb0N1cnJlbnRJdGVtSW5kZXgg
PSBVSU5UX01BWDsKLQotQmFja0ZvcndhcmRMaXN0SW1wbDo6QmFja0ZvcndhcmRMaXN0SW1wbChQ
YWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2NsaWVudCgwKQotICAgICwg
bV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCi0gICAgLCBtX2Nsb3NlZCh0cnVlKQotICAgICwg
bV9lbmFibGVkKHRydWUpCi17Ci19Ci0KLUJhY2tGb3J3YXJkTGlzdEltcGw6On5CYWNrRm9yd2Fy
ZExpc3RJbXBsKCkKLXsKLSAgICBBU1NFUlQobV9jbG9zZWQpOwotfQotCi12b2lkIEJhY2tGb3J3
YXJkTGlzdEltcGw6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKLXsK
LSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNpdHkgPT0gMCB8fCAhbV9lbmFi
bGVkKQotICAgICAgICByZXR1cm47Ci0gCi0gICAgbV9jbGllbnQtPmFkZEl0ZW0ocHJwSXRlbSk7
Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0pCi17Ci0gICAgbV9jbGllbnQtPmdvVG9JdGVtKGl0ZW0pOwotfQotCi1pbnQgQmFja0Zvcndh
cmRMaXN0SW1wbDo6Y2FwYWNpdHkoKQotewotICAgIHJldHVybiBtX2NhcGFjaXR5OwotfQotCi12
b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OnNldENhcGFjaXR5KGludCBzaXplKQotewotICAgIG1f
Y2FwYWNpdHkgPSBzaXplOwotfQotCi1ib29sIEJhY2tGb3J3YXJkTGlzdEltcGw6OmVuYWJsZWQo
KQotewotICAgIHJldHVybiBtX2VuYWJsZWQ7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0SW1w
bDo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgbV9lbmFibGVkID0gZW5hYmxlZDsK
LSAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAgICAgaW50IGNhcGFjaXR5ID0gbV9jYXBhY2l0eTsK
LSAgICAgICAgc2V0Q2FwYWNpdHkoMCk7Ci0gICAgICAgIHNldENhcGFjaXR5KGNhcGFjaXR5KTsK
LSAgICB9Ci19Ci0KLWludCBCYWNrRm9yd2FyZExpc3RJbXBsOjpiYWNrTGlzdENvdW50KCkKLXsK
LSAgICByZXR1cm4gbV9jbGllbnQtPmJhY2tMaXN0Q291bnQoKTsKLX0KLQotaW50IEJhY2tGb3J3
YXJkTGlzdEltcGw6OmZvcndhcmRMaXN0Q291bnQoKQotewotICAgIHJldHVybiBtX2NsaWVudC0+
Zm9yd2FyZExpc3RDb3VudCgpOwotfQotCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0SW1w
bDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQotewotICAgIHJldHVybiBtX2NsaWVudC0+aXRlbUF0
SW5kZXgoaW5kZXgpOwotfQotCi1IaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0SW1w
bDo6ZW50cmllcygpCi17Ci0gICAgc3RhdGljIEhpc3RvcnlJdGVtVmVjdG9yIG5vRW50cmllczsK
LSAgICByZXR1cm4gbm9FbnRyaWVzOwotfQotCi12b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OmNs
b3NlKCkKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5jbG9zZSgpOwot
ICAgIG1fcGFnZSA9IDA7Ci0gICAgbV9jbG9zZWQgPSB0cnVlOwotfQotCi1ib29sIEJhY2tGb3J3
YXJkTGlzdEltcGw6OmNsb3NlZCgpCi17Ci0gICAgcmV0dXJuIG1fY2xvc2VkOwotfQotCi12b2lk
IEJhY2tGb3J3YXJkTGlzdEltcGw6OmdvQmFjaygpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Z29Gb3J3YXJkKCkKLXsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpiYWNr
TGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJikKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpmb3J3YXJkTGlzdFdp
dGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotYm9vbCBCYWNrRm9yd2FyZExpc3RJbXBsOjpjb250YWluc0l0ZW0oSGlzdG9y
eUl0ZW0qKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKikK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBsLmgJ
KHJldmlzaW9uIDc1NzU2KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExp
c3RJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI1ICszOSw2IEBAIGNsYXNzIFBhZ2U7CiB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0
eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhpc3RvcnlJdGVtSGFzaFNldDsK
IAotLy8gRklYTUU6IENoYW5nZSBDaHJvbWl1bSB0byB1c2UgaXRzIG93biBCYWNrRm9yd2FyZExp
c3QgaW1wbGVtZW50YXRpb24KLS8vIGFuZCBub3QgdXNlIEJhY2tGb3J3YXJkTGlzdEltcGwgYXQg
YWxsLCB0aGVuIHJlbW92ZSB0aGlzCi0vLyBCYWNrRm9yd2FyZExpc3RDbGllbnQgZmVhdHVyZSBl
bnRpcmVseSBhbmQganVzdCBkb24ndCB1c2UgdGhpcwotLy8gY2xhc3Mgb24gQ2hyb21pdW0uCi0j
aWYgUExBVEZPUk0oQ0hST01JVU0pCi0vLyBJbiB0aGUgQ2hyb21pdW0gcG9ydCwgdGhlIGJhY2sv
Zm9yd2FyZCBsaXN0IGlzIG1hbmFnZWQgZXh0ZXJuYWxseS4KLS8vIFNlZSBCYWNrRm9yd2FyZExp
c3RDaHJvbWl1bS5jcHAKLWNsYXNzIEJhY2tGb3J3YXJkTGlzdENsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+QmFja0ZvcndhcmRMaXN0Q2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSA9IDA7Ci0gICAgdmlydHVhbCBIaXN0b3J5SXRlbSogaXRl
bUF0SW5kZXgoaW50KSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpID0gMDsK
LSAgICB2aXJ0dWFsIGludCBmb3J3YXJkTGlzdENvdW50KCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpID0gMDsKLX07Ci0jZW5kaWYKLQogLy8gRklYTUU6IEFmdGVyIHJlbmFtaW5nIEJh
Y2tGb3J3YXJkTGlzdCB0byBCYWNrRm9yd2FyZENsaWVudCwKIC8vIHJlbmFtZSB0aGlzIHRvIEJh
Y2tGb3J3YXJkTGlzdC4KIGNsYXNzIEJhY2tGb3J3YXJkTGlzdEltcGwgOiBwdWJsaWMgQmFja0Zv
cndhcmRMaXN0IHsKQEAgLTY1LDExICs0Niw2IEBAIHB1YmxpYzogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmFja0ZvcndhcmRMaXN0SW1wbD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBCYWNrRm9yd2FyZExpc3RJbXBsKHBhZ2UpKTsgfQogICAgIHZpcnR1YWwgfkJh
Y2tGb3J3YXJkTGlzdEltcGwoKTsKIAotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIC8vIE11
c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgbWV0aG9kcy4gCi0gICAgdm9pZCBzZXRDbGll
bnQoQmFja0ZvcndhcmRMaXN0Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0K
LSNlbmRpZgotICAgIAogICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7CkBAIC0x
MDksMTMgKzg1LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSB7IHJl
dHVybiBlbmFibGVkKCkgJiYgY2FwYWNpdHkoKTsgfQogCiAgICAgUGFnZSogbV9wYWdlOwotI2lm
IFBMQVRGT1JNKENIUk9NSVVNKSAKLSAgICBCYWNrRm9yd2FyZExpc3RDbGllbnQqIG1fY2xpZW50
OwotI2Vsc2UKICAgICBIaXN0b3J5SXRlbVZlY3RvciBtX2VudHJpZXM7CiAgICAgSGlzdG9yeUl0
ZW1IYXNoU2V0IG1fZW50cnlIYXNoOwogICAgIHVuc2lnbmVkIG1fY3VycmVudDsKLSNlbmRpZgog
ICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAgYm9vbCBtX2Nsb3NlZDsKICAgICBib29sIG1f
ZW5hYmxlZDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzU4MDUpCisrKyBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDEt
MTQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBSZXBsYWNlIEJhY2tGb3J3
YXJkTGlzdENsaWVudCB3aXRoIEJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC9CYWNrRm9yd2Fy
ZExpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
MjM3CisKKyAgICAgICAgUmVwbGFjZSBDaHJvbWl1bS1zcGVjaWZpYyBCYWNrRm9yd2FyZExpc3RD
bGllbnQgaW4gV2ViQ29yZSB3aXRoIGEgQ2hyb21pdW0gaW1wbAorICAgICAgICBvZiB0aGUgQmFj
a0ZvcndhcmRMaXN0IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogc3JjL0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcDogQ29waWVkIGZyb20gV2ViS2l0L2No
cm9taXVtL3NyYy9CYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmNwcC4KKyAgICAgICAgKFdlYktp
dDo6QmFja0ZvcndhcmRMaXN0Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkJh
Y2tGb3J3YXJkTGlzdENocm9taXVtOjpCYWNrRm9yd2FyZExpc3RDaHJvbWl1bSk6CisgICAgICAg
IChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdENocm9taXVtOjp+QmFja0ZvcndhcmRMaXN0Q2hyb21p
dW0pOgorICAgICAgICAoV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6YWRkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdENocm9taXVtOjpnb1RvSXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdENocm9taXVtOjppdGVtQXRJbmRleCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdENocm9taXVtOjpiYWNrTGlzdENvdW50KToK
KyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0Q2hyb21pdW06OmZvcndhcmRMaXN0Q291
bnQpOgorICAgICAgICAoV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6aXNBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6Y2xvc2UpOgorICAg
ICAgICAqIHNyYy9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuaC4KKyAgICAgICAgKiBzcmMv
QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0Jh
Y2tGb3J3YXJkTGlzdENsaWVudEltcGwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpsb2FkSGlzdG9yeUl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OmN1cnJlbnRIaXN0b3J5SXRlbSk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0wMS0xNCAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
RmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDc1NzU2KQorKysgV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw4ICszMDcsOCBAQAogICAg
ICAgICAgICAgICAgICdzcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgnLAotICAgICAgICAgICAgICAgICdzcmMv
QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvQmFj
a0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0JhY2tGb3J3
YXJkTGlzdENocm9taXVtLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9CYWNrRm9yd2FyZExp
c3RDaHJvbWl1bS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CbG9iUmVnaXN0cnlQcm94eS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0JvdW5kT2JqZWN0LmNwcCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAkocmV2aXNpb24gNzU3NTYpCShmcm9t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHA6NzU3NTYp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgY2hhciBiYWNrRm9yd2Fy
ZE5hdmlnYXRpb25TY2hlbWVbXSA9ICJjaHJvbWUtYmFjay1mb3J3YXJkIjsKKworQmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDo6QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbChXZWJWaWV3SW1wbCog
d2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitCYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsOjp+QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbCgpCit7Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6c2V0Q3VycmVudEhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQoreworICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsKKyAgICBt
X2N1cnJlbnRJdGVtID0gaXRlbTsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdENs
aWVudEltcGw6OnByZXZpb3VzSGlzdG9yeUl0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBtX3By
ZXZpb3VzSXRlbS5nZXQoKTsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjph
ZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0pCit7CisgICAgbV9wcmV2aW91c0l0
ZW0gPSBtX2N1cnJlbnRJdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOworCisgICAgLy8g
SWYgV2ViQ29yZSBhZGRzIGEgbmV3IEhpc3RvcnlJdGVtLCBpdCBtZWFucyB0aGlzIGlzIGEgbmV3
IG5hdmlnYXRpb24gKGllLAorICAgIC8vIG5vdCBhIHJlbG9hZCBvciBiYWNrL2ZvcndhcmQpLgor
ICAgIG1fd2ViVmlldy0+b2JzZXJ2ZU5ld05hdmlnYXRpb24oKTsKKworICAgIGlmIChtX3dlYlZp
ZXctPmNsaWVudCgpKQorICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5kaWRBZGRIaXN0b3J5
SXRlbSgpOworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OmdvVG9JdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKQoreworICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsK
KyAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKKworICAgIGlmIChtX3BlbmRpbmdIaXN0b3J5SXRl
bSA9PSBpdGVtKQorICAgICAgICBtX3BlbmRpbmdIaXN0b3J5SXRlbSA9IDA7Cit9CisKK0hpc3Rv
cnlJdGVtKiBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjppdGVtQXRJbmRleChpbnQgaW5kZXgp
Cit7CisgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiBtX2N1cnJlbnRJdGVtLmdldCgpOworCisg
ICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpIHx8IC1pbmRleCA+IGJhY2tMaXN0Q291
bnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBTaW5jZSB3ZSBkb24ndCBrZWVwIHRo
ZSBlbnRpcmUgYmFjay9mb3J3YXJkIGxpc3QsIHdlIGhhdmUgbm8gd2F5IHRvCisgICAgLy8gcHJv
cGVybHkgaW1wbGVtZW50IHRoaXMgbWV0aG9kLiAgV2UgcmV0dXJuIGEgZHVtbXkgZW50cnkgaW5z
dGVhZCB0aGF0IHdlCisgICAgLy8gaW50ZXJjZXB0IGluIG91ciBGcmFtZUxvYWRlckNsaWVudCBp
bXBsZW1lbnRhdGlvbiBpbiBjYXNlIFdlYkNvcmUgYXNrcworICAgIC8vIHRvIG5hdmlnYXRlIHRv
IHRoaXMgSGlzdG9yeUl0ZW0uCisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoYW5nZSBXZWJD
b3JlIHRvIGhhbmRsZSBoaXN0b3J5LntiYWNrLGZvcndhcmQsZ299CisgICAgLy8gZGlmZmVyZW50
bHkuICBJdCBzaG91bGQgcGVyaGFwcyBqdXN0IGFzayB0aGUgRnJhbWVMb2FkZXJDbGllbnQgdG8K
KyAgICAvLyBwZXJmb3JtIHRob3NlIG5hdmlnYXRpb25zLgorCisgICAgU3RyaW5nIHVybFN0cmlu
ZyA9IG1ha2VTdHJpbmcoYmFja0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lLCAiOi8vZ28vIiwgU3Ry
aW5nOjpudW1iZXIoaW5kZXgpKTsKKyAgICBtX3BlbmRpbmdIaXN0b3J5SXRlbSA9IEhpc3RvcnlJ
dGVtOjpjcmVhdGUodXJsU3RyaW5nLCBTdHJpbmcoKSwgMCk7CisgICAgcmV0dXJuIG1fcGVuZGlu
Z0hpc3RvcnlJdGVtLmdldCgpOworfQorCitpbnQgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6
YmFja0xpc3RDb3VudCgpCit7CisgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5oaXN0b3J5QmFj
a0xpc3RDb3VudCgpOworfQorCitpbnQgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6Zm9yd2Fy
ZExpc3RDb3VudCgpCit7CisgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5oaXN0b3J5Rm9yd2Fy
ZExpc3RDb3VudCgpOworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OmNsb3Nl
KCkKK3sKKyAgICBtX2N1cnJlbnRJdGVtID0gMDsKKyAgICBtX3ByZXZpb3VzSXRlbSA9IDA7Cisg
ICAgbV9wZW5kaW5nSGlzdG9yeUl0ZW0gPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0u
Y3BwCShyZXZpc2lvbiA3NTc1NikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRM
aXN0Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwu
aCIKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiSGlz
dG9yeUl0ZW0uaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCkBAIC00MiwyOSArNDIsMjIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNvbnN0IGNoYXIgYmFja0ZvcndhcmROYXZpZ2F0aW9u
U2NoZW1lW10gPSAiY2hyb21lLWJhY2stZm9yd2FyZCI7CiAKLUJhY2tGb3J3YXJkTGlzdENsaWVu
dEltcGw6OkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXcpCi0g
ICAgOiBtX3dlYlZpZXcod2ViVmlldykKK1Bhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0Q2hyb21p
dW0+IEJhY2tGb3J3YXJkTGlzdENocm9taXVtOjpjcmVhdGUoV2ViVmlld0ltcGwqIHdlYlZpZXcp
CiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNrRm9yd2FyZExpc3RDaHJvbWl1bSh3ZWJW
aWV3KSk7CiB9CiAKLUJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6On5CYWNrRm9yd2FyZExpc3RD
bGllbnRJbXBsKCkKK0JhY2tGb3J3YXJkTGlzdENocm9taXVtOjpCYWNrRm9yd2FyZExpc3RDaHJv
bWl1bShXZWJWaWV3SW1wbCogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewog
fQogCi12b2lkIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OnNldEN1cnJlbnRIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKK0JhY2tGb3J3YXJkTGlzdENocm9taXVtOjp+QmFja0Zvcndh
cmRMaXN0Q2hyb21pdW0oKQogewotICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsK
LSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJk
TGlzdENsaWVudEltcGw6OnByZXZpb3VzSGlzdG9yeUl0ZW0oKSBjb25zdAordm9pZCBCYWNrRm9y
d2FyZExpc3RDaHJvbWl1bTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtKQog
ewotICAgIHJldHVybiBtX3ByZXZpb3VzSXRlbS5nZXQoKTsKLX0KLQotdm9pZCBCYWNrRm9yd2Fy
ZExpc3RDbGllbnRJbXBsOjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0pCi17
Ci0gICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwogICAgIG1fY3VycmVudEl0ZW0g
PSBpdGVtOwogCiAgICAgLy8gSWYgV2ViQ29yZSBhZGRzIGEgbmV3IEhpc3RvcnlJdGVtLCBpdCBt
ZWFucyB0aGlzIGlzIGEgbmV3IG5hdmlnYXRpb24gKGllLApAQCAtNzUsMTYgKzY4LDE1IEBAIHZv
aWQgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6YWRkSXRlbSgKICAgICAgICAgbV93ZWJWaWV3
LT5jbGllbnQoKS0+ZGlkQWRkSGlzdG9yeUl0ZW0oKTsKIH0KIAotdm9pZCBCYWNrRm9yd2FyZExp
c3RDbGllbnRJbXBsOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgQmFja0Zvcndh
cmRMaXN0Q2hyb21pdW06OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogewotICAgIG1fcHJl
dmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsKICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIAog
ICAgIGlmIChtX3BlbmRpbmdIaXN0b3J5SXRlbSA9PSBpdGVtKQogICAgICAgICBtX3BlbmRpbmdI
aXN0b3J5SXRlbSA9IDA7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3RDbGllbnRJ
bXBsOjppdGVtQXRJbmRleChpbnQgaW5kZXgpCitIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0
Q2hyb21pdW06Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAgICBpZiAoIW1fd2ViVmlldy0+
Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA5LDcgKzEwMSw3IEBAIEhpc3RvcnlJ
dGVtKiBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjoKICAgICByZXR1cm4gbV9wZW5kaW5nSGlz
dG9yeUl0ZW0uZ2V0KCk7CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpiYWNr
TGlzdENvdW50KCkKK2ludCBCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6YmFja0xpc3RDb3VudCgp
CiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTExNyw3ICsxMDksNyBAQCBpbnQgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6YmFja0xpc3RD
CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y2xpZW50KCktPmhpc3RvcnlCYWNrTGlzdENvdW50KCk7
CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpmb3J3YXJkTGlzdENvdW50KCkK
K2ludCBCYWNrRm9yd2FyZExpc3RDaHJvbWl1bTo6Zm9yd2FyZExpc3RDb3VudCgpCiB7CiAgICAg
aWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyNSwxMCAr
MTE3LDE0IEBAIGludCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpmb3J3YXJkTGkKICAgICBy
ZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+aGlzdG9yeUZvcndhcmRMaXN0Q291bnQoKTsKIH0K
IAotdm9pZCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpjbG9zZSgpCitib29sIEJhY2tGb3J3
YXJkTGlzdENocm9taXVtOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+Y2xp
ZW50KCk7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Q2hyb21pdW06OmNsb3NlKCkKIHsKICAg
ICBtX2N1cnJlbnRJdGVtID0gMDsKLSAgICBtX3ByZXZpb3VzSXRlbSA9IDA7CiAgICAgbV9wZW5k
aW5nSGlzdG9yeUl0ZW0gPSAwOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tG
b3J3YXJkTGlzdENocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9C
YWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oCShyZXZpc2lvbiA3NTc1NikJKGZyb20gV2ViS2l0L2No
cm9taXVtL3NyYy9CYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsLmg6NzU3NTYpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbF9oCisjZGVmaW5l
IEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGxfaAorCisjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0
SW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlZpZXdJbXBsOworCitleHRl
cm4gY29uc3QgY2hhciBiYWNrRm9yd2FyZE5hdmlnYXRpb25TY2hlbWVbXTsKKworY2xhc3MgQmFj
a0ZvcndhcmRMaXN0Q2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RD
bGllbnQgeworcHVibGljOgorICAgIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwoV2ViVmlld0lt
cGwqIHdlYnZpZXcpOworICAgIH5CYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsKCk7CisKKyAgICB2
b2lkIHNldEN1cnJlbnRIaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSk7Cisg
ICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIHByZXZpb3VzSGlzdG9yeUl0ZW0oKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICAvLyBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RDbGllbnQgbWV0aG9kczoK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVt
Pik7CisgICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50IGluZGV4KTsK
KyAgICB2aXJ0dWFsIGludCBiYWNrTGlzdENvdW50KCk7CisgICAgdmlydHVhbCBpbnQgZm9yd2Fy
ZExpc3RDb3VudCgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworCisgICAgV2ViVmlld0lt
cGwqIG1fd2ViVmlldzsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gbV9wcmV2
aW91c0l0ZW07CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2N1cnJlbnRJdGVt
OworCisgICAgLy8gVGhlIGxhc3QgaGlzdG9yeSBpdGVtIHRoYXQgd2FzIGFjY2Vzc2VkIHZpYSBp
dGVtQXRJbmRleCgpLiAgV2Uga2VlcCB0cmFjaworICAgIC8vIG9mIHRoaXMgdW50aWwgZ29Ub0l0
ZW0oKSBpcyBjYWxsZWQsIHNvIHdlIGNhbiB0cmFjayB0aGUgbmF2aWdhdGlvbi4KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IG1fcGVuZGluZ0hpc3RvcnlJdGVtOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9C
YWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uaAkocmV2aXNpb24gNzU3NTYpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDM2ICsyOCwzNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJhY2tGb3J3
YXJkTGlzdENsaWVudEltcGxfaAotI2RlZmluZSBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsX2gK
KyNpZm5kZWYgQmFja0ZvcndhcmRMaXN0Q2hyb21pdW1faAorI2RlZmluZSBCYWNrRm9yd2FyZExp
c3RDaHJvbWl1bV9oCiAKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCisjaW5jbHVk
ZSAiQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgYmFj
a0ZvcndhcmROYXZpZ2F0aW9uU2NoZW1lW107CiAKLWNsYXNzIEJhY2tGb3J3YXJkTGlzdENsaWVu
dEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Q2xpZW50IHsKK2NsYXNzIEJh
Y2tGb3J3YXJkTGlzdENocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCB7
CiBwdWJsaWM6Ci0gICAgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbChXZWJWaWV3SW1wbCogd2Vi
dmlldyk7Ci0gICAgfkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwoKTsKLQotICAgIHZvaWQgc2V0
Q3VycmVudEhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsKLSAgICBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogcHJldmlvdXNIaXN0b3J5SXRlbSgpIGNvbnN0OworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdENocm9taXVtPiBjcmVhdGUoV2ViVmlld0ltcGwq
KTsKKyAgICB2aXJ0dWFsIH5CYWNrRm9yd2FyZExpc3RDaHJvbWl1bSgpOwogCiBwcml2YXRlOgot
ICAgIC8vIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdENsaWVudCBtZXRob2RzOgorICAgIEJhY2tG
b3J3YXJkTGlzdENocm9taXVtKFdlYlZpZXdJbXBsKik7CisKKyAgICAvLyBXZWJDb3JlOjpCYWNr
Rm9yd2FyZExpc3QgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPik7CiAgICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNv
cmU6Okhpc3RvcnlJdGVtKik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRl
bUF0SW5kZXgoaW50IGluZGV4KTsKICAgICB2aXJ0dWFsIGludCBiYWNrTGlzdENvdW50KCk7CiAg
ICAgdmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3VudCgpOworICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwogCiAgICAgV2ViVmlld0ltcGwqIG1f
d2ViVmlldzsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gbV9wcmV2aW91c0l0
ZW07CiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2N1cnJlbnRJdGVtOwogCiAg
ICAgLy8gVGhlIGxhc3QgaGlzdG9yeSBpdGVtIHRoYXQgd2FzIGFjY2Vzc2VkIHZpYSBpdGVtQXRJ
bmRleCgpLiAgV2Uga2VlcCB0cmFjawpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9CYWNrRm9y
d2FyZExpc3RDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3NTc1NikKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmFja0Zv
cndhcmRMaXN0Q2xpZW50SW1wbC5oIgotCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNvbnN0IGNoYXIgYmFja0ZvcndhcmROYXZpZ2F0
aW9uU2NoZW1lW10gPSAiY2hyb21lLWJhY2stZm9yd2FyZCI7Ci0KLUJhY2tGb3J3YXJkTGlzdENs
aWVudEltcGw6OkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXcp
Ci0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKLXsKLX0KLQotQmFja0ZvcndhcmRMaXN0Q2xpZW50
SW1wbDo6fkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwoKQotewotfQotCi12b2lkIEJhY2tGb3J3
YXJkTGlzdENsaWVudEltcGw6OnNldEN1cnJlbnRIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRl
bSkKLXsKLSAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07Ci0gICAgbV9jdXJyZW50
SXRlbSA9IGl0ZW07Ci19Ci0KLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBs
OjpwcmV2aW91c0hpc3RvcnlJdGVtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcmV2aW91c0l0
ZW0uZ2V0KCk7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6YWRkSXRlbShQ
YXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtKQotewotICAgIG1fcHJldmlvdXNJdGVtID0gbV9j
dXJyZW50SXRlbTsKLSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKLQotICAgIC8vIElmIFdlYkNv
cmUgYWRkcyBhIG5ldyBIaXN0b3J5SXRlbSwgaXQgbWVhbnMgdGhpcyBpcyBhIG5ldyBuYXZpZ2F0
aW9uIChpZSwKLSAgICAvLyBub3QgYSByZWxvYWQgb3IgYmFjay9mb3J3YXJkKS4KLSAgICBtX3dl
YlZpZXctPm9ic2VydmVOZXdOYXZpZ2F0aW9uKCk7Ci0KLSAgICBpZiAobV93ZWJWaWV3LT5jbGll
bnQoKSkKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQWRkSGlzdG9yeUl0ZW0oKTsK
LX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpnb1RvSXRlbShIaXN0b3J5SXRl
bSogaXRlbSkKLXsKLSAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07Ci0gICAgbV9j
dXJyZW50SXRlbSA9IGl0ZW07Ci0KLSAgICBpZiAobV9wZW5kaW5nSGlzdG9yeUl0ZW0gPT0gaXRl
bSkKLSAgICAgICAgbV9wZW5kaW5nSGlzdG9yeUl0ZW0gPSAwOwotfQotCi1IaXN0b3J5SXRlbSog
QmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQotewotICAg
IGlmICghbV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAo
IWluZGV4KQotICAgICAgICByZXR1cm4gbV9jdXJyZW50SXRlbS5nZXQoKTsKLQotICAgIGlmIChp
bmRleCA+IGZvcndhcmRMaXN0Q291bnQoKSB8fCAtaW5kZXggPiBiYWNrTGlzdENvdW50KCkpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gU2luY2Ugd2UgZG9uJ3Qga2VlcCB0aGUgZW50aXJl
IGJhY2svZm9yd2FyZCBsaXN0LCB3ZSBoYXZlIG5vIHdheSB0bwotICAgIC8vIHByb3Blcmx5IGlt
cGxlbWVudCB0aGlzIG1ldGhvZC4gIFdlIHJldHVybiBhIGR1bW15IGVudHJ5IGluc3RlYWQgdGhh
dCB3ZQotICAgIC8vIGludGVyY2VwdCBpbiBvdXIgRnJhbWVMb2FkZXJDbGllbnQgaW1wbGVtZW50
YXRpb24gaW4gY2FzZSBXZWJDb3JlIGFza3MKLSAgICAvLyB0byBuYXZpZ2F0ZSB0byB0aGlzIEhp
c3RvcnlJdGVtLgotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGFuZ2UgV2ViQ29yZSB0byBo
YW5kbGUgaGlzdG9yeS57YmFjayxmb3J3YXJkLGdvfQotICAgIC8vIGRpZmZlcmVudGx5LiAgSXQg
c2hvdWxkIHBlcmhhcHMganVzdCBhc2sgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHRvCi0gICAgLy8g
cGVyZm9ybSB0aG9zZSBuYXZpZ2F0aW9ucy4KLQotICAgIFN0cmluZyB1cmxTdHJpbmcgPSBtYWtl
U3RyaW5nKGJhY2tGb3J3YXJkTmF2aWdhdGlvblNjaGVtZSwgIjovL2dvLyIsIFN0cmluZzo6bnVt
YmVyKGluZGV4KSk7Ci0gICAgbV9wZW5kaW5nSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3Jl
YXRlKHVybFN0cmluZywgU3RyaW5nKCksIDApOwotICAgIHJldHVybiBtX3BlbmRpbmdIaXN0b3J5
SXRlbS5nZXQoKTsKLX0KLQotaW50IEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OmJhY2tMaXN0
Q291bnQoKQotewotICAgIGlmICghbV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+aGlzdG9yeUJhY2tMaXN0Q291
bnQoKTsKLX0KLQotaW50IEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGw6OmZvcndhcmRMaXN0Q291
bnQoKQotewotICAgIGlmICghbV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+aGlzdG9yeUZvcndhcmRMaXN0Q291
bnQoKTsKLX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOjpjbG9zZSgpCi17Ci0g
ICAgbV9jdXJyZW50SXRlbSA9IDA7Ci0gICAgbV9wcmV2aW91c0l0ZW0gPSAwOwotICAgIG1fcGVu
ZGluZ0hpc3RvcnlJdGVtID0gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuaAkocmV2
aXNpb24gNzU3NTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0JhY2tGb3J3YXJkTGlzdENsaWVu
dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBCYWNrRm9yd2Fy
ZExpc3RDbGllbnRJbXBsX2gKLSNkZWZpbmUgQmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbF9oCi0K
LSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgV2ViVmlld0ltcGw7Ci0KLWV4dGVybiBjb25zdCBjaGFyIGJhY2tGb3J3YXJkTmF2aWdh
dGlvblNjaGVtZVtdOwotCi1jbGFzcyBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsIDogcHVibGlj
IFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgQmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbChXZWJWaWV3SW1wbCogd2Vidmlldyk7Ci0gICAgfkJhY2tGb3J3YXJk
TGlzdENsaWVudEltcGwoKTsKLQotICAgIHZvaWQgc2V0Q3VycmVudEhpc3RvcnlJdGVtKFdlYkNv
cmU6Okhpc3RvcnlJdGVtKiBpdGVtKTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogcHJldmlv
dXNIaXN0b3J5SXRlbSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIC8vIFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdENsaWVudCBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBpdGVtQXRJbmRleChpbnQgaW5kZXgpOwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQo
KTsKLSAgICB2aXJ0dWFsIGludCBmb3J3YXJkTGlzdENvdW50KCk7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7Ci0KLSAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OwotCi0gICAgUmVmUHRyPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPiBtX3ByZXZpb3VzSXRlbTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IG1fY3VycmVudEl0ZW07Ci0KLSAgICAvLyBUaGUgbGFzdCBoaXN0b3J5IGl0
ZW0gdGhhdCB3YXMgYWNjZXNzZWQgdmlhIGl0ZW1BdEluZGV4KCkuICBXZSBrZWVwIHRyYWNrCi0g
ICAgLy8gb2YgdGhpcyB1bnRpbCBnb1RvSXRlbSgpIGlzIGNhbGxlZCwgc28gd2UgY2FuIHRyYWNr
IHRoZSBuYXZpZ2F0aW9uLgotICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gbV9wZW5k
aW5nSGlzdG9yeUl0ZW07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiA3NTc1NikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIgogCisjaW5jbHVkZSAiQmFj
a0ZvcndhcmRMaXN0Q2hyb21pdW0uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA3NTc1NikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAog
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogCiAjaW5jbHVkZSAiQXNzb2NpYXRlZFVSTExvYWRl
ci5oIgorI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRp
bGl0aWVzQ2hyb21pdW0uaCIKQEAgLTg5MSw3ICs4OTIsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6
bG9hZEhpc3RvcnlJdGVtKGNvbnN0CiAgICAgICAgIGN1cnJlbnRJdGVtID0gSGlzdG9yeUl0ZW06
OmNyZWF0ZSgpOwogICAgICAgICBjdXJyZW50SXRlbS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0
cnVlKTsKICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+c2V0Q3VycmVudEl0
ZW0oY3VycmVudEl0ZW0uZ2V0KCkpOwotICAgICAgICB2aWV3SW1wbCgpLT5zZXRDdXJyZW50SGlz
dG9yeUl0ZW0oY3VycmVudEl0ZW0uZ2V0KCkpOworICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmJh
Y2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKGN1cnJlbnRJdGVtLmdldCgpKTsKICAgICB9CiAK
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5nb1RvSXRlbSgKQEAgLTk5Myw3ICs5
OTQsNyBAQCBXZWJIaXN0b3J5SXRlbSBXZWJGcmFtZUltcGw6OmN1cnJlbnRIaXN0CiAgICAgICAg
IHx8ICFtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5n
SW5BUElTZW5zZSgpKQogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZl
RG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOwogCi0gICAgcmV0dXJuIFdlYkhpc3RvcnlJdGVtKG1f
ZnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRMaXN0KCktPmN1cnJlbnRJdGVtKCkpOworICAgIHJl
dHVybiBXZWJIaXN0b3J5SXRlbShtX2ZyYW1lLT5wYWdlKCktPmJhY2tGb3J3YXJkKCktPmN1cnJl
bnRJdGVtKCkpOwogfQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6ZW5hYmxlVmlld1NvdXJjZU1vZGUo
Ym9vbCBlbmFibGUpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNp
b24gNzU3NTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiQXV0b0ZpbGxQb3B1cE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0SW1wbC5oIgorI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgiCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIKICNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCkBAIC0yNzQsNyArMjc0LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5pdGlh
bGl6ZU1haW5GcmFtZShXZQogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQq
IGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHNDbGllbnQsIFdlYkF1dG9G
aWxsQ2xpZW50KiBhdXRvRmlsbENsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fYXV0b0ZpbGxDbGllbnQoYXV0b0ZpbGxDbGllbnQpCi0gICAgLCBtX2JhY2tGb3J3YXJkTGlz
dENsaWVudEltcGwodGhpcykKICAgICAsIG1fY2hyb21lQ2xpZW50SW1wbCh0aGlzKQogICAgICwg
bV9jb250ZXh0TWVudUNsaWVudEltcGwodGhpcykKICAgICAsIG1fZHJhZ0NsaWVudEltcGwodGhp
cykKQEAgLTMzOCwxMiArMzM3LDEyIEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiAKICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50
ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogICAgIHBhZ2VDbGllbnRz
Lmdlb2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5LmdldCgpOworICAg
IHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50ID0gQmFja0ZvcndhcmRMaXN0Q2hyb21pdW06
OmNyZWF0ZSh0aGlzKTsKIAogICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsK
IAogICAgIG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eS0+c2V0Q29udHJvbGxlcihtX3BhZ2UtPmdl
b2xvY2F0aW9uQ29udHJvbGxlcigpKTsKIAotICAgIHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlz
dEltcGwqPihtX3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+c2V0Q2xpZW50KCZtX2JhY2tGb3J3
YXJkTGlzdENsaWVudEltcGwpOwogICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKHBhZ2VHcm91cE5h
bWUpOwogCiAgICAgbV9pbnNwZWN0b3JTZXR0aW5nc01hcC5zZXQobmV3IFNldHRpbmdzTWFwKTsK
QEAgLTIxNjUsMTYgKzIxNjQsNiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydERyYWdnaW5nKGNv
bnN0IFdlCiAgICAgbV9jbGllbnQtPnN0YXJ0RHJhZ2dpbmcoZHJhZ0RhdGEsIG1hc2ssIGRyYWdJ
bWFnZSwgZHJhZ0ltYWdlT2Zmc2V0KTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0Q3VycmVu
dEhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewotICAgIG1fYmFja0ZvcndhcmRMaXN0
Q2xpZW50SW1wbC5zZXRDdXJyZW50SGlzdG9yeUl0ZW0oaXRlbSk7Ci19Ci0KLUhpc3RvcnlJdGVt
KiBXZWJWaWV3SW1wbDo6cHJldmlvdXNIaXN0b3J5SXRlbSgpCi17Ci0gICAgcmV0dXJuIG1fYmFj
a0ZvcndhcmRMaXN0Q2xpZW50SW1wbC5wcmV2aW91c0hpc3RvcnlJdGVtKCk7Ci19Ci0KIHZvaWQg
V2ViVmlld0ltcGw6Om9ic2VydmVOZXdOYXZpZ2F0aW9uKCkKIHsKICAgICBtX29ic2VydmVkTmV3
TmF2aWdhdGlvbiA9IHRydWU7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZp
c2lvbiA3NTc1NikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1
ZGUgIldlYlZpZXcuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwuaCIK
ICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEltcGwuaCIKQEAgLTIzOSw4ICsyMzgsNiBA
QCBwdWJsaWM6CiAgICAgV2ViRnJhbWVJbXBsKiBtYWluRnJhbWVJbXBsKCk7CiAKICAgICAvLyBI
aXN0b3J5IHJlbGF0ZWQgbWV0aG9kczoKLSAgICB2b2lkIHNldEN1cnJlbnRIaXN0b3J5SXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSopOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBwcmV2aW91
c0hpc3RvcnlJdGVtKCk7CiAgICAgdm9pZCBvYnNlcnZlTmV3TmF2aWdhdGlvbigpOwogCiAgICAg
Ly8gRXZlbnQgcmVsYXRlZCBtZXRob2RzOgpAQCAtNDEwLDcgKzQwNyw2IEBAIHByaXZhdGU6CiAg
ICAgV2ViVmlld0NsaWVudCogbV9jbGllbnQ7CiAgICAgV2ViQXV0b0ZpbGxDbGllbnQqIG1fYXV0
b0ZpbGxDbGllbnQ7CiAKLSAgICBCYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsIG1fYmFja0Zvcndh
cmRMaXN0Q2xpZW50SW1wbDsKICAgICBDaHJvbWVDbGllbnRJbXBsIG1fY2hyb21lQ2xpZW50SW1w
bDsKICAgICBDb250ZXh0TWVudUNsaWVudEltcGwgbV9jb250ZXh0TWVudUNsaWVudEltcGw7CiAg
ICAgRHJhZ0NsaWVudEltcGwgbV9kcmFnQ2xpZW50SW1wbDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>