<?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>190675</bug_id>
          
          <creation_ts>2018-10-17 12:03:17 -0700</creation_ts>
          <short_desc>BackForwardClient needs to be able to support UIProcess-only back/forward lists</short_desc>
          <delta_ts>2018-10-17 14:06:21 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470242</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 12:03:17 -0700</bug_when>
    <thetext>BackForwardClient needs to be able to support UIProcess-only back/forward lists</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470251</commentid>
    <comment_count>1</comment_count>
      <attachid>352606</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 12:11:11 -0700</bug_when>
    <thetext>Created attachment 352606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470254</commentid>
    <comment_count>2</comment_count>
      <attachid>352607</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 12:13:20 -0700</bug_when>
    <thetext>Created attachment 352607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470275</commentid>
    <comment_count>3</comment_count>
      <attachid>352616</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 12:47:34 -0700</bug_when>
    <thetext>Created attachment 352616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470286</commentid>
    <comment_count>4</comment_count>
      <attachid>352621</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 12:59:14 -0700</bug_when>
    <thetext>Created attachment 352621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470313</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 13:37:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/r237233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470315</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-17 13:38:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/45349080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470323</commentid>
    <comment_count>7</comment_count>
      <attachid>352621</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-10-17 13:53:56 -0700</bug_when>
    <thetext>Comment on attachment 352621
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=352621&amp;action=review

&gt; Source/WebCore/ChangeLog:10
&gt; +        Also use unsigned for the back and forward list counts because they can never be negative.

This may be true. I do not think this fact is best conveyed using unsigned. Data types should be chosen based on the range of representable values needed for the problem being solved. It seems a key design decision for this class was to expose a getter than takes a delta and every other decision falls out from this. Maybe this isn’t the right design, but it seems intuitive and it comes with a nice property as shown in the implementation of count(): “back count” + 1 “forward count” represents the entire range of an int. And this has another nice property that iterating over all items is a for-loop from -“back count” to “forward count” (seen in the webPage.cpp code). I find it hard to imagine a client would have anything close to 2^31 - 1 history items backwards and/or forwards, but I find it inconceivable that a client would have 2^32 - 1 items backwards and/or forwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470327</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-17 14:06:21 -0700</bug_when>
    <thetext>Well counts that are never less than zero certainly don&apos;t need to be signed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352606</attachid>
            <date>2018-10-17 12:11:11 -0700</date>
            <delta_ts>2018-10-17 12:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190675-20181017121111.patch</filename>
            <type>text/plain</type>
            <size>28569</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0Zvcndh
cmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2sv
Zm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV0dXJuIGEgUmVmUHRyPEhpc3RvcnlJdGVtPiBpbnN0ZWFkIG9mIGEgSGlzdG9yeUl0
ZW0gc28gdGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gcmV0dXJuIGEKKyAgICAgICAgSGlzdG9yeUl0
ZW0gdGhhdCBoYXMgYmVlbiBjcmVhdGVkIGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgSGlzdG9y
eUl0ZW0gdGhhdCBpcyBvd25lZCBieSBzb21ldGhpbmcgZWxzZS4KKyAgICAgICAgQWxzbyB1c2Ug
dW5zaWduZWQgZm9yIHRoZSBiYWNrIGFuZCBmb3J3YXJkIGxpc3QgY291bnRzIGJlY2F1c2UgdGhl
eSBjYW4gbmV2ZXIgYmUgbmVnYXRpdmUuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJk
Q2xpZW50Lmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2tPckZv
cndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmZvcndhcmRDb3VudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6Oml0ZW1BdElu
ZGV4KToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0
ZW0pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24pOgorCiAyMDE4LTEw
LTE2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
PG1ldGEgbmFtZT0ic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiPiB0byBjb250cm9sIHdoYXQgY29s
b3Igc2NoZW1lcyB0aGUgcGFnZSBzdXBwb3J0cwpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0
NCw5IEBAIHB1YmxpYzogCiAKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0m
KSA9IDA7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGlu
dCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgZm9y
d2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2xpZW50LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgiCiAKQEAgLTQwLDEz
ICs0MSwyOCBAQCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OkJhY2tGb3J3YXJkQ29udHJvCiAKIEJh
Y2tGb3J3YXJkQ29udHJvbGxlcjo6fkJhY2tGb3J3YXJkQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
IAorUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tJdGVtKCkK
K3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOworfQorCitSZWZQdHI8SGlzdG9yeUl0ZW0+
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Y3VycmVudEl0ZW0oKQoreworICAgIHJldHVybiBpdGVt
QXRJbmRleCgwKTsKK30KKworUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OmZvcndhcmRJdGVtKCkKK3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoMSk7Cit9CisKIGJv
b2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdAogewogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChkaXN0YW5jZSA+IDAgJiYgZGlzdGFuY2UgPD0gZm9yd2FyZENvdW50KCkpCisgICAgaWYg
KGRpc3RhbmNlID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlzdGFuY2UpIDw9IGZvcndh
cmRDb3VudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZGlzdGFuY2UgPCAwICYm
IC1kaXN0YW5jZSA8PSBiYWNrQ291bnQoKSkKKyAgICBpZiAoZGlzdGFuY2UgPCAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigtZGlzdGFuY2UpIDw9IGJhY2tDb3VudCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01Niw0MCArNzIsNDAgQEAgdm9pZCBC
YWNrRm9yd2FyZENvbnRyb2xsZXI6OmdvQmFja09yRm9ydwogICAgIGlmICghZGlzdGFuY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gaXRlbUF0SW5kZXgoZGlz
dGFuY2UpOwotICAgIGlmICghaXRlbSkgeworICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSBpdGVtQXRJ
bmRleChkaXN0YW5jZSk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkgewogICAgICAgICBpZiAoZGlz
dGFuY2UgPiAwKSB7CiAgICAgICAgICAgICBpZiAoaW50IGZvcndhcmRDb3VudCA9IHRoaXMtPmZv
cndhcmRDb3VudCgpKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtQXRJbmRleChmb3J3YXJk
Q291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgoZm9yd2Fy
ZENvdW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpbnQgYmFja0NvdW50
ID0gdGhpcy0+YmFja0NvdW50KCkpCi0gICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1BdEluZGV4
KC1iYWNrQ291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgo
LWJhY2tDb3VudCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWl0ZW0pCisgICAgaWYg
KCFoaXN0b3J5SXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCpp
dGVtLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlzdG9yeUl0ZW0sIEZyYW1l
TG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObyk7CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2soKQogewotICAg
IEhpc3RvcnlJdGVtKiBpdGVtID0gYmFja0l0ZW0oKTsKLSAgICBpZiAoIWl0ZW0pCisgICAgYXV0
byBoaXN0b3J5SXRlbSA9IGJhY2tJdGVtKCk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCppdGVtLCBGcmFtZUxvYWRU
eXBlOjpCYWNrLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBtX3BhZ2Uu
Z29Ub0l0ZW0oKmhpc3RvcnlJdGVtLCBGcmFtZUxvYWRUeXBlOjpCYWNrLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBm
b3J3YXJkSXRlbSgpOwotICAgIGlmICghaXRlbSkKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gZm9y
d2FyZEl0ZW0oKTsKKyAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BhZ2UuZ29Ub0l0ZW0oKml0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlz
dG9yeUl0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDMsMjIgKzExOSwyMiBAQCB2
b2lkIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6c2V0Q3VycmVudEl0CiAgICAgbV9jbGllbnQtPmdv
VG9JdGVtKGl0ZW0pOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCgpIGNv
bnN0Cit1bnNpZ25lZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmNvdW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPmJhY2tMaXN0Q291bnQoKSArIDEgKyBtX2NsaWVudC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQo
KSBjb25zdAordW5zaWduZWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+YmFja0xpc3RDb3VudCgpOwogfQogCi1pbnQgQmFj
a0ZvcndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAordW5zaWduZWQgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRD
b250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0Zv
cndhcmRDb250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKIHsKICAgICByZXR1cm4gbV9jbGll
bnQtPml0ZW1BdEluZGV4KGkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxNyArNTMsMTcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+
JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICAgICAgCi0g
ICAgaW50IGNvdW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJhY2tDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJh
Y2tDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZvcndhcmRDb3Vu
dCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4
KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRl
eChpbnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgSGlzdG9yeUl0ZW0qIGJhY2tJdGVt
KCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOyB9Ci0gICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJ
dGVtKCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoMCk7IH0KLSAgICBIaXN0b3J5SXRlbSogZm9yd2Fy
ZEl0ZW0oKSB7IHJldHVybiBpdGVtQXRJbmRleCgxKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhp
c3RvcnlJdGVtPiBmb3J3YXJkSXRlbSgpOwogCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzcy
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5Qcm9jZXNzSURC
U2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKQEAgLTg0LDkgKzg1LDkgQEAgY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjsKIGNsYXNzIEVtcHR5QmFja0ZvcndhcmRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QmFja0ZvcndhcmRDbGllbnQgewogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0KLSAg
ICBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRleChpbnQpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQorICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjM3MjA0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsNyArNDc3LDkgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZUhpc3RvcgogICAgIC8vIEludmFsaWQgaGlzdG9yeSBuYXZpZ2F0aW9ucyAoc3VjaCBhcyBo
aXN0b3J5LmZvcndhcmQoKSBkdXJpbmcgYSBuZXcgbG9hZCkgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2FuY2VsbGluZyBhbnkgc2NoZWR1bGVkCiAgICAgLy8gcmVkaXJlY3RzLiBXZSBhbHNvIGF2
b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBjYW5jZWxsaW5nIHRoZSBjdXJyZW50IGxvYWQgYnkgYXZv
aWRpbmcgdGhlIHNjaGVkdWxlZCByZWRpcmVjdGlvbiBhbHRvZ2V0aGVyLgogICAgIEJhY2tGb3J3
YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQgPSBtX2ZyYW1lLnBhZ2UoKS0+YmFja0ZvcndhcmQo
KTsKLSAgICBpZiAoc3RlcHMgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSB8fCAtc3RlcHMg
PiBiYWNrRm9yd2FyZC5iYWNrQ291bnQoKSkgeworICAgIGlmICghc3RlcHMKKyAgICAgICAgfHwg
KHN0ZXBzID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RlcHMpID4gYmFja0ZvcndhcmQu
Zm9yd2FyZENvdW50KCkpCisgICAgICAgIHx8IChzdGVwcyA8IDAgJiYgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KC1zdGVwcykgPiBiYWNrRm9yd2FyZC5iYWNrQ291bnQoKSkpIHsKICAgICAgICAgY2Fu
Y2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3
MjMwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAxOC0xMC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEJhY2tGb3J3YXJkQ2xpZW50IG5lZWRzIHRvIGJlIGFibGUgdG8g
c3VwcG9ydCBVSVByb2Nlc3Mtb25seSBiYWNrL2ZvcndhcmQgbGlzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0
SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tM
aXN0Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmZv
cndhcmRMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkdW1wSGlzdG9yeUZvclRlc3RpbmcpOgorCiAyMDE4LTEwLTE3ICBBbGkgSnVtYSAgPGFqdW1h
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGbGFreSBJbnRlcnNlY3Rpb25PYnNlcnZlciB3ZWIg
cGxhdGZvcm0gdGVzdHMgaW52b2x2aW5nIHN0eWxlIHVwZGF0ZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAkocmV2aXNpb24gMjM3MjA0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ5LDIzICsyNDksMjMgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
V2ViQmFja0ZvcndhcmRMaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBE
byByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJm
bG93LgotICAgIGlmIChpbmRleCA8IC1iYWNrTGlzdENvdW50KCkpCisgICAgaWYgKGluZGV4IDwg
MCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLWluZGV4KSA+IGJhY2tMaXN0Q291bnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RD
b3VudCgpKQorICAgIGlmIChpbmRleCA+IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSA+IGZvcndhcmRMaXN0Q291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IAorCiAgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArICptX2N1cnJlbnRJbmRleF0ucHRyKCk7
CiB9CiAKLWludCBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAordW5z
aWduZWQgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkgY29uc3QKIHsKICAgICBB
U1NFUlQoIW1fY3VycmVudEluZGV4IHx8ICptX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXpl
KCkpOwogCiAgICAgcmV0dXJuIG1fcGFnZSAmJiBtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJ
bmRleCA6IDA7CiB9CiAKLWludCBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQo
KSBjb25zdAordW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIW1fY3VycmVudEluZGV4IHx8ICptX2N1cnJlbnRJbmRleCA8
IG1fZW50cmllcy5zaXplKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYw
LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgZW50
cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllczsgfQogCi0gICAgaW50IGJhY2tMaXN0Q291
bnQoKSBjb25zdDsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIGJhY2tMaXN0Q291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50
KCkgY29uc3Q7CiAKICAgICBSZWY8QVBJOjpBcnJheT4gYmFja0xpc3QoKSBjb25zdDsKICAgICBS
ZWY8QVBJOjpBcnJheT4gZm9yd2FyZExpc3QoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk4Niwx
MiArNDk4NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRlCiAg
ICAgICAgIGl0ZW1JRCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudChpbnQzMl90JiBjb3VudCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQodWludDMyX3QmIGNvdW50KQogewogICAgIGNvdW50
ID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudChpbnQzMl90JiBjb3VudCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQodWludDMyX3QmIGNvdW50
KQogewogICAgIGNvdW50ID0gbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRMaXN0Q291bnQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
MzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2Nyw4ICsxNTY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGJhY2tGb3J3
YXJkQWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJik7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkSXRlbUF0SW5k
ZXgoaW50MzJfdCBpbmRleCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyPiYpOwotICAgIHZvaWQgYmFja0ZvcndhcmRCYWNrTGlzdENvdW50KGludDMyX3Qm
IGNvdW50KTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudChpbnQzMl90JiBj
b3VudCk7CisgICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQodWludDMyX3QmIGNvdW50
KTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCh1aW50MzJfdCYgY291bnQp
OwogICAgIHZvaWQgYmFja0ZvcndhcmRDbGVhcigpOwogCiAgICAgLy8gVW5kbyBtYW5hZ2VtZW50
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzMCw4ICsyMzAsOCBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEJhY2tGb3J3YXJkQWRkSXRlbShzdHJ1Y3Qg
V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgaXRlbVN0YXRlKQogICAgIEJhY2tGb3J3
YXJkR29Ub0l0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaXRl
bUlEKSAtPiAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKICAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVt
SUQpCi0gICAgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291bnQpCi0g
ICAgQmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291bnQpCisgICAg
QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCkgLT4gKHVpbnQzMl90IGNvdW50KQorICAgIEJhY2tG
b3J3YXJkRm9yd2FyZExpc3RDb3VudCgpIC0+ICh1aW50MzJfdCBjb3VudCkKICAgICBCYWNrRm9y
d2FyZENsZWFyKCkKICAgICBXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oc3RydWN0IFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaXRlbUlELCBib29sIGluUGFnZUNhY2hlKQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpnb1RvSXRlbShICiAgICAgbV9wYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigp
LmJlZ2luTG9hZChtX3BhZ2UtPm1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKIH0KIAotSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpp
dGVtQXRJbmRleChpbnQgaXRlbUluZGV4KQorUmVmUHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKIHsKICAgICBpZiAoIW1f
cGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjUsMjQgKzEyNSwyNCBAQCBIaXN0
b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0CiAgICAgcmV0dXJuIGlkVG9IaXN0
b3J5SXRlbU1hcCgpLmdldCgqaXRlbUlEKTsKIH0KIAotaW50IFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBpbnQgYmFja0xpc3RDb3VudCA9IDA7CisgICAgdW5zaWduZWQgYmFj
a0xpc3RDb3VudCA9IDA7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNr
Rm9yd2FyZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRCYWNrTGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGJhY2tMaXN0Q291bnQ7CiB9CiAKLWlu
dCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNp
Z25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaW50IGZvcndhcmRM
aXN0Q291bnQgPSAwOworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQgPSAwOwogICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudDo6
UmVwbHkoZm9yd2FyZExpc3RDb3VudCksIG1fcGFnZS0+cGFnZUlEKCkpKQogICAgICAgICByZXR1
cm4gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCShyZXZpc2lvbiAyMzcyMDQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdv
VG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtJikgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwotICAgIGludCBi
YWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IGZvcndhcmRMaXN0Q291bnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW1B
dEluZGV4KGludCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIzNzIwNSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBTdHJpbmcgV2ViUGFnZTo6ZHVtcEhpc3RvcnlGb3JUZXN0
aW5nKGNvCiAgICAgaW50IGJlZ2luID0gLWxpc3QuYmFja0NvdW50KCk7CiAgICAgaWYgKGxpc3Qu
aXRlbUF0SW5kZXgoYmVnaW4pLT51cmwoKSA9PSBibGFua1VSTCgpKQogICAgICAgICArK2JlZ2lu
OwotICAgIGZvciAoaW50IGkgPSBiZWdpbjsgaSA8PSBsaXN0LmZvcndhcmRDb3VudCgpOyArK2kp
CisgICAgZm9yIChpbnQgaSA9IGJlZ2luOyBpIDw9IHN0YXRpY19jYXN0PGludD4obGlzdC5mb3J3
YXJkQ291bnQoKSk7ICsraSkKICAgICAgICAgZHVtcEhpc3RvcnlJdGVtKCpsaXN0Lml0ZW1BdElu
ZGV4KGkpLCA4LCAhaSwgYnVpbGRlciwgZGlyZWN0b3J5KTsKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MjM3MjA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMTAtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCYWNrRm9yd2FyZENsaWVudCBuZWVkcyB0
byBiZSBhYmxlIHRvIHN1cHBvcnQgVUlQcm9jZXNzLW9ubHkgYmFjay9mb3J3YXJkIGxpc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3Rvcnkv
QmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW06
CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKToKKyAgICAgICAgKEJhY2tGb3J3
YXJkTGlzdDo6Y3VycmVudEl0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJk
SXRlbSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQgY29uc3QpOgor
ICAgICAgICAoQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToKKyAgICAg
ICAgKEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgpOgorICAgICAgICAqIEhpc3RvcnkvV2Vi
QmFja0ZvcndhcmRMaXN0Lm1tOgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgYmFja0l0
ZW1dKToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IGN1cnJlbnRJdGVtXSk6CisgICAg
ICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBmb3J3YXJkSXRlbV0pOgorICAgICAgICAoLVtXZWJC
YWNrRm9yd2FyZExpc3QgaXRlbUF0SW5kZXg6XSk6CisKIDIwMTgtMTAtMTYgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCA8bWV0YSBuYW1lPSJzdXBw
b3J0ZWQtY29sb3Itc2NoZW1lcyI+IHRvIGNvbnRyb2wgd2hhdCBjb2xvciBzY2hlbWVzIHRoZSBw
YWdlIHN1cHBvcnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDEwICs0NywxMCBAQCBwdWJsaWM6IAogICAgIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAgdm9pZCBn
b1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpIG92ZXJyaWRlOwogICAgICAgICAKLSAgICBX
ZWJDb3JlOjpIaXN0b3J5SXRlbSogYmFja0l0ZW0oKTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRl
bSogY3VycmVudEl0ZW0oKTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogZm9yd2FyZEl0ZW0o
KTsKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGJhY2tJdGVtKCk7CisgICAgUmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBjdXJyZW50SXRlbSgpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4gZm9yd2FyZEl0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9y
eUl0ZW0+IGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJhY2tMaXN0V2l0
aExpbWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+Jik7CiAgICAgdm9p
ZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIFZlY3RvcjxSZWY8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+PiYpOwpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6IAogICAgIHZvaWQgc2V0Q2FwYWNpdHko
aW50KTsKICAgICBib29sIGVuYWJsZWQoKTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0g
ICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgZm9yd2FyZExp
c3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291bnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBjb250YWluc0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKIAog
ICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCShyZXZpc2lvbiAyMzcyMDQpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDI0ICsxMDYsMjQgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6Omdv
VG9JdGVtKEhpc3RvcnlJdAogICAgICAgICBtX2N1cnJlbnQgPSBpbmRleDsKIH0KIAotSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQorUmVmUHRyPEhpc3RvcnlJdGVtPiBC
YWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKIHsKICAgICBpZiAobV9jdXJyZW50ICYmIG1fY3Vy
cmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50IC0gMV0ucHRyKCk7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50IC0g
MV0uY29weVJlZigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogQmFj
a0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3
YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudF0ucHRyKCk7Cisg
ICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5jb3B5UmVmKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVt
KCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCiB7
CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUo
KSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7Cisg
ICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50ICsgMV0uY29weVJlZigpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0xODksMjYgKzE4OSwyNiBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6c2V0RW5hYmxlZChib29sIGVuCiAgICAgfQogfQogCi1pbnQgQmFja0ZvcndhcmRMaXN0
OjpiYWNrTGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIEJhY2tGb3J3YXJkTGlzdDo6YmFja0xp
c3RDb3VudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVt
SW5kZXggPyAwIDogbV9jdXJyZW50OwogfQogCi1pbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJk
TGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RD
b3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5k
ZXggPyAwIDogc3RhdGljX2Nhc3Q8aW50PihtX2VudHJpZXMuc2l6ZSgpKSAtIChtX2N1cnJlbnQg
KyAxKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBt
X2VudHJpZXMuc2l6ZSgpIC0gbV9jdXJyZW50IC0gMTsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQorUmVmUHRyPEhpc3RvcnlJdGVtPiBC
YWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAgICAvLyBEbyByYW5n
ZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93Lgog
ICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIAotICAgIGlmIChpbmRleCA+IGZvcndhcmRMaXN0Q291bnQoKSkK
KyAgICBpZiAoaW5kZXggPiBzdGF0aWNfY2FzdDxpbnQ+KGZvcndhcmRMaXN0Q291bnQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKLSAgICByZXR1cm4gbV9lbnRyaWVzW2lu
ZGV4ICsgbV9jdXJyZW50XS5wdHIoKTsKKworICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBt
X2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDE3ICsyMjUsMTcg
QEAgLSAodm9pZClnb1RvSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCiAKIC0gKFdlYkhpc3Rv
cnlJdGVtICopYmFja0l0ZW0KIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+YmFja0l0
ZW0oKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZikt
PmJhY2tJdGVtKCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChXZWJIaXN0
b3J5SXRlbSAqKWN1cnJlbnRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1
cnJlbnRJdGVtKCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW2tpdChjb3Jl
KHNlbGYpLT5jdXJyZW50SXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAog
LSAoV2ViSGlzdG9yeUl0ZW0gKilmb3J3YXJkSXRlbQogewotICAgIHJldHVybiBbW2tpdChjb3Jl
KHNlbGYpLT5mb3J3YXJkSXRlbSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
W1traXQoY29yZShzZWxmKS0+Zm9yd2FyZEl0ZW0oKS5nZXQoKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CiB9CiAKIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXkoVmVjdG9yPFJlZjxIaXN0
b3J5SXRlbT4+JiBsaXN0KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIC0gKGludClmb3J3YXJkTGlzdENv
dW50CiAKIC0gKFdlYkhpc3RvcnlJdGVtICopaXRlbUF0SW5kZXg6KGludClpbmRleAogewotICAg
IHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5pdGVtQXRJbmRleChpbmRleCkpIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5pdGVtQXRJbmRleChpbmRl
eCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMzEpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0x
MC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEJhY2tGb3J3YXJkQ2xpZW50IG5lZWRzIHRvIGJlIGFibGUgdG8gc3VwcG9ydCBVSVByb2Nl
c3Mtb25seSBiYWNrL2ZvcndhcmQgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKEJhY2tG
b3J3YXJkTGlzdDo6YmFja0l0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50
SXRlbSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKToKKyAgICAgICAg
KEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9y
d2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAoQmFja0ZvcndhcmRM
aXN0OjppdGVtQXRJbmRleCk6CisgICAgICAgICogQmFja0ZvcndhcmRMaXN0Lmg6CisKIDIwMTgt
MTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZCBhZnRlciByMjM3MTEyLgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3QuY3BwCShyZXZp
c2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjQgKzExMywyNCBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0CiAgICAgfQogfQogCi1IaXN0b3J5SXRlbSogQmFja0Zv
cndhcmRMaXN0OjpiYWNrSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlz
dDo6YmFja0l0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5w
dHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5jb3B5UmVmKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6
OmN1cnJlbnRJdGVtKCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpjdXJy
ZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCi0g
ICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICAgICAgcmV0dXJu
IG1fZW50cmllc1ttX2N1cnJlbnRdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQorUmVmUHRyPEhp
c3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKIHsKICAgICBpZiAobV9l
bnRyaWVzLnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAg
ICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKKyAgICAgICAgcmV0dXJu
IG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5jb3B5UmVmKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTE5NiwyNiArMTk2LDI2IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFi
bGVkKGJvb2wgZW4KICAgICB9CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291
bnQoKSBjb25zdAordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBt
X2N1cnJlbnQ7CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBj
b25zdAordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiAoaW50
KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7CisgICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogbV9lbnRyaWVzLnNpemUoKSAtIG1fY3VycmVu
dCAtIDE7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGlu
dCBpbmRleCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRl
eChpbnQgaW5kZXgpCiB7CiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdpdGhvdXQgZG9pbmcgbWF0
aCBvbiBpbmRleCB0byBhdm9pZCBvdmVyZmxvdy4KICAgICBpZiAoaW5kZXggPCAtc3RhdGljX2Nh
c3Q8aW50PihtX2N1cnJlbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBp
ZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCisgICAgaWYgKGluZGV4ID4gc3RhdGljX2Nh
c3Q8aW50Pihmb3J3YXJkTGlzdENvdW50KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgCi0gICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CisK
KyAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4ICsgbV9jdXJyZW50XS5jb3B5UmVmKCk7CiB9CiAK
IFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYgQmFja0ZvcndhcmRMaXN0OjplbnRyaWVzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lvbiAy
MzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBAIHB1YmxpYzogCiAgICAgdm9pZCBnb0Zvcndh
cmQoKTsKICAgICB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtJikgb3ZlcnJpZGU7
CiAgICAgICAgIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBiYWNrSXRlbSgpOwotICAgIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtQXRJbmRl
eChpbnQpIG92ZXJyaWRlOworICAgIFJldGFpblB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gYmFj
a0l0ZW0oKTsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGN1cnJlbnRJdGVt
KCk7CisgICAgUmV0YWluUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBmb3J3YXJkSXRlbSgpOwor
ICAgIFJldGFpblB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3Rv
ciYpOwogICAgIHZvaWQgZm9yd2FyZExpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3Rv
ciYpOwpAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6IAogICAgIHZvaWQgc2V0Q2FwYWNpdHkoaW50
KTsKICAgICBib29sIGVuYWJsZWQoKTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0gICAg
aW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5hbDsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3Vu
dCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5h
bDsKKyAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBjb250YWluc0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKIAogICAgIHZvaWQgY2xvc2Uo
KSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352607</attachid>
            <date>2018-10-17 12:13:20 -0700</date>
            <delta_ts>2018-10-17 12:47:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190675-20181017121319.patch</filename>
            <type>text/plain</type>
            <size>28550</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0Zvcndh
cmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2sv
Zm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV0dXJuIGEgUmVmUHRyPEhpc3RvcnlJdGVtPiBpbnN0ZWFkIG9mIGEgSGlzdG9yeUl0
ZW0gc28gdGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gcmV0dXJuIGEKKyAgICAgICAgSGlzdG9yeUl0
ZW0gdGhhdCBoYXMgYmVlbiBjcmVhdGVkIGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgSGlzdG9y
eUl0ZW0gdGhhdCBpcyBvd25lZCBieSBzb21ldGhpbmcgZWxzZS4KKyAgICAgICAgQWxzbyB1c2Ug
dW5zaWduZWQgZm9yIHRoZSBiYWNrIGFuZCBmb3J3YXJkIGxpc3QgY291bnRzIGJlY2F1c2UgdGhl
eSBjYW4gbmV2ZXIgYmUgbmVnYXRpdmUuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJk
Q2xpZW50Lmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2tPckZv
cndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmZvcndhcmRDb3VudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6Oml0ZW1BdElu
ZGV4KToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0
ZW0pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24pOgorCiAyMDE4LTEw
LTE2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
PG1ldGEgbmFtZT0ic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiPiB0byBjb250cm9sIHdoYXQgY29s
b3Igc2NoZW1lcyB0aGUgcGFnZSBzdXBwb3J0cwpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0
NCw5IEBAIHB1YmxpYzogCiAKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0m
KSA9IDA7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGlu
dCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgZm9y
d2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2xpZW50LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgiCiAKQEAgLTQwLDEz
ICs0MSwyOCBAQCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OkJhY2tGb3J3YXJkQ29udHJvCiAKIEJh
Y2tGb3J3YXJkQ29udHJvbGxlcjo6fkJhY2tGb3J3YXJkQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
IAorUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tJdGVtKCkK
K3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOworfQorCitSZWZQdHI8SGlzdG9yeUl0ZW0+
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Y3VycmVudEl0ZW0oKQoreworICAgIHJldHVybiBpdGVt
QXRJbmRleCgwKTsKK30KKworUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OmZvcndhcmRJdGVtKCkKK3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoMSk7Cit9CisKIGJv
b2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdAogewogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChkaXN0YW5jZSA+IDAgJiYgZGlzdGFuY2UgPD0gZm9yd2FyZENvdW50KCkpCisgICAgaWYg
KGRpc3RhbmNlID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlzdGFuY2UpIDw9IGZvcndh
cmRDb3VudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZGlzdGFuY2UgPCAwICYm
IC1kaXN0YW5jZSA8PSBiYWNrQ291bnQoKSkKKyAgICBpZiAoZGlzdGFuY2UgPCAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigtZGlzdGFuY2UpIDw9IGJhY2tDb3VudCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01Niw0MCArNzIsNDAgQEAgdm9pZCBC
YWNrRm9yd2FyZENvbnRyb2xsZXI6OmdvQmFja09yRm9ydwogICAgIGlmICghZGlzdGFuY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gaXRlbUF0SW5kZXgoZGlz
dGFuY2UpOwotICAgIGlmICghaXRlbSkgeworICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSBpdGVtQXRJ
bmRleChkaXN0YW5jZSk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkgewogICAgICAgICBpZiAoZGlz
dGFuY2UgPiAwKSB7CiAgICAgICAgICAgICBpZiAoaW50IGZvcndhcmRDb3VudCA9IHRoaXMtPmZv
cndhcmRDb3VudCgpKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtQXRJbmRleChmb3J3YXJk
Q291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgoZm9yd2Fy
ZENvdW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpbnQgYmFja0NvdW50
ID0gdGhpcy0+YmFja0NvdW50KCkpCi0gICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1BdEluZGV4
KC1iYWNrQ291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgo
LWJhY2tDb3VudCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWl0ZW0pCisgICAgaWYg
KCFoaXN0b3J5SXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCpp
dGVtLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlzdG9yeUl0ZW0sIEZyYW1l
TG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObyk7CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2soKQogewotICAg
IEhpc3RvcnlJdGVtKiBpdGVtID0gYmFja0l0ZW0oKTsKLSAgICBpZiAoIWl0ZW0pCisgICAgYXV0
byBoaXN0b3J5SXRlbSA9IGJhY2tJdGVtKCk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCppdGVtLCBGcmFtZUxvYWRU
eXBlOjpCYWNrLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBtX3BhZ2Uu
Z29Ub0l0ZW0oKmhpc3RvcnlJdGVtLCBGcmFtZUxvYWRUeXBlOjpCYWNrLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBm
b3J3YXJkSXRlbSgpOwotICAgIGlmICghaXRlbSkKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gZm9y
d2FyZEl0ZW0oKTsKKyAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BhZ2UuZ29Ub0l0ZW0oKml0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlz
dG9yeUl0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDMsMjIgKzExOSwyMiBAQCB2
b2lkIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6c2V0Q3VycmVudEl0CiAgICAgbV9jbGllbnQtPmdv
VG9JdGVtKGl0ZW0pOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCgpIGNv
bnN0Cit1bnNpZ25lZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmNvdW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPmJhY2tMaXN0Q291bnQoKSArIDEgKyBtX2NsaWVudC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQo
KSBjb25zdAordW5zaWduZWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+YmFja0xpc3RDb3VudCgpOwogfQogCi1pbnQgQmFj
a0ZvcndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAordW5zaWduZWQgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRD
b250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0Zv
cndhcmRDb250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKIHsKICAgICByZXR1cm4gbV9jbGll
bnQtPml0ZW1BdEluZGV4KGkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxNyArNTMsMTcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+
JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICAgICAgCi0g
ICAgaW50IGNvdW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJhY2tDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJh
Y2tDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZvcndhcmRDb3Vu
dCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4
KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRl
eChpbnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgSGlzdG9yeUl0ZW0qIGJhY2tJdGVt
KCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOyB9Ci0gICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJ
dGVtKCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoMCk7IH0KLSAgICBIaXN0b3J5SXRlbSogZm9yd2Fy
ZEl0ZW0oKSB7IHJldHVybiBpdGVtQXRJbmRleCgxKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhp
c3RvcnlJdGVtPiBmb3J3YXJkSXRlbSgpOwogCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzcy
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5Qcm9jZXNzSURC
U2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKQEAgLTg0LDkgKzg1LDkgQEAgY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjsKIGNsYXNzIEVtcHR5QmFja0ZvcndhcmRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QmFja0ZvcndhcmRDbGllbnQgewogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0KLSAg
ICBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRleChpbnQpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQorICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjM3MjA0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsNyArNDc3LDggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZUhpc3RvcgogICAgIC8vIEludmFsaWQgaGlzdG9yeSBuYXZpZ2F0aW9ucyAoc3VjaCBhcyBo
aXN0b3J5LmZvcndhcmQoKSBkdXJpbmcgYSBuZXcgbG9hZCkgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2FuY2VsbGluZyBhbnkgc2NoZWR1bGVkCiAgICAgLy8gcmVkaXJlY3RzLiBXZSBhbHNvIGF2
b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBjYW5jZWxsaW5nIHRoZSBjdXJyZW50IGxvYWQgYnkgYXZv
aWRpbmcgdGhlIHNjaGVkdWxlZCByZWRpcmVjdGlvbiBhbHRvZ2V0aGVyLgogICAgIEJhY2tGb3J3
YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQgPSBtX2ZyYW1lLnBhZ2UoKS0+YmFja0ZvcndhcmQo
KTsKLSAgICBpZiAoc3RlcHMgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSB8fCAtc3RlcHMg
PiBiYWNrRm9yd2FyZC5iYWNrQ291bnQoKSkgeworICAgIGlmICgoc3RlcHMgPiAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGVwcykgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSkKKyAg
ICAgICAgfHwgKHN0ZXBzIDwgMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLXN0ZXBzKSA+IGJh
Y2tGb3J3YXJkLmJhY2tDb3VudCgpKSkgewogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMzApCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTEwLTE3
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QmFja0ZvcndhcmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1v
bmx5IGJhY2svZm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVz
dGluZyk6CisKIDIwMTgtMTAtMTcgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEZsYWt5IEludGVyc2VjdGlvbk9ic2VydmVyIHdlYiBwbGF0Zm9ybSB0ZXN0cyBpbnZv
bHZpbmcgc3R5bGUgdXBkYXRlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDks
MjMgKzI0OSwyMyBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRo
b3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAgaWYgKGluZGV4
IDwgLWJhY2tMaXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPCAwICYmIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigtaW5kZXgpID4gYmFja0xpc3RDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKLSAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCisgICAgaWYgKGlu
ZGV4ID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID4gZm9yd2FyZExpc3RDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICByZXR1cm4gbV9l
bnRyaWVzW2luZGV4ICsgKm1fY3VycmVudEluZGV4XS5wdHIoKTsKIH0KIAotaW50IFdlYkJhY2tG
b3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9jdXJyZW50SW5k
ZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAgICByZXR1cm4g
bV9wYWdlICYmIG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4IDogMDsKIH0KIAotaW50
IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VS
VCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5o
CShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJiBlbnRyaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9lbnRyaWVzOyB9CiAKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwotICAgIGlu
dCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKIAogICAgIFJl
ZjxBUEk6OkFycmF5PiBiYWNrTGlzdCgpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBmb3J3
YXJkTGlzdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTg2LDEyICs0OTg2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGUKICAgICAgICAgaXRlbUlEID0gc3Rk
OjpudWxsb3B0OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRCYWNrTGlzdENv
dW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQmFja0xp
c3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBtX2JhY2tGb3J3YXJkTGlz
dC0+YmFja0xpc3RDb3VudCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRG
b3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkRm9yd2FyZExpc3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBt
X2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY3LDgg
KzE1NjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+Jik7Ci0gICAg
dm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpOwotICAgIHZvaWQg
YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KTsKKyAgICB2b2lkIGJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudCh1aW50MzJfdCYgY291bnQpOworICAgIHZvaWQgYmFja0Zv
cndhcmRGb3J3YXJkTGlzdENvdW50KHVpbnQzMl90JiBjb3VudCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRvIG1hbmFnZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIz
NzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjMwLDggKzIzMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVjdCBXZWJLaXQ6OkJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCiAgICAgQmFja0ZvcndhcmRHb1RvSXRlbShzdHJ1Y3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpdGVtSUQpIC0+IChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIEJhY2tG
b3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpdGVtSW5kZXgpIC0+IChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2Fy
ZEJhY2tMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKLSAgICBCYWNrRm9yd2FyZEZvcndh
cmRMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKKyAgICBCYWNrRm9yd2FyZEJhY2tMaXN0
Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpCisgICAgQmFja0ZvcndhcmRGb3J3YXJkTGlzdENv
dW50KCkgLT4gKHVpbnQzMl90IGNvdW50KQogICAgIEJhY2tGb3J3YXJkQ2xlYXIoKQogICAgIFdp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvVG9JdGVtKEgK
ICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+
bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogfQogCi1I
aXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVt
SW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVt
QXRJbmRleChpbnQgaXRlbUluZGV4KQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyNSwyNCArMTI1LDI0IEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXQKICAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KCpp
dGVtSUQpOwogfQogCi1pbnQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAordW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlu
dCBiYWNrTGlzdENvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKIH0KIAotaW50IFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCA9IDA7CisgICAg
dW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENv
dW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVycmlk
ZTsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5z
aWduZWQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbG9z
ZSgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM3MjA1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNyArMTY2Niw3
IEBAIFN0cmluZyBXZWJQYWdlOjpkdW1wSGlzdG9yeUZvclRlc3RpbmcoY28KICAgICBpbnQgYmVn
aW4gPSAtbGlzdC5iYWNrQ291bnQoKTsKICAgICBpZiAobGlzdC5pdGVtQXRJbmRleChiZWdpbikt
PnVybCgpID09IGJsYW5rVVJMKCkpCiAgICAgICAgICsrYmVnaW47Ci0gICAgZm9yIChpbnQgaSA9
IGJlZ2luOyBpIDw9IGxpc3QuZm9yd2FyZENvdW50KCk7ICsraSkKKyAgICBmb3IgKGludCBpID0g
YmVnaW47IGkgPD0gc3RhdGljX2Nhc3Q8aW50PihsaXN0LmZvcndhcmRDb3VudCgpKTsgKytpKQog
ICAgICAgICBkdW1wSGlzdG9yeUl0ZW0oKmxpc3QuaXRlbUF0SW5kZXgoaSksIDgsICFpLCBidWls
ZGVyLCBkaXJlY3RvcnkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBA
QAorMjAxOC0xMC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEJhY2tGb3J3YXJkQ2xpZW50IG5lZWRzIHRvIGJlIGFibGUgdG8gc3VwcG9y
dCBVSVByb2Nlc3Mtb25seSBiYWNrL2ZvcndhcmQgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaDoK
KyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKEJhY2tGb3J3
YXJkTGlzdDo6YmFja0l0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmZvcndhcmRMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0
OjppdGVtQXRJbmRleCk6CisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOgorICAgICAgICAoLVtX
ZWJCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKToKKyAgICAgICAgKC1bV2ViQmFja0Zvcndh
cmRMaXN0IGZvcndhcmRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpdGVt
QXRJbmRleDpdKToKKwogMjAxOC0xMC0xNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIDxtZXRhIG5hbWU9InN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
Ij4gdG8gY29udHJvbCB3aGF0IGNvbG9yIHNjaGVtZXMgdGhlIHBhZ2Ugc3VwcG9ydHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1Ymxp
YzogCiAgICAgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtJikgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBiYWNrSXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwot
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBmb3J3
YXJkSXRlbSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgo
aW50KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBWZWN0b3I8
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPj4mKTsKICAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExp
bWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+Jik7CkBAIC01OSw4ICs1
OSw4IEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5h
YmxlZCgpOwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNv
bnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwogCiAgICAgdm9pZCBjbG9zZSgpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2Fy
ZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
MjQgKzEwNiwyNCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0CiAg
ICAgICAgIG1fY3VycmVudCA9IGluZGV4OwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRM
aXN0OjpiYWNrSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6YmFj
a0l0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0
ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsK
KyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5jb3B5UmVmKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJl
bnRJdGVtKCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCi0gICAgICAg
IHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQorUmVmUHRyPEhpc3RvcnlJ
dGVtPiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKIHsKICAgICBpZiAobV9lbnRyaWVz
LnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0
dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnQgKyAxXS5jb3B5UmVmKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTE4OSwyNiArMTg5LDI2IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJv
b2wgZW4KICAgICB9CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBj
b25zdAordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBtX2N1cnJl
bnQ7CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAor
dW5zaWduZWQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZW50cmllcy5zaXplKCkpIC0gKG1fY3VycmVudCArIDEpOworICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fZW50cmllcy5zaXplKCkgLSBt
X2N1cnJlbnQgLSAxOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJ
bmRleChpbnQgaW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6aXRl
bUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRob3V0IGRv
aW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCiAgICAgaWYgKGluZGV4IDwgLXN0
YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQorICAgIGlmIChpbmRleCA+IHN0
YXRpY19jYXN0PGludD4oZm9yd2FyZExpc3RDb3VudCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIAotICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0
cigpOworCisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uY29weVJlZigp
OwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIw
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsMTcgKzIyNSwxNyBAQCAtICh2b2lkKWdvVG9JdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKiliYWNrSXRlbQog
ewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+YmFja0l0ZW0oKS5nZXQoKSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdlYkhpc3RvcnlJdGVtICopY3VycmVudEl0
ZW0KIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+Y3VycmVudEl0ZW0oKSkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJdGVt
KCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChXZWJIaXN0b3J5SXRlbSAq
KWZvcndhcmRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmZvcndhcmRJdGVt
KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5m
b3J3YXJkSXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogc3RhdGljIE5T
QXJyYXkqIHZlY3RvclRvTlNBcnJheShWZWN0b3I8UmVmPEhpc3RvcnlJdGVtPj4mIGxpc3QpCkBA
IC0zNTcsNyArMzU3LDcgQEAgLSAoaW50KWZvcndhcmRMaXN0Q291bnQKIAogLSAoV2ViSGlzdG9y
eUl0ZW0gKilpdGVtQXRJbmRleDooaW50KWluZGV4CiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUo
c2VsZiktPml0ZW1BdEluZGV4KGluZGV4KSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFtba2l0KGNvcmUoc2VsZiktPml0ZW1BdEluZGV4KGluZGV4KS5nZXQoKSkgcmV0YWluXSBh
dXRvcmVsZWFzZV07CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNzIzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEwLTE3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0ZvcndhcmRDbGll
bnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2svZm9yd2Fy
ZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0Ojpi
YWNrTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KToK
KyAgICAgICAgKiBCYWNrRm9yd2FyZExpc3QuaDoKKwogMjAxOC0xMC0xNiAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8g
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMzcxMTIuCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMywyNCArMTEzLDI0IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0
b3J5SXQKICAgICB9CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVt
KCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCiB7CiAg
ICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLnB0cigpOworICAgICAgICByZXR1
cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQorUmVm
UHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKIHsKICAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dF0uY29weVJlZigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogQmFj
a0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3
YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQogewogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1f
Y3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudCArIDFdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dCArIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTk2LDI2ICsx
OTYsMjYgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbgogICAgIH0K
IH0KIAotaW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25l
ZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fY3VycmVudDsKIH0KIAotaW50
IEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBCYWNr
Rm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1
cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IChpbnQpbV9lbnRyaWVzLnNpemUoKSAt
IChtX2N1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiBtX2VudHJpZXMuc2l6ZSgpIC0gbV9jdXJyZW50IC0gMTsKIH0KIAotSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQorUmVmUHRyPEhp
c3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAg
ICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lk
IG92ZXJmbG93LgogICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGlmIChpbmRleCA+IGZvcndhcmRM
aXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPiBzdGF0aWNfY2FzdDxpbnQ+KGZvcndhcmRMaXN0
Q291bnQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKLSAgICByZXR1cm4g
bV9lbnRyaWVzW2luZGV4ICsgbV9jdXJyZW50XS5wdHIoKTsKKworICAgIHJldHVybiBtX2VudHJp
ZXNbaW5kZXggKyBtX2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAogVmVjdG9yPFJlZjxIaXN0b3J5
SXRlbT4+JiBCYWNrRm9yd2FyZExpc3Q6OmVudHJpZXMoKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwx
MCArNDQsMTAgQEAgcHVibGljOiAKICAgICB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZvaWQgZ29U
b0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGN1cnJlbnRJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Cisg
ICAgUmV0YWluUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBiYWNrSXRlbSgpOworICAgIFJldGFp
blB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gY3VycmVudEl0ZW0oKTsKKyAgICBSZXRhaW5QdHI8
V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGZvcndhcmRJdGVtKCk7CisgICAgUmV0YWluUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBi
YWNrTGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CiAgICAgdm9pZCBmb3J3
YXJkTGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CkBAIC01Niw4ICs1Niw4
IEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5hYmxl
ZCgpOwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3VudCgp
IGNvbnN0IGZpbmFsOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3QgZmluYWw7Cisg
ICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGZv
cndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNvbnRhaW5zSXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopOwogCiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352616</attachid>
            <date>2018-10-17 12:47:34 -0700</date>
            <delta_ts>2018-10-17 12:59:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190675-20181017124733.patch</filename>
            <type>text/plain</type>
            <size>28538</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0Zvcndh
cmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2sv
Zm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV0dXJuIGEgUmVmUHRyPEhpc3RvcnlJdGVtPiBpbnN0ZWFkIG9mIGEgSGlzdG9yeUl0
ZW0gc28gdGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gcmV0dXJuIGEKKyAgICAgICAgSGlzdG9yeUl0
ZW0gdGhhdCBoYXMgYmVlbiBjcmVhdGVkIGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgSGlzdG9y
eUl0ZW0gdGhhdCBpcyBvd25lZCBieSBzb21ldGhpbmcgZWxzZS4KKyAgICAgICAgQWxzbyB1c2Ug
dW5zaWduZWQgZm9yIHRoZSBiYWNrIGFuZCBmb3J3YXJkIGxpc3QgY291bnRzIGJlY2F1c2UgdGhl
eSBjYW4gbmV2ZXIgYmUgbmVnYXRpdmUuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJk
Q2xpZW50Lmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2tPckZv
cndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmZvcndhcmRDb3VudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6Oml0ZW1BdElu
ZGV4KToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0
ZW0pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24pOgorCiAyMDE4LTEw
LTE2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
PG1ldGEgbmFtZT0ic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiPiB0byBjb250cm9sIHdoYXQgY29s
b3Igc2NoZW1lcyB0aGUgcGFnZSBzdXBwb3J0cwpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0
NCw5IEBAIHB1YmxpYzogCiAKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0m
KSA9IDA7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGlu
dCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgZm9y
d2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2xpZW50LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgiCiAKQEAgLTQwLDEz
ICs0MSwyOCBAQCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OkJhY2tGb3J3YXJkQ29udHJvCiAKIEJh
Y2tGb3J3YXJkQ29udHJvbGxlcjo6fkJhY2tGb3J3YXJkQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
IAorUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tJdGVtKCkK
K3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOworfQorCitSZWZQdHI8SGlzdG9yeUl0ZW0+
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Y3VycmVudEl0ZW0oKQoreworICAgIHJldHVybiBpdGVt
QXRJbmRleCgwKTsKK30KKworUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OmZvcndhcmRJdGVtKCkKK3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoMSk7Cit9CisKIGJv
b2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdAogewogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChkaXN0YW5jZSA+IDAgJiYgZGlzdGFuY2UgPD0gZm9yd2FyZENvdW50KCkpCisgICAgaWYg
KGRpc3RhbmNlID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlzdGFuY2UpIDw9IGZvcndh
cmRDb3VudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZGlzdGFuY2UgPCAwICYm
IC1kaXN0YW5jZSA8PSBiYWNrQ291bnQoKSkKKyAgICBpZiAoZGlzdGFuY2UgPCAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigtZGlzdGFuY2UpIDw9IGJhY2tDb3VudCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01Niw0MCArNzIsNDAgQEAgdm9pZCBC
YWNrRm9yd2FyZENvbnRyb2xsZXI6OmdvQmFja09yRm9ydwogICAgIGlmICghZGlzdGFuY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gaXRlbUF0SW5kZXgoZGlz
dGFuY2UpOwotICAgIGlmICghaXRlbSkgeworICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSBpdGVtQXRJ
bmRleChkaXN0YW5jZSk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkgewogICAgICAgICBpZiAoZGlz
dGFuY2UgPiAwKSB7CiAgICAgICAgICAgICBpZiAoaW50IGZvcndhcmRDb3VudCA9IHRoaXMtPmZv
cndhcmRDb3VudCgpKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtQXRJbmRleChmb3J3YXJk
Q291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgoZm9yd2Fy
ZENvdW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpbnQgYmFja0NvdW50
ID0gdGhpcy0+YmFja0NvdW50KCkpCi0gICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1BdEluZGV4
KC1iYWNrQ291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgo
LWJhY2tDb3VudCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWl0ZW0pCisgICAgaWYg
KCFoaXN0b3J5SXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCpp
dGVtLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlzdG9yeUl0ZW0sIEZyYW1l
TG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObyk7CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2soKQogewotICAg
IEhpc3RvcnlJdGVtKiBpdGVtID0gYmFja0l0ZW0oKTsKLSAgICBpZiAoIWl0ZW0pCisgICAgYXV0
byBoaXN0b3J5SXRlbSA9IGJhY2tJdGVtKCk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCppdGVtLCBGcmFtZUxvYWRU
eXBlOjpCYWNrLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBtX3BhZ2Uu
Z29Ub0l0ZW0oKmhpc3RvcnlJdGVtLCBGcmFtZUxvYWRUeXBlOjpCYWNrLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBm
b3J3YXJkSXRlbSgpOwotICAgIGlmICghaXRlbSkKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gZm9y
d2FyZEl0ZW0oKTsKKyAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BhZ2UuZ29Ub0l0ZW0oKml0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlz
dG9yeUl0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDMsMjIgKzExOSwyMiBAQCB2
b2lkIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6c2V0Q3VycmVudEl0CiAgICAgbV9jbGllbnQtPmdv
VG9JdGVtKGl0ZW0pOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCgpIGNv
bnN0Cit1bnNpZ25lZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmNvdW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPmJhY2tMaXN0Q291bnQoKSArIDEgKyBtX2NsaWVudC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQo
KSBjb25zdAordW5zaWduZWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+YmFja0xpc3RDb3VudCgpOwogfQogCi1pbnQgQmFj
a0ZvcndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAordW5zaWduZWQgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRD
b250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0Zv
cndhcmRDb250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKIHsKICAgICByZXR1cm4gbV9jbGll
bnQtPml0ZW1BdEluZGV4KGkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxNyArNTMsMTcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+
JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICAgICAgCi0g
ICAgaW50IGNvdW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJhY2tDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJh
Y2tDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZvcndhcmRDb3Vu
dCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4
KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRl
eChpbnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgSGlzdG9yeUl0ZW0qIGJhY2tJdGVt
KCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOyB9Ci0gICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJ
dGVtKCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoMCk7IH0KLSAgICBIaXN0b3J5SXRlbSogZm9yd2Fy
ZEl0ZW0oKSB7IHJldHVybiBpdGVtQXRJbmRleCgxKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhp
c3RvcnlJdGVtPiBmb3J3YXJkSXRlbSgpOwogCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzcy
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5Qcm9jZXNzSURC
U2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKQEAgLTg0LDkgKzg1LDkgQEAgY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjsKIGNsYXNzIEVtcHR5QmFja0ZvcndhcmRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QmFja0ZvcndhcmRDbGllbnQgewogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0KLSAg
ICBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRleChpbnQpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQorICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjM3MjA0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsNyArNDc3LDggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZUhpc3RvcgogICAgIC8vIEludmFsaWQgaGlzdG9yeSBuYXZpZ2F0aW9ucyAoc3VjaCBhcyBo
aXN0b3J5LmZvcndhcmQoKSBkdXJpbmcgYSBuZXcgbG9hZCkgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2FuY2VsbGluZyBhbnkgc2NoZWR1bGVkCiAgICAgLy8gcmVkaXJlY3RzLiBXZSBhbHNvIGF2
b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBjYW5jZWxsaW5nIHRoZSBjdXJyZW50IGxvYWQgYnkgYXZv
aWRpbmcgdGhlIHNjaGVkdWxlZCByZWRpcmVjdGlvbiBhbHRvZ2V0aGVyLgogICAgIEJhY2tGb3J3
YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQgPSBtX2ZyYW1lLnBhZ2UoKS0+YmFja0ZvcndhcmQo
KTsKLSAgICBpZiAoc3RlcHMgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSB8fCAtc3RlcHMg
PiBiYWNrRm9yd2FyZC5iYWNrQ291bnQoKSkgeworICAgIGlmICgoc3RlcHMgPiAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGVwcykgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSkKKyAg
ICAgICAgfHwgKHN0ZXBzIDwgMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLXN0ZXBzKSA+IGJh
Y2tGb3J3YXJkLmJhY2tDb3VudCgpKSkgewogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMzApCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTEwLTE3
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QmFja0ZvcndhcmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1v
bmx5IGJhY2svZm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVz
dGluZyk6CisKIDIwMTgtMTAtMTcgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEZsYWt5IEludGVyc2VjdGlvbk9ic2VydmVyIHdlYiBwbGF0Zm9ybSB0ZXN0cyBpbnZv
bHZpbmcgc3R5bGUgdXBkYXRlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDks
MjMgKzI0OSwyMyBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRo
b3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAgaWYgKGluZGV4
IDwgLWJhY2tMaXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPCAwICYmIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigtaW5kZXgpID4gYmFja0xpc3RDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKLSAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCisgICAgaWYgKGlu
ZGV4ID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID4gZm9yd2FyZExpc3RDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICByZXR1cm4gbV9l
bnRyaWVzW2luZGV4ICsgKm1fY3VycmVudEluZGV4XS5wdHIoKTsKIH0KIAotaW50IFdlYkJhY2tG
b3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9jdXJyZW50SW5k
ZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAgICByZXR1cm4g
bV9wYWdlICYmIG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4IDogMDsKIH0KIAotaW50
IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VS
VCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5o
CShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJiBlbnRyaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9lbnRyaWVzOyB9CiAKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwotICAgIGlu
dCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKIAogICAgIFJl
ZjxBUEk6OkFycmF5PiBiYWNrTGlzdCgpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBmb3J3
YXJkTGlzdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTg2LDEyICs0OTg2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGUKICAgICAgICAgaXRlbUlEID0gc3Rk
OjpudWxsb3B0OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRCYWNrTGlzdENv
dW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQmFja0xp
c3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBtX2JhY2tGb3J3YXJkTGlz
dC0+YmFja0xpc3RDb3VudCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRG
b3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkRm9yd2FyZExpc3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBt
X2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY3LDgg
KzE1NjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+Jik7Ci0gICAg
dm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpOwotICAgIHZvaWQg
YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KTsKKyAgICB2b2lkIGJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudCh1aW50MzJfdCYgY291bnQpOworICAgIHZvaWQgYmFja0Zv
cndhcmRGb3J3YXJkTGlzdENvdW50KHVpbnQzMl90JiBjb3VudCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRvIG1hbmFnZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIz
NzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjMwLDggKzIzMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVjdCBXZWJLaXQ6OkJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCiAgICAgQmFja0ZvcndhcmRHb1RvSXRlbShzdHJ1Y3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpdGVtSUQpIC0+IChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIEJhY2tG
b3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpdGVtSW5kZXgpIC0+IChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2Fy
ZEJhY2tMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKLSAgICBCYWNrRm9yd2FyZEZvcndh
cmRMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKKyAgICBCYWNrRm9yd2FyZEJhY2tMaXN0
Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpCisgICAgQmFja0ZvcndhcmRGb3J3YXJkTGlzdENv
dW50KCkgLT4gKHVpbnQzMl90IGNvdW50KQogICAgIEJhY2tGb3J3YXJkQ2xlYXIoKQogICAgIFdp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvVG9JdGVtKEgK
ICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+
bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogfQogCi1I
aXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVt
SW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVt
QXRJbmRleChpbnQgaXRlbUluZGV4KQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyNSwyNCArMTI1LDI0IEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXQKICAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KCpp
dGVtSUQpOwogfQogCi1pbnQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAordW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlu
dCBiYWNrTGlzdENvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKIH0KIAotaW50IFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCA9IDA7CisgICAg
dW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENv
dW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVycmlk
ZTsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5z
aWduZWQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbG9z
ZSgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM3MjA1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNyArMTY2Niw3
IEBAIFN0cmluZyBXZWJQYWdlOjpkdW1wSGlzdG9yeUZvclRlc3RpbmcoY28KICAgICBpbnQgYmVn
aW4gPSAtbGlzdC5iYWNrQ291bnQoKTsKICAgICBpZiAobGlzdC5pdGVtQXRJbmRleChiZWdpbikt
PnVybCgpID09IGJsYW5rVVJMKCkpCiAgICAgICAgICsrYmVnaW47Ci0gICAgZm9yIChpbnQgaSA9
IGJlZ2luOyBpIDw9IGxpc3QuZm9yd2FyZENvdW50KCk7ICsraSkKKyAgICBmb3IgKGludCBpID0g
YmVnaW47IGkgPD0gc3RhdGljX2Nhc3Q8aW50PihsaXN0LmZvcndhcmRDb3VudCgpKTsgKytpKQog
ICAgICAgICBkdW1wSGlzdG9yeUl0ZW0oKmxpc3QuaXRlbUF0SW5kZXgoaSksIDgsICFpLCBidWls
ZGVyLCBkaXJlY3RvcnkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBA
QAorMjAxOC0xMC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEJhY2tGb3J3YXJkQ2xpZW50IG5lZWRzIHRvIGJlIGFibGUgdG8gc3VwcG9y
dCBVSVByb2Nlc3Mtb25seSBiYWNrL2ZvcndhcmQgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaDoK
KyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKEJhY2tGb3J3
YXJkTGlzdDo6YmFja0l0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmZvcndhcmRMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0
OjppdGVtQXRJbmRleCk6CisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOgorICAgICAgICAoLVtX
ZWJCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKToKKyAgICAgICAgKC1bV2ViQmFja0Zvcndh
cmRMaXN0IGZvcndhcmRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpdGVt
QXRJbmRleDpdKToKKwogMjAxOC0xMC0xNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIDxtZXRhIG5hbWU9InN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
Ij4gdG8gY29udHJvbCB3aGF0IGNvbG9yIHNjaGVtZXMgdGhlIHBhZ2Ugc3VwcG9ydHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1Ymxp
YzogCiAgICAgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtJikgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBiYWNrSXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwot
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBmb3J3
YXJkSXRlbSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgo
aW50KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBWZWN0b3I8
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPj4mKTsKICAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExp
bWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+Jik7CkBAIC01OSw4ICs1
OSw4IEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5h
YmxlZCgpOwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNv
bnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwogCiAgICAgdm9pZCBjbG9zZSgpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2Fy
ZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
MjQgKzEwNiwyNCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0CiAg
ICAgICAgIG1fY3VycmVudCA9IGluZGV4OwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRM
aXN0OjpiYWNrSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6YmFj
a0l0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0
ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsK
KyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5jb3B5UmVmKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJl
bnRJdGVtKCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCi0gICAgICAg
IHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQorUmVmUHRyPEhpc3RvcnlJ
dGVtPiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKIHsKICAgICBpZiAobV9lbnRyaWVz
LnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0
dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnQgKyAxXS5jb3B5UmVmKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTE4OSwyNiArMTg5LDI2IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJv
b2wgZW4KICAgICB9CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBj
b25zdAordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBtX2N1cnJl
bnQ7CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAor
dW5zaWduZWQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZW50cmllcy5zaXplKCkpIC0gKG1fY3VycmVudCArIDEpOworICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fZW50cmllcy5zaXplKCkgLSBt
X2N1cnJlbnQgLSAxOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJ
bmRleChpbnQgaW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6aXRl
bUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRob3V0IGRv
aW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCiAgICAgaWYgKGluZGV4IDwgLXN0
YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQorICAgIGlmIChpbmRleCA+IHN0
YXRpY19jYXN0PGludD4oZm9yd2FyZExpc3RDb3VudCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIAotICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0
cigpOworCisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uY29weVJlZigp
OwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIw
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsMTcgKzIyNSwxNyBAQCAtICh2b2lkKWdvVG9JdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKiliYWNrSXRlbQog
ewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+YmFja0l0ZW0oKS5nZXQoKSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdlYkhpc3RvcnlJdGVtICopY3VycmVudEl0
ZW0KIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+Y3VycmVudEl0ZW0oKSkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJdGVt
KCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChXZWJIaXN0b3J5SXRlbSAq
KWZvcndhcmRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmZvcndhcmRJdGVt
KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5m
b3J3YXJkSXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogc3RhdGljIE5T
QXJyYXkqIHZlY3RvclRvTlNBcnJheShWZWN0b3I8UmVmPEhpc3RvcnlJdGVtPj4mIGxpc3QpCkBA
IC0zNTcsNyArMzU3LDcgQEAgLSAoaW50KWZvcndhcmRMaXN0Q291bnQKIAogLSAoV2ViSGlzdG9y
eUl0ZW0gKilpdGVtQXRJbmRleDooaW50KWluZGV4CiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUo
c2VsZiktPml0ZW1BdEluZGV4KGluZGV4KSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFtba2l0KGNvcmUoc2VsZiktPml0ZW1BdEluZGV4KGluZGV4KS5nZXQoKSkgcmV0YWluXSBh
dXRvcmVsZWFzZV07CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNzIzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEwLTE3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0ZvcndhcmRDbGll
bnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2svZm9yd2Fy
ZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0Ojpi
YWNrTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KToK
KyAgICAgICAgKiBCYWNrRm9yd2FyZExpc3QuaDoKKwogMjAxOC0xMC0xNiAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8g
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMzcxMTIuCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMywyNCArMTEzLDI0IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0
b3J5SXQKICAgICB9CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVt
KCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCiB7CiAg
ICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLnB0cigpOworICAgICAgICByZXR1
cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQorUmVm
UHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKIHsKICAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dF0uY29weVJlZigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogQmFj
a0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3
YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQogewogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1f
Y3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudCArIDFdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dCArIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTk2LDI2ICsx
OTYsMjYgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbgogICAgIH0K
IH0KIAotaW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25l
ZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fY3VycmVudDsKIH0KIAotaW50
IEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBCYWNr
Rm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1
cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IChpbnQpbV9lbnRyaWVzLnNpemUoKSAt
IChtX2N1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiBtX2VudHJpZXMuc2l6ZSgpIC0gbV9jdXJyZW50IC0gMTsKIH0KIAotSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQorUmVmUHRyPEhp
c3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAg
ICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lk
IG92ZXJmbG93LgogICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGlmIChpbmRleCA+IGZvcndhcmRM
aXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPiBzdGF0aWNfY2FzdDxpbnQ+KGZvcndhcmRMaXN0
Q291bnQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKLSAgICByZXR1cm4g
bV9lbnRyaWVzW2luZGV4ICsgbV9jdXJyZW50XS5wdHIoKTsKKworICAgIHJldHVybiBtX2VudHJp
ZXNbaW5kZXggKyBtX2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAogVmVjdG9yPFJlZjxIaXN0b3J5
SXRlbT4+JiBCYWNrRm9yd2FyZExpc3Q6OmVudHJpZXMoKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwx
MCArNDQsMTAgQEAgcHVibGljOiAKICAgICB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZvaWQgZ29U
b0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGN1cnJlbnRJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBiYWNrSXRlbSgpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpIaXN0b3J5SXRlbT4gY3VycmVudEl0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IGZvcndhcmRJdGVtKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiYWNrTGlzdFdpdGhM
aW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CiAgICAgdm9pZCBmb3J3YXJkTGlzdFdpdGhM
aW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzog
CiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5hYmxlZCgpOwogICAgIHZv
aWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0IGZpbmFs
OwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQg
YmFja0xpc3RDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291
bnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNvbnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopOwogCiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352621</attachid>
            <date>2018-10-17 12:59:14 -0700</date>
            <delta_ts>2018-10-17 13:09:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190675-20181017125914.patch</filename>
            <type>text/plain</type>
            <size>30544</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEwLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0Zvcndh
cmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2sv
Zm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV0dXJuIGEgUmVmUHRyPEhpc3RvcnlJdGVtPiBpbnN0ZWFkIG9mIGEgSGlzdG9yeUl0
ZW0gc28gdGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gcmV0dXJuIGEKKyAgICAgICAgSGlzdG9yeUl0
ZW0gdGhhdCBoYXMgYmVlbiBjcmVhdGVkIGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgSGlzdG9y
eUl0ZW0gdGhhdCBpcyBvd25lZCBieSBzb21ldGhpbmcgZWxzZS4KKyAgICAgICAgQWxzbyB1c2Ug
dW5zaWduZWQgZm9yIHRoZSBiYWNrIGFuZCBmb3J3YXJkIGxpc3QgY291bnRzIGJlY2F1c2UgdGhl
eSBjYW4gbmV2ZXIgYmUgbmVnYXRpdmUuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJk
Q2xpZW50Lmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2tPckZv
cndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmZvcndhcmRDb3VudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6Oml0ZW1BdElu
ZGV4KToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrSXRlbSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmN1cnJlbnRJdGVtKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Zm9yd2FyZEl0
ZW0pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24pOgorCiAyMDE4LTEw
LTE2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
PG1ldGEgbmFtZT0ic3VwcG9ydGVkLWNvbG9yLXNjaGVtZXMiPiB0byBjb250cm9sIHdoYXQgY29s
b3Igc2NoZW1lcyB0aGUgcGFnZSBzdXBwb3J0cwpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0
NCw5IEBAIHB1YmxpYzogCiAKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0m
KSA9IDA7CiAgICAgICAgIAotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGlu
dCkgPSAwOwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgZm9y
d2FyZExpc3RDb3VudCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkJhY2tG
b3J3YXJkQ2xpZW50LmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgiCiAKQEAgLTQwLDEz
ICs0MSwyOCBAQCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OkJhY2tGb3J3YXJkQ29udHJvCiAKIEJh
Y2tGb3J3YXJkQ29udHJvbGxlcjo6fkJhY2tGb3J3YXJkQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
IAorUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmJhY2tJdGVtKCkK
K3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOworfQorCitSZWZQdHI8SGlzdG9yeUl0ZW0+
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Y3VycmVudEl0ZW0oKQoreworICAgIHJldHVybiBpdGVt
QXRJbmRleCgwKTsKK30KKworUmVmUHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OmZvcndhcmRJdGVtKCkKK3sKKyAgICByZXR1cm4gaXRlbUF0SW5kZXgoMSk7Cit9CisKIGJv
b2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KSBjb25zdAogewogICAgIGlmICghZGlzdGFuY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChkaXN0YW5jZSA+IDAgJiYgZGlzdGFuY2UgPD0gZm9yd2FyZENvdW50KCkpCisgICAgaWYg
KGRpc3RhbmNlID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlzdGFuY2UpIDw9IGZvcndh
cmRDb3VudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZGlzdGFuY2UgPCAwICYm
IC1kaXN0YW5jZSA8PSBiYWNrQ291bnQoKSkKKyAgICBpZiAoZGlzdGFuY2UgPCAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPigtZGlzdGFuY2UpIDw9IGJhY2tDb3VudCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01Niw0MCArNzIsNDAgQEAgdm9pZCBC
YWNrRm9yd2FyZENvbnRyb2xsZXI6OmdvQmFja09yRm9ydwogICAgIGlmICghZGlzdGFuY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEhpc3RvcnlJdGVtKiBpdGVtID0gaXRlbUF0SW5kZXgoZGlz
dGFuY2UpOwotICAgIGlmICghaXRlbSkgeworICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSBpdGVtQXRJ
bmRleChkaXN0YW5jZSk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkgewogICAgICAgICBpZiAoZGlz
dGFuY2UgPiAwKSB7CiAgICAgICAgICAgICBpZiAoaW50IGZvcndhcmRDb3VudCA9IHRoaXMtPmZv
cndhcmRDb3VudCgpKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtQXRJbmRleChmb3J3YXJk
Q291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgoZm9yd2Fy
ZENvdW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpbnQgYmFja0NvdW50
ID0gdGhpcy0+YmFja0NvdW50KCkpCi0gICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1BdEluZGV4
KC1iYWNrQ291bnQpOworICAgICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gaXRlbUF0SW5kZXgo
LWJhY2tDb3VudCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWl0ZW0pCisgICAgaWYg
KCFoaXN0b3J5SXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCpp
dGVtLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlzdG9yeUl0ZW0sIEZyYW1l
TG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObyk7CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0JhY2soKQogewotICAg
IEhpc3RvcnlJdGVtKiBpdGVtID0gYmFja0l0ZW0oKTsKLSAgICBpZiAoIWl0ZW0pCisgICAgYXV0
byBoaXN0b3J5SXRlbSA9IGJhY2tJdGVtKCk7CisgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlLmdvVG9JdGVtKCppdGVtLCBGcmFtZUxvYWRU
eXBlOjpCYWNrLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBtX3BhZ2Uu
Z29Ub0l0ZW0oKmhpc3RvcnlJdGVtLCBGcmFtZUxvYWRUeXBlOjpCYWNrLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBm
b3J3YXJkSXRlbSgpOwotICAgIGlmICghaXRlbSkKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gZm9y
d2FyZEl0ZW0oKTsKKyAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BhZ2UuZ29Ub0l0ZW0oKml0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOworICAgIG1fcGFnZS5nb1RvSXRlbSgqaGlz
dG9yeUl0ZW0sIEZyYW1lTG9hZFR5cGU6OkZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDMsMjIgKzExOSwyMiBAQCB2
b2lkIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6c2V0Q3VycmVudEl0CiAgICAgbV9jbGllbnQtPmdv
VG9JdGVtKGl0ZW0pOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpjb3VudCgpIGNv
bnN0Cit1bnNpZ25lZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmNvdW50KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPmJhY2tMaXN0Q291bnQoKSArIDEgKyBtX2NsaWVudC0+Zm9yd2Fy
ZExpc3RDb3VudCgpOwogfQogCi1pbnQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQo
KSBjb25zdAordW5zaWduZWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpiYWNrQ291bnQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+YmFja0xpc3RDb3VudCgpOwogfQogCi1pbnQgQmFj
a0ZvcndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAordW5zaWduZWQgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpmb3J3YXJkQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRD
b250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0Zv
cndhcmRDb250cm9sbGVyOjppdGVtQXRJbmRleChpbnQgaSkKIHsKICAgICByZXR1cm4gbV9jbGll
bnQtPml0ZW1BdEluZGV4KGkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxNyArNTMsMTcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+
JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICAgICAgCi0g
ICAgaW50IGNvdW50KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJhY2tDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGludCBmb3J3YXJkQ291bnQoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJh
Y2tDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZvcndhcmRDb3Vu
dCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4
KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRl
eChpbnQpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgSGlzdG9yeUl0ZW0qIGJhY2tJdGVt
KCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoLTEpOyB9Ci0gICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJ
dGVtKCkgeyByZXR1cm4gaXRlbUF0SW5kZXgoMCk7IH0KLSAgICBIaXN0b3J5SXRlbSogZm9yd2Fy
ZEl0ZW0oKSB7IHJldHVybiBpdGVtQXRJbmRleCgxKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEhp
c3RvcnlJdGVtPiBmb3J3YXJkSXRlbSgpOwogCiBwcml2YXRlOgogICAgIFBhZ2UmIG1fcGFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzcy
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5Qcm9jZXNzSURC
U2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUHJvdmlkZXIuaCIKQEAgLTg0LDkgKzg1LDkgQEAgY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvcjsKIGNsYXNzIEVtcHR5QmFja0ZvcndhcmRDbGllbnQgZmluYWwgOiBwdWJsaWMg
QmFja0ZvcndhcmRDbGllbnQgewogICAgIHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYp
IGZpbmFsIHsgfQogICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0KLSAg
ICBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBpdGVtQXRJbmRleChpbnQpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQorICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjM3MjA0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsNyArNDc3LDggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZUhpc3RvcgogICAgIC8vIEludmFsaWQgaGlzdG9yeSBuYXZpZ2F0aW9ucyAoc3VjaCBhcyBo
aXN0b3J5LmZvcndhcmQoKSBkdXJpbmcgYSBuZXcgbG9hZCkgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2FuY2VsbGluZyBhbnkgc2NoZWR1bGVkCiAgICAgLy8gcmVkaXJlY3RzLiBXZSBhbHNvIGF2
b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBjYW5jZWxsaW5nIHRoZSBjdXJyZW50IGxvYWQgYnkgYXZv
aWRpbmcgdGhlIHNjaGVkdWxlZCByZWRpcmVjdGlvbiBhbHRvZ2V0aGVyLgogICAgIEJhY2tGb3J3
YXJkQ29udHJvbGxlciYgYmFja0ZvcndhcmQgPSBtX2ZyYW1lLnBhZ2UoKS0+YmFja0ZvcndhcmQo
KTsKLSAgICBpZiAoc3RlcHMgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSB8fCAtc3RlcHMg
PiBiYWNrRm9yd2FyZC5iYWNrQ291bnQoKSkgeworICAgIGlmICgoc3RlcHMgPiAwICYmIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGVwcykgPiBiYWNrRm9yd2FyZC5mb3J3YXJkQ291bnQoKSkKKyAg
ICAgICAgfHwgKHN0ZXBzIDwgMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLXN0ZXBzKSA+IGJh
Y2tGb3J3YXJkLmJhY2tDb3VudCgpKSkgewogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMzApCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTEwLTE3
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QmFja0ZvcndhcmRDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1v
bmx5IGJhY2svZm9yd2FyZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVz
dGluZyk6CisKIDIwMTgtMTAtMTcgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEZsYWt5IEludGVyc2VjdGlvbk9ic2VydmVyIHdlYiBwbGF0Zm9ybSB0ZXN0cyBpbnZv
bHZpbmcgc3R5bGUgdXBkYXRlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDks
MjMgKzI0OSwyMyBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRo
b3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAgaWYgKGluZGV4
IDwgLWJhY2tMaXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPCAwICYmIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigtaW5kZXgpID4gYmFja0xpc3RDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKLSAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCisgICAgaWYgKGlu
ZGV4ID4gMCAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID4gZm9yd2FyZExpc3RDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICByZXR1cm4gbV9l
bnRyaWVzW2luZGV4ICsgKm1fY3VycmVudEluZGV4XS5wdHIoKTsKIH0KIAotaW50IFdlYkJhY2tG
b3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9jdXJyZW50SW5k
ZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAgICByZXR1cm4g
bV9wYWdlICYmIG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4IDogMDsKIH0KIAotaW50
IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewogICAgIEFTU0VS
VCghbV9jdXJyZW50SW5kZXggfHwgKm1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5o
CShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJiBlbnRyaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9lbnRyaWVzOyB9CiAKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwotICAgIGlu
dCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKIAogICAgIFJl
ZjxBUEk6OkFycmF5PiBiYWNrTGlzdCgpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBmb3J3
YXJkTGlzdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTg2LDEyICs0OTg2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGUKICAgICAgICAgaXRlbUlEID0gc3Rk
OjpudWxsb3B0OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRCYWNrTGlzdENv
dW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQmFja0xp
c3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBtX2JhY2tGb3J3YXJkTGlz
dC0+YmFja0xpc3RDb3VudCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRG
b3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkRm9yd2FyZExpc3RDb3VudCh1aW50MzJfdCYgY291bnQpCiB7CiAgICAgY291bnQgPSBt
X2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY3LDgg
KzE1NjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+Jik7Ci0gICAg
dm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpOwotICAgIHZvaWQg
YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KTsKKyAgICB2b2lkIGJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudCh1aW50MzJfdCYgY291bnQpOworICAgIHZvaWQgYmFja0Zv
cndhcmRGb3J3YXJkTGlzdENvdW50KHVpbnQzMl90JiBjb3VudCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRvIG1hbmFnZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIz
NzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjMwLDggKzIzMCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVjdCBXZWJLaXQ6OkJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCiAgICAgQmFja0ZvcndhcmRHb1RvSXRlbShzdHJ1Y3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpdGVtSUQpIC0+IChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIEJhY2tG
b3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpdGVtSW5kZXgpIC0+IChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2Fy
ZEJhY2tMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKLSAgICBCYWNrRm9yd2FyZEZvcndh
cmRMaXN0Q291bnQoKSAtPiAoaW50MzJfdCBjb3VudCkKKyAgICBCYWNrRm9yd2FyZEJhY2tMaXN0
Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpCisgICAgQmFja0ZvcndhcmRGb3J3YXJkTGlzdENv
dW50KCkgLT4gKHVpbnQzMl90IGNvdW50KQogICAgIEJhY2tGb3J3YXJkQ2xlYXIoKQogICAgIFdp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvVG9JdGVtKEgK
ICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+
bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogfQogCi1I
aXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVt
SW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVt
QXRJbmRleChpbnQgaXRlbUluZGV4KQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEyNSwyNCArMTI1LDI0IEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXQKICAgICByZXR1cm4gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KCpp
dGVtSUQpOwogfQogCi1pbnQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAordW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQo
KSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlu
dCBiYWNrTGlzdENvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKIH0KIAotaW50IFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKK3Vuc2lnbmVkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCA9IDA7CisgICAg
dW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENv
dW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Ci0gICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVycmlk
ZTsKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5z
aWduZWQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbG9z
ZSgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM3MjA1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NjYsNyArMTY2Niw3
IEBAIFN0cmluZyBXZWJQYWdlOjpkdW1wSGlzdG9yeUZvclRlc3RpbmcoY28KICAgICBpbnQgYmVn
aW4gPSAtbGlzdC5iYWNrQ291bnQoKTsKICAgICBpZiAobGlzdC5pdGVtQXRJbmRleChiZWdpbikt
PnVybCgpID09IGJsYW5rVVJMKCkpCiAgICAgICAgICsrYmVnaW47Ci0gICAgZm9yIChpbnQgaSA9
IGJlZ2luOyBpIDw9IGxpc3QuZm9yd2FyZENvdW50KCk7ICsraSkKKyAgICBmb3IgKGludCBpID0g
YmVnaW47IGkgPD0gc3RhdGljX2Nhc3Q8aW50PihsaXN0LmZvcndhcmRDb3VudCgpKTsgKytpKQog
ICAgICAgICBkdW1wSGlzdG9yeUl0ZW0oKmxpc3QuaXRlbUF0SW5kZXgoaSksIDgsICFpLCBidWls
ZGVyLCBkaXJlY3RvcnkpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzcyMDQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBA
QAorMjAxOC0xMC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEJhY2tGb3J3YXJkQ2xpZW50IG5lZWRzIHRvIGJlIGFibGUgdG8gc3VwcG9y
dCBVSVByb2Nlc3Mtb25seSBiYWNrL2ZvcndhcmQgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaDoK
KyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKEJhY2tGb3J3
YXJkTGlzdDo6YmFja0l0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmZvcndhcmRMaXN0Q291bnQgY29uc3QpOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0
OjppdGVtQXRJbmRleCk6CisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNrSXRlbV0pOgorICAgICAgICAoLVtX
ZWJCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKToKKyAgICAgICAgKC1bV2ViQmFja0Zvcndh
cmRMaXN0IGZvcndhcmRJdGVtXSk6CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpdGVt
QXRJbmRleDpdKToKKwogMjAxOC0xMC0xNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIDxtZXRhIG5hbWU9InN1cHBvcnRlZC1jb2xvci1zY2hlbWVz
Ij4gdG8gY29udHJvbCB3aGF0IGNvbG9yIHNjaGVtZXMgdGhlIHBhZ2Ugc3VwcG9ydHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
aAkocmV2aXNpb24gMjM3MjA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1Ymxp
YzogCiAgICAgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtJikgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBiYWNrSXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwot
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4gYmFja0l0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGN1cnJlbnRJdGVtKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBmb3J3
YXJkSXRlbSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgo
aW50KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBWZWN0b3I8
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPj4mKTsKICAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExp
bWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+Jik7CkBAIC01OSw4ICs1
OSw4IEBAIHB1YmxpYzogCiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5h
YmxlZCgpOwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNv
bnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOwogCiAgICAgdm9pZCBjbG9zZSgpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CYWNrRm9yd2Fy
ZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
MjQgKzEwNiwyNCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0CiAg
ICAgICAgIG1fY3VycmVudCA9IGluZGV4OwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRM
aXN0OjpiYWNrSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6YmFj
a0l0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0
ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsK
KyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5jb3B5UmVmKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJl
bnRJdGVtKCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRl
bSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCi0gICAgICAg
IHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQorUmVmUHRyPEhpc3RvcnlJ
dGVtPiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKIHsKICAgICBpZiAobV9lbnRyaWVz
LnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0
dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnQgKyAxXS5jb3B5UmVmKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTE4OSwyNiArMTg5LDI2IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJv
b2wgZW4KICAgICB9CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBj
b25zdAordW5zaWduZWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdENvdW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBtX2N1cnJl
bnQ7CiB9CiAKLWludCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAor
dW5zaWduZWQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZW50cmllcy5zaXplKCkpIC0gKG1fY3VycmVudCArIDEpOworICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fZW50cmllcy5zaXplKCkgLSBt
X2N1cnJlbnQgLSAxOwogfQogCi1IaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJ
bmRleChpbnQgaW5kZXgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3YXJkTGlzdDo6aXRl
bUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNoZWNrcyB3aXRob3V0IGRv
aW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCiAgICAgaWYgKGluZGV4IDwgLXN0
YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQorICAgIGlmIChpbmRleCA+IHN0
YXRpY19jYXN0PGludD4oZm9yd2FyZExpc3RDb3VudCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIAotICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0
cigpOworCisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uY29weVJlZigp
OwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDIzNzIw
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsMTcgKzIyNSwxNyBAQCAtICh2b2lkKWdvVG9JdGVt
OihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KIAogLSAoV2ViSGlzdG9yeUl0ZW0gKiliYWNrSXRlbQog
ewotICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5iYWNrSXRlbSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+YmFja0l0ZW0oKS5nZXQoKSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKFdlYkhpc3RvcnlJdGVtICopY3VycmVudEl0
ZW0KIHsKLSAgICByZXR1cm4gW1traXQoY29yZShzZWxmKS0+Y3VycmVudEl0ZW0oKSkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmN1cnJlbnRJdGVt
KCkuZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChXZWJIaXN0b3J5SXRlbSAq
KWZvcndhcmRJdGVtCiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUoc2VsZiktPmZvcndhcmRJdGVt
KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW2tpdChjb3JlKHNlbGYpLT5m
b3J3YXJkSXRlbSgpLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogc3RhdGljIE5T
QXJyYXkqIHZlY3RvclRvTlNBcnJheShWZWN0b3I8UmVmPEhpc3RvcnlJdGVtPj4mIGxpc3QpCkBA
IC0zNTcsNyArMzU3LDcgQEAgLSAoaW50KWZvcndhcmRMaXN0Q291bnQKIAogLSAoV2ViSGlzdG9y
eUl0ZW0gKilpdGVtQXRJbmRleDooaW50KWluZGV4CiB7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmUo
c2VsZiktPml0ZW1BdEluZGV4KGluZGV4KSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIFtba2l0KGNvcmUoc2VsZiktPml0ZW1BdEluZGV4KGluZGV4KS5nZXQoKSkgcmV0YWluXSBh
dXRvcmVsZWFzZV07CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzNzIzMSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEwLTE3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja0ZvcndhcmRDbGll
bnQgbmVlZHMgdG8gYmUgYWJsZSB0byBzdXBwb3J0IFVJUHJvY2Vzcy1vbmx5IGJhY2svZm9yd2Fy
ZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRl
bSk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKToKKyAgICAgICAgKEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0pOgorICAgICAgICAoQmFja0ZvcndhcmRMaXN0Ojpi
YWNrTGlzdENvdW50IGNvbnN0KToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExp
c3RDb3VudCBjb25zdCk6CisgICAgICAgIChCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KToK
KyAgICAgICAgKiBCYWNrRm9yd2FyZExpc3QuaDoKKwogMjAxOC0xMC0xNiAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8g
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMzcxMTIuCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9CYWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMywyNCArMTEzLDI0IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShIaXN0
b3J5SXQKICAgICB9CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVt
KCkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCiB7CiAg
ICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLnB0cigpOworICAgICAgICByZXR1
cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQorUmVm
UHRyPEhpc3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKIHsKICAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dF0uY29weVJlZigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogQmFj
a0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCitSZWZQdHI8SGlzdG9yeUl0ZW0+IEJhY2tGb3J3
YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQogewogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1f
Y3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudCArIDFdLnB0cigpOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVu
dCArIDFdLmNvcHlSZWYoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTk2LDI2ICsx
OTYsMjYgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbgogICAgIH0K
IH0KIAotaW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25l
ZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiBt
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IG1fY3VycmVudDsKIH0KIAotaW50
IEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0Cit1bnNpZ25lZCBCYWNr
Rm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1
cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IChpbnQpbV9lbnRyaWVzLnNpemUoKSAt
IChtX2N1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiBtX2VudHJpZXMuc2l6ZSgpIC0gbV9jdXJyZW50IC0gMTsKIH0KIAotSGlzdG9y
eUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQorUmVmUHRyPEhp
c3RvcnlJdGVtPiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAg
ICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lk
IG92ZXJmbG93LgogICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGlmIChpbmRleCA+IGZvcndhcmRM
aXN0Q291bnQoKSkKKyAgICBpZiAoaW5kZXggPiBzdGF0aWNfY2FzdDxpbnQ+KGZvcndhcmRMaXN0
Q291bnQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKLSAgICByZXR1cm4g
bV9lbnRyaWVzW2luZGV4ICsgbV9jdXJyZW50XS5wdHIoKTsKKworICAgIHJldHVybiBtX2VudHJp
ZXNbaW5kZXggKyBtX2N1cnJlbnRdLmNvcHlSZWYoKTsKIH0KIAogVmVjdG9yPFJlZjxIaXN0b3J5
SXRlbT4+JiBCYWNrRm9yd2FyZExpc3Q6OmVudHJpZXMoKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDIzNzIwNCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0JhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwx
MCArNDQsMTAgQEAgcHVibGljOiAKICAgICB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZvaWQgZ29U
b0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGN1cnJlbnRJdGVtKCk7Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7
Ci0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBiYWNrSXRlbSgpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpIaXN0b3J5SXRlbT4gY3VycmVudEl0ZW0oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IGZvcndhcmRJdGVtKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiYWNrTGlzdFdpdGhM
aW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CiAgICAgdm9pZCBmb3J3YXJkTGlzdFdpdGhM
aW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzog
CiAgICAgdm9pZCBzZXRDYXBhY2l0eShpbnQpOwogICAgIGJvb2wgZW5hYmxlZCgpOwogICAgIHZv
aWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0IGZpbmFs
OwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3QgZmluYWw7CisgICAgdW5zaWduZWQg
YmFja0xpc3RDb3VudCgpIGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291
bnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNvbnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopOwogCiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiAyMzcyMDQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsMTIgKzE1NiwxMiBAQCBIUkVTVUxUIFdlYkJhY2tGb3J3YXJkTGlz
dDo6YmFja0l0ZW0oX0NPCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogICAgICppdGVtID0gbnVsbHB0cjsKLSAgICBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSBt
X2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKTsKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gbV9i
YWNrRm9yd2FyZExpc3QtPmJhY2tJdGVtKCk7CiAKICAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKml0ZW0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRl
SW5zdGFuY2UoaGlzdG9yeUl0ZW0pOworICAgICppdGVtID0gV2ViSGlzdG9yeUl0ZW06OmNyZWF0
ZUluc3RhbmNlKGhpc3RvcnlJdGVtLmdldCgpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
MTcxLDExICsxNzEsMTEgQEAgSFJFU1VMVCBXZWJCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVt
KAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICppdGVtID0gbnVsbHB0cjsKIAotICAg
IEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpOworICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKTsKICAgICBpZiAoIWhpc3RvcnlJdGVtKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgKml0ZW0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW0pOwor
ICAgICppdGVtID0gV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtLmdl
dCgpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTg1LDExICsxODUsMTEgQEAgSFJFU1VM
VCBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKAogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogICAgICppdGVtID0gbnVsbHB0cjsKIAotICAgIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRl
bSA9IG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkSXRlbSgpOworICAgIGF1dG8gaGlzdG9yeUl0
ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZEl0ZW0oKTsKICAgICBpZiAoIWhpc3RvcnlJ
dGVtKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKml0ZW0gPSBXZWJIaXN0b3J5SXRl
bTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW0pOworICAgICppdGVtID0gV2ViSGlzdG9yeUl0
ZW06OmNyZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtLmdldCgpKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtMjgzLDExICsyODMsMTEgQEAgSFJFU1VMVCBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0
ZW1BdEluZGV4KAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICppdGVtID0gbnVsbHB0
cjsKIAotICAgIEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5p
dGVtQXRJbmRleChpbmRleCk7CisgICAgYXV0byBoaXN0b3J5SXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFoaXN0b3J5SXRlbSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKICAKLSAgICAqaXRlbSA9IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0
YW5jZShoaXN0b3J5SXRlbSk7CisgICAgKml0ZW0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5z
dGFuY2UoaGlzdG9yeUl0ZW0uZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCg==
</data>
<flag name="review"
          id="369886"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>