<?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>134307</bug_id>
          
          <creation_ts>2014-06-25 13:40:31 -0700</creation_ts>
          <short_desc>Structure bit fields should have a consistent format</short_desc>
          <delta_ts>2014-06-25 14:18:57 -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>JavaScriptCore</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018398</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-25 13:40:31 -0700</bug_when>
    <thetext>Currently we use C-style bit fields for a number of member variables in Structure to save space. This makes it difficult to load these fields in the JIT. We should instead use our own bitfield format to make it easy to load and test these variables in JIT code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018401</commentid>
    <comment_count>1</comment_count>
      <attachid>233834</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-25 13:43:00 -0700</bug_when>
    <thetext>Created attachment 233834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018406</commentid>
    <comment_count>2</comment_count>
      <attachid>233834</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-25 14:05:11 -0700</bug_when>
    <thetext>Comment on attachment 233834
Patch

Rejecting attachment 233834 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 233834, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ded at 479 (offset 8 lines).
Hunk #11 succeeded at 498 (offset 8 lines).
Hunk #12 FAILED at 549.
4 out of 12 hunks FAILED -- saving rejects to file Source/JavaScriptCore/runtime/Structure.h.rej
patching file Source/JavaScriptCore/runtime/StructureInlines.h
Hunk #1 succeeded at 154 (offset 19 lines).
Hunk #2 succeeded at 247 (offset 19 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Filip Pizlo&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5064153534300160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018408</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-25 14:18:57 -0700</bug_when>
    <thetext>Landed on the branch in http://trac.webkit.org/changeset/170436</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233834</attachid>
            <date>2014-06-25 13:43:00 -0700</date>
            <delta_ts>2014-06-25 14:05:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134307-20140625134239.patch</filename>
            <type>text/plain</type>
            <size>30937</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNDMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE0LTA2LTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RydWN0dXJlIGJpdCBmaWVsZHMgc2hvdWxkIGhhdmUgYSBjb25zaXN0ZW50IGZv
cm1hdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0
MzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5IHdlIHVzZSBDLXN0eWxlIGJpdCBmaWVsZHMgZm9yIGEgbnVtYmVyIG9mIG1lbWJlciB2
YXJpYWJsZXMgaW4gU3RydWN0dXJlIHRvIHNhdmUgc3BhY2UuIAorICAgICAgICBUaGlzIG1ha2Vz
IGl0IGRpZmZpY3VsdCB0byBsb2FkIHRoZXNlIGZpZWxkcyBpbiB0aGUgSklULiBXZSBzaG91bGQg
aW5zdGVhZCB1c2Ugb3VyIG93biBiaXRmaWVsZCAKKyAgICAgICAgZm9ybWF0IHRvIG1ha2UgaXQg
ZWFzeSB0byBsb2FkIGFuZCB0ZXN0IHRoZXNlIHZhcmlhYmxlcyBpbiBKSVQgY29kZS4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyZWlmeVN0
YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNvbnRhaW5zKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpnZXQpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjp0YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6cGluKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphbGxvY2F0ZVJhcmVEYXRhKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpjbG9uZVJhcmVEYXRhRnJvbSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpw
dXRTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc0V4dGVu
c2libGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRGljdGlvbmFyeSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OnByZXZpb3VzSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEhh
c0dldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVjayk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6Om9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNl
dFByZXZpb3VzSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNsZWFyUHJldmlvdXNJRCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJldmlvdXMpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpkaWRUcmFuc2l0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNSZWFkT25seU9y
R2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpzZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RhdGljRnVuY3Rpb25zUmVpZmllZCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0U3RhdGljRnVuY3Rpb25zUmVp
ZmllZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25DYWNoZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZW51bWVyYXRpb25DYWNoZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSk6CisKIDIwMTQtMDYtMjQgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtmdGxvcHRdIFJlbmFtZWQgRGVidWdnZXJBY3Rp
dmF0aW9uIHRvIERlYnVnZ2VyU2NvcGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMzksNyArMTIz
OSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IKICAgICBpZiAo
YXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVh
ZE9ubHlQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90
byk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3Rv
Q2hlY2socHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7
CiB9CiAKIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQgSlNP
YmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKICAgICAvLyBJZiB0aGlzIG9iamVjdCdz
IENsYXNzSW5mbyBoYXMgbm8gc3RhdGljIHByb3BlcnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlm
eSEKICAgICAvLyBXZSBjYW4gc2FmZWx5IHNldCB0aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5z
aXZlIGNoZWNrIGFnYWluIGluIHRoZSBmdXR1cmUuCiAgICAgaWYgKCFjbGFzc0luZm8oKS0+aGFz
U3RhdGljUHJvcGVydGllcygpKSB7Ci0gICAgICAgIHN0cnVjdHVyZSh2bSktPnNldFN0YXRpY0Z1
bmN0aW9uc1JlaWZpZWQoKTsKKyAgICAgICAgc3RydWN0dXJlKHZtKS0+c2V0U3RhdGljRnVuY3Rp
b25zUmVpZmllZCh0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYzNSw3ICsx
NjM1LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgc3RydWN0dXJlKHZtKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmll
ZCgpOworICAgIHN0cnVjdHVyZSh2bSktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQodHJ1ZSk7
CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHJldmlzaW9uIDE3MDQzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNvbnRhaW5zKAogewogICAgIGlmIChpc1VzaW5nU2lu
Z2xlU2xvdCgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHNpbmdsZVRyYW5z
aXRpb24oKTsKLSAgICAgICAgcmV0dXJuIHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV9uYW1l
SW5QcmV2aW91cyA9PSByZXAgJiYgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA9
PSBhdHRyaWJ1dGVzOworICAgICAgICByZXR1cm4gdHJhbnNpdGlvbiAmJiB0cmFuc2l0aW9uLT5t
X25hbWVJblByZXZpb3VzID09IHJlcCAmJiB0cmFuc2l0aW9uLT5hdHRyaWJ1dGVzSW5QcmV2aW91
cygpID09IGF0dHJpYnV0ZXM7CiAgICAgfQogICAgIHJldHVybiBtYXAoKS0+Z2V0KHN0ZDo6bWFr
ZV9wYWlyKHJlcCwgYXR0cmlidXRlcykpOwogfQpAQCAtODAsNyArODAsNyBAQCBpbmxpbmUgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFiCiB7CiAgICAgaWYgKGlzVXNpbmdTaW5nbGVT
bG90KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlv
bigpOwotICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV9uYW1lSW5Q
cmV2aW91cyA9PSByZXAgJiYgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA9PSBh
dHRyaWJ1dGVzKSA/IHRyYW5zaXRpb24gOiAwOworICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24g
JiYgdHJhbnNpdGlvbi0+bV9uYW1lSW5QcmV2aW91cyA9PSByZXAgJiYgdHJhbnNpdGlvbi0+YXR0
cmlidXRlc0luUHJldmlvdXMoKSA9PSBhdHRyaWJ1dGVzKSA/IHRyYW5zaXRpb24gOiAwOwogICAg
IH0KICAgICByZXR1cm4gbWFwKCktPmdldChzdGQ6Om1ha2VfcGFpcihyZXAsIGF0dHJpYnV0ZXMp
KTsKIH0KQEAgLTEwNyw3ICsxMDcsNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkCiAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgdGhlIFNUTCBoYXZlIGFuIHN0ZDo6
bWFrZV9wYWlyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgcnZhbHVlIHJlZmVyZW5jZXMuCiAgICAgLy8g
V2hlbiBlaXRoZXIgb2YgdGhlIHBhcmFtZXRlcnMgYXJlIGJpdGZpZWxkcywgdGhlIEMrKyBjb21w
aWxlciB3aWxsIHRyeSB0byBiaW5kIHRoZW0gYXMgbHZhbHVlcywgd2hpY2ggaXMgaW52YWxpZC4g
VG8gd29yayBhcm91bmQgdGhpcywgdXNlIHVuYXJ5ICIrIiB0byBtYWtlIHRoZSBwYXJhbWV0ZXIg
YW4gcnZhbHVlLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTkyNjEgZm9yIG1vcmUgZGV0YWlscwotICAgIG1hcCgpLT5zZXQoc3RkOjptYWtlX3Bh
aXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCArc3RydWN0dXJlLT5tX2F0dHJp
YnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKKyAgICBtYXAoKS0+c2V0KHN0ZDo6bWFrZV9w
YWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgK3N0cnVjdHVyZS0+YXR0cmli
dXRlc0luUHJldmlvdXMoKSksIHN0cnVjdHVyZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1w
U3RhdGlzdGljcygpCkBAIC0xNjUsMjEgKzE2NSwyMyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0
Y2hlZCkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAgICAgLCBtX2lubGluZUNhcGFj
aXR5KGlubGluZUNhcGFjaXR5KQotICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFy
eUtpbmQpCi0gICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKLSAgICAsIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhjbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9u
bHlQcm9wZXJ0aWVzKHZtKSkKLSAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90byhjbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQ
cm9wZXJ0aWVzKHZtKSkKLSAgICAsIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoZmFsc2Up
Ci0gICAgLCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKDApCi0gICAgLCBtX3NwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCgwKQotICAgICwgbV9wcmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSkKLSAgICAs
IG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKLSAgICAsIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKGZh
bHNlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKKyAgICAsIG1fYml0RmllbGQoMCkKIHsK
KyAgICBzZXREaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpOworICAgIHNldElzUGlu
bmVkUHJvcGVydHlUYWJsZShmYWxzZSk7CisgICAgc2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cyhjbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSk7Cisg
ICAgc2V0SGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhj
bGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSk7CisgICAg
c2V0SGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoZmFsc2UpOworICAgIHNldEF0dHJpYnV0ZXNJ
blByZXZpb3VzKDApOworICAgIHNldFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCgwKTsKKyAg
ICBzZXRQcmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSk7CisgICAgc2V0RGlkVHJhbnNpdGlvbihmYWxz
ZSk7CisgICAgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZChmYWxzZSk7CisgICAgc2V0SGFzUmFy
ZURhdGEoZmFsc2UpOworCiAgICAgQVNTRVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmpl
Y3Q6Om1heElubGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxQcm9wZXJ0
eU9mZnNldD4oaW5saW5lQ2FwYWNpdHkpIDwgZmlyc3RPdXRPZkxpbmVPZmZzZXQpOwotICAgIEFT
U0VSVCghbV9oYXNSYXJlRGF0YSk7CisgICAgQVNTRVJUKCFoYXNSYXJlRGF0YSgpKTsKICAgICBB
U1NFUlQoaGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygp
IHx8ICFtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0p
KTsKICAgICBBU1NFUlQoaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHx8ICFtX2NsYXNzSW5m
by0+aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKTsKIH0KQEAgLTE5Mywx
OCArMTk1LDIwIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKICAgICAsIG1fdHJhbnNp
dGlvbldhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNl
dCkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoMCkKLSAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9u
ZURpY3Rpb25hcnlLaW5kKQotICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCi0g
ICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMobV9jbGFzc0luZm8tPmhhc1N0YXRpY1Nl
dHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSkKLSAgICAsIG1faGFzUmVhZE9ubHlPckdldHRl
clNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0
dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKQotICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllcyhmYWxzZSkKLSAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKLSAgICAsIG1f
c3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KDApCi0gICAgLCBtX3ByZXZlbnRFeHRlbnNpb25z
KGZhbHNlKQotICAgICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQotICAgICwgbV9zdGF0aWNGdW5j
dGlvblJlaWZpZWQoZmFsc2UpCi0gICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQorICAgICwgbV9i
aXRGaWVsZCgwKQogeworICAgIHNldERpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCk7
CisgICAgc2V0SXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKTsKKyAgICBzZXRIYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKG1fY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJv
cGVydGllcyh2bSkpOworICAgIHNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG8obV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9w
ZXJ0aWVzKHZtKSk7CisgICAgc2V0SGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoZmFsc2UpOwor
ICAgIHNldEF0dHJpYnV0ZXNJblByZXZpb3VzKDApOworICAgIHNldFNwZWNpZmljRnVuY3Rpb25U
aHJhc2hDb3VudCgwKTsKKyAgICBzZXRQcmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSk7CisgICAgc2V0
RGlkVHJhbnNpdGlvbihmYWxzZSk7CisgICAgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZChmYWxz
ZSk7CisgICAgc2V0SGFzUmFyZURhdGEoZmFsc2UpOworCiAgICAgVHlwZUluZm8gdHlwZUluZm8g
PSBUeXBlSW5mbyhDZWxsVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlz
SW1tb3J0YWwpOwogICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYih2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpLCAwLCB0eXBlSW5mbyk7CiAgICAgbV9vdXRPZkxp
bmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKTsKQEAgLTIyMCwyNCAr
MjI0LDI2IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAs
IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQogICAgICwgbV9vZmZzZXQoaW52
YWxpZE9mZnNldCkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkocHJldmlvdXMtPm1faW5saW5lQ2Fw
YWNpdHkpCi0gICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5k
KQotICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCi0gICAgLCBtX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykK
LSAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90
byhwcmV2aW91cy0+bV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGlu
Z1Byb3RvKQotICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyhwcmV2aW91cy0+bV9o
YXNOb25FbnVtZXJhYmxlUHJvcGVydGllcykKLSAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMo
MCkKLSAgICAsIG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KHByZXZpb3VzLT5tX3NwZWNp
ZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKLSAgICAsIG1fcHJldmVudEV4dGVuc2lvbnMocHJldmlv
dXMtPm1fcHJldmVudEV4dGVuc2lvbnMpCi0gICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1ZSkKLSAg
ICAsIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0aW9uUmVp
ZmllZCkKLSAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCisgICAgLCBtX2JpdEZpZWxkKDApCiB7
CisgICAgc2V0RGljdGlvbmFyeUtpbmQocHJldmlvdXMtPmRpY3Rpb25hcnlLaW5kKCkpOworICAg
IHNldElzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSk7CisgICAgc2V0SGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcyhwcmV2aW91cy0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKKyAgICBz
ZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKHByZXZp
b3VzLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkp
OworICAgIHNldEhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHByZXZpb3VzLT5oYXNOb25FbnVt
ZXJhYmxlUHJvcGVydGllcygpKTsKKyAgICBzZXRBdHRyaWJ1dGVzSW5QcmV2aW91cygwKTsKKyAg
ICBzZXRTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQocHJldmlvdXMtPnNwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCgpKTsKKyAgICBzZXRQcmV2ZW50RXh0ZW5zaW9ucyhwcmV2aW91cy0+cHJl
dmVudEV4dGVuc2lvbnMoKSk7CisgICAgc2V0RGlkVHJhbnNpdGlvbih0cnVlKTsKKyAgICBzZXRT
dGF0aWNGdW5jdGlvbnNSZWlmaWVkKHByZXZpb3VzLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkp
OworICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKKwogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0g
cHJldmlvdXMtPnR5cGVJbmZvKCk7CiAgICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcyksIHByZXZpb3VzLT5pbmRleGlu
Z1R5cGVJbmNsdWRpbmdIaXN0b3J5KCksIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVG
bGFncyA9IHR5cGVJbmZvLm91dE9mTGluZVR5cGVGbGFncygpOwogCiAgICAgQVNTRVJUKCFwcmV2
aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwotICAgIGlmIChwcmV2aW91
cy0+bV9oYXNSYXJlRGF0YSAmJiBwcmV2aW91cy0+cmFyZURhdGEoKS0+bmVlZHNDbG9uaW5nKCkp
CisgICAgaWYgKHByZXZpb3VzLT5oYXNSYXJlRGF0YSgpICYmIHByZXZpb3VzLT5yYXJlRGF0YSgp
LT5uZWVkc0Nsb25pbmcoKSkKICAgICAgICAgY2xvbmVSYXJlRGF0YUZyb20odm0sIHByZXZpb3Vz
KTsKICAgICBlbHNlIGlmIChwcmV2aW91cy0+cHJldmlvdXNJRCgpKQogICAgICAgICBtX3ByZXZp
b3VzT3JSYXJlRGF0YS5zZXQodm0sIHRoaXMsIHByZXZpb3VzLT5wcmV2aW91c0lEKCkpOwpAQCAt
MzEzLDcgKzMxOSw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKFYK
ICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPm1fbmFtZUluUHJldmlvdXMpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUHJv
cGVydHlNYXBFbnRyeSBlbnRyeSh2bSwgdGhpcywgc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3Vz
LmdldCgpLCBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJl
dmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cy5nZXQoKSk7CisgICAg
ICAgIFByb3BlcnR5TWFwRW50cnkgZW50cnkodm0sIHRoaXMsIHN0cnVjdHVyZS0+bV9uYW1lSW5Q
cmV2aW91cy5nZXQoKSwgc3RydWN0dXJlLT5tX29mZnNldCwgc3RydWN0dXJlLT5hdHRyaWJ1dGVz
SW5QcmV2aW91cygpLCBzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCkp
OwogICAgICAgICBwcm9wZXJ0eVRhYmxlKCktPmFkZChlbnRyeSwgbV9vZmZzZXQsIFByb3BlcnR5
VGFibGU6OlByb3BlcnR5T2Zmc2V0TXVzdE5vdENoYW5nZSk7CiAgICAgfQogICAgIApAQCAtNDIw
LDcgKzQyNiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICBBU1NFUlQoIVN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSwgb2Zmc2V0KSk7CiAgICAgCi0gICAg
aWYgKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPT0gbWF4U3BlY2lm
aWNGdW5jdGlvblRocmFzaENvdW50KQorICAgIGlmIChzdHJ1Y3R1cmUtPnNwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCgpID09IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKICAgICAg
ICAgc3BlY2lmaWNWYWx1ZSA9IDA7CiAKICAgICBpbnQgbWF4VHJhbnNpdGlvbkxlbmd0aDsKQEAg
LTQ0MCw3ICs0NDYsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
CiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwodm0s
IHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CiAg
ICAgdHJhbnNpdGlvbi0+c2V0UHJldmlvdXNJRCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlKTsK
ICAgICB0cmFuc2l0aW9uLT5tX25hbWVJblByZXZpb3VzID0gcHJvcGVydHlOYW1lLnVpZCgpOwot
ICAgIHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOworICAg
IHRyYW5zaXRpb24tPnNldEF0dHJpYnV0ZXNJblByZXZpb3VzKGF0dHJpYnV0ZXMpOwogICAgIHRy
YW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuc2V0TWF5QmVOdWxsKHZtLCB0cmFu
c2l0aW9uLCBzcGVjaWZpY1ZhbHVlKTsKICAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCku
c2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlm
UGlubmVkKHZtLCB0cmFuc2l0aW9uKSk7CiAgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1
Y3R1cmUtPm1fb2Zmc2V0OwpAQCAtNDg3LDEwICs0OTMsMTAgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OmNoYW5nZVByb3RvdHlwZVRyYQogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5
RnVuY3Rpb25UcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
TmFtZSByZXBsYWNlRnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZp
Y0Z1bmN0aW9uVGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwor
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCgpIDwgbWF4
U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KTsKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24g
PSBjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiAKLSAgICArK3RyYW5zaXRpb24tPm1fc3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50OworICAgIHRyYW5zaXRpb24tPnNldFNwZWNpZmljRnVuY3Rpb25U
aHJhc2hDb3VudCh0cmFuc2l0aW9uLT5zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQoKSArIDEp
OwogCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIHN0cnVjdHVyZS0+bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsKQEAgLTQ5OCw3ICs1MDQs
NyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UCiAgICAgdHJhbnNp
dGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwogICAgIHRyYW5zaXRpb24tPnBp
bigpOwogCi0gICAgaWYgKHRyYW5zaXRpb24tPm1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50
ID09IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKKyAgICBpZiAodHJhbnNpdGlvbi0+
c3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KCkgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50KQogICAgICAgICB0cmFuc2l0aW9uLT5kZXNwZWNpZnlBbGxGdW5jdGlvbnModm0pOwog
ICAgIGVsc2UgewogICAgICAgICBib29sIHJlbW92ZWQgPSB0cmFuc2l0aW9uLT5kZXNwZWNpZnlG
dW5jdGlvbih2bSwgcmVwbGFjZUZ1bmN0aW9uKTsKQEAgLTU0Miw3ICs1NDgsNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpCiAgICAgc3RydWN0dXJlLT5tYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnkodm0sIGRlZmVyR0MpOwogICAgIHRyYW5zaXRpb24t
PnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKHZtLCB0cmFuc2l0aW9uKSk7CiAgICAgdHJhbnNpdGlvbi0+bV9v
ZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwotICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFy
eUtpbmQgPSBraW5kOworICAgIHRyYW5zaXRpb24tPnNldERpY3Rpb25hcnlLaW5kKGtpbmQpOwog
ICAgIHRyYW5zaXRpb24tPnBpbigpOwogCiAgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25z
aXN0ZW5jeSgpOwpAQCAtNTgzLDcgKzU4OSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmcmVl
emVUcmFuc2l0aW9uKFYKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRy
YW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS0+YmVnaW4oKTsKICAgICAgICAgUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLT5lbmQoKTsKICAg
ICAgICAgaWYgKGl0ZXIgIT0gZW5kKQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+bV9oYXNSZWFk
T25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHRyYW5zaXRpb24tPnNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG8odHJ1ZSk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVy
KQogICAgICAgICAgICAgaXRlci0+YXR0cmlidXRlcyB8PSBpdGVyLT5hdHRyaWJ1dGVzICYgQWNj
ZXNzb3IgPyBEb250RGVsZXRlIDogKERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQpAQCAt
NjA1LDcgKzYxMSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1QK
ICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSh2bSwgZGVm
ZXJHQyk7CiAgICAgdHJhbnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdHJhbnNpdGlv
biwgc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcodm0sIHRyYW5zaXRpb24p
KTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9vZmZzZXQ7Ci0gICAg
dHJhbnNpdGlvbi0+bV9wcmV2ZW50RXh0ZW5zaW9ucyA9IHRydWU7CisgICAgdHJhbnNpdGlvbi0+
c2V0UHJldmVudEV4dGVuc2lvbnModHJ1ZSk7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7CiAKICAg
ICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CkBAIC02MTcsNyArNjIzLDcg
QEAgUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjp0YWtlUHJvcGVydHlUYQogICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnlG
b3JQaW5uaW5nKHZtLCBkZWZlckdDKTsKICAgICAKLSAgICBpZiAobV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUpCisgICAgaWYgKGlzUGlubmVkUHJvcGVydHlUYWJsZSgpKQogICAgICAgICByZXR1cm4g
cHJvcGVydHlUYWJsZSgpLT5jb3B5KHZtLCBvd25lciwgcHJvcGVydHlUYWJsZSgpLT5zaXplKCkg
KyAxKTsKICAgICAKICAgICAvLyBIb2xkIHRoZSBsb2NrIHdoaWxlIHN0ZWFsaW5nIHRoZSB0YWJs
ZSAtIHNvIHRoYXQgZ2V0Q29uY3VycmVudGx5KCkgb24gYW5vdGhlciB0aHJlYWQKQEAgLTY0NSwx
NCArNjUxLDE0IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXQKICAg
ICB9CiAgICAgCiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0
dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQoMCwgYXR0cmlidXRlcykpIHsKLSAgICAgICAgQVNT
RVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA9PSBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+YXR0cmlidXRlc0luUHJl
dmlvdXMoKSA9PSBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlv
bi0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpID09IGluZGV4aW5nVHlwZSk7CiAgICAg
ICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQogICAgIAogICAgIFN0cnVjdHVy
ZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKICAgICB0cmFuc2l0aW9uLT5z
ZXRQcmV2aW91c0lEKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUpOwotICAgIHRyYW5zaXRpb24t
Pm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOworICAgIHRyYW5zaXRpb24tPnNl
dEF0dHJpYnV0ZXNJblByZXZpb3VzKGF0dHJpYnV0ZXMpOwogICAgIHRyYW5zaXRpb24tPm1fYmxv
Yi5zZXRJbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKTsKICAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0
eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPnRha2VQcm9wZXJ0eVRhYmxl
T3JDbG9uZUlmUGlubmVkKHZtLCB0cmFuc2l0aW9uKSk7CiAgICAgdHJhbnNpdGlvbi0+bV9vZmZz
ZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwpAQCAtNzM1LDcgKzc0MSw3IEBAIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAgICAgICAgY2hlY2tPZmZzZXRDb25zaXN0
ZW5jeSgpOwogICAgIH0KIAotICAgIG1fZGljdGlvbmFyeUtpbmQgPSBOb25lRGljdGlvbmFyeUtp
bmQ7CisgICAgc2V0RGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKTsKIAogICAgIC8v
IElmIHRoZSBvYmplY3QgaGFkIGEgQnV0dGVyZmx5IGJ1dCBhZnRlciBmbGF0dGVuaW5nL2NvbXBh
Y3Rpbmcgd2Ugbm8gbG9uZ2VyIGhhdmUgbmVlZCBvZiBpdCwKICAgICAvLyB3ZSBuZWVkIHRvIHpl
cm8gaXQgb3V0IGJlY2F1c2UgdGhlIGNvbGxlY3RvciBkZXBlbmRzIG9uIHRoZSBTdHJ1Y3R1cmUg
dG8ga25vdyB0aGUgc2l6ZSBmb3IgY29weWluZy4KQEAgLTc0OSw3ICs3NTUsNyBAQCBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0CiB7CiAgICAgQVNTRVJUKCFlbnVtZXJh
dGlvbkNhY2hlKCkpOwogCi0gICAgaWYgKG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID09
IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKKyAgICBpZiAoc3BlY2lmaWNGdW5jdGlv
blRocmFzaENvdW50KCkgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQogICAgICAg
ICBzcGVjaWZpY1ZhbHVlID0gMDsKIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKQEAg
LTc3NSwyOCArNzgxLDI4IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHkKIHZvaWQgU3RydWN0dXJlOjpwaW4oKQogewogICAgIEFTU0VSVChwcm9wZXJ0eVRhYmxlKCkp
OwotICAgIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKKyAgICBzZXRJc1Bpbm5lZFBy
b3BlcnR5VGFibGUodHJ1ZSk7CiAgICAgY2xlYXJQcmV2aW91c0lEKCk7CiAgICAgbV9uYW1lSW5Q
cmV2aW91cy5jbGVhcigpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6YWxsb2NhdGVSYXJlRGF0YShW
TSYgdm0pCiB7Ci0gICAgQVNTRVJUKCFtX2hhc1JhcmVEYXRhKTsKKyAgICBBU1NFUlQoIWhhc1Jh
cmVEYXRhKCkpOwogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9IFN0cnVjdHVyZVJh
cmVEYXRhOjpjcmVhdGUodm0sIHByZXZpb3VzKCkpOwogICAgIG1fcHJldmlvdXNPclJhcmVEYXRh
LnNldCh2bSwgdGhpcywgcmFyZURhdGEpOwotICAgIG1faGFzUmFyZURhdGEgPSB0cnVlOwotICAg
IEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKKyAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKKyAgICBB
U1NFUlQoaGFzUmFyZURhdGEoKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpjbG9uZVJhcmVEYXRh
RnJvbShWTSYgdm0sIGNvbnN0IFN0cnVjdHVyZSogb3RoZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2hh
c1JhcmVEYXRhKTsKLSAgICBBU1NFUlQob3RoZXItPm1faGFzUmFyZURhdGEpOworICAgIEFTU0VS
VCghaGFzUmFyZURhdGEoKSk7CisgICAgQVNTRVJUKG90aGVyLT5oYXNSYXJlRGF0YSgpKTsKICAg
ICBTdHJ1Y3R1cmVSYXJlRGF0YSogbmV3UmFyZURhdGEgPSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2xv
bmUodm0sIG90aGVyLT5yYXJlRGF0YSgpKTsKICAgICBtX3ByZXZpb3VzT3JSYXJlRGF0YS5zZXQo
dm0sIHRoaXMsIG5ld1JhcmVEYXRhKTsKLSAgICBtX2hhc1JhcmVEYXRhID0gdHJ1ZTsKLSAgICBB
U1NFUlQobV9oYXNSYXJlRGF0YSk7CisgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7CisgICAgQVNT
RVJUKGhhc1JhcmVEYXRhKCkpOwogfQogCiAjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwpAQCAt
ODY2LDcgKzg3Miw3IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGwK
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSAhPSB1aWQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGF0dHJpYnV0ZXMgPSBzdHJ1
Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXM7CisgICAgICAgIGF0dHJpYnV0ZXMgPSBzdHJ1
Y3R1cmUtPmF0dHJpYnV0ZXNJblByZXZpb3VzKCk7CiAgICAgICAgIHNwZWNpZmljVmFsdWUgPSBz
dHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMuZ2V0KCk7CiAgICAgICAgIHJldHVy
biBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwogICAgIH0KQEAgLTkyOSw3ICs5MzUsNyBAQCBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsCiAKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RW51bSkKLSAgICAgICAgbV9oYXNOb25FbnVt
ZXJhYmxlUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIHNldEhhc05vbkVudW1lcmFibGVQcm9w
ZXJ0aWVzKHRydWUpOwogCiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLnVpZCgp
OwogCkBAIC05ODcsNyArOTkzLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNG
cm9tU3RydQogCiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJvcGVydHlUYWJs
ZSgpLT5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0eVRhYmxlKCktPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgQVNT
RVJUKG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMgfHwgIShpdGVyLT5hdHRyaWJ1dGVzICYg
RG9udEVudW0pKTsKKyAgICAgICAgQVNTRVJUKGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkg
fHwgIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKICAgICAgICAgaWYgKCFpdGVyLT5r
ZXktPmlzRW1wdHlVbmlxdWUoKSAmJiAoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pIHx8
IG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgICAgIGlmIChr
bm93blVuaXF1ZSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZEtub3duVW5pcXVl
KGl0ZXItPmtleSk7CkBAIC0xMDE5LDcgKzEwMjUsNyBAQCB2b2lkIFN0cnVjdHVyZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJl
dmlvdXNPclJhcmVEYXRhKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zcGVj
aWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAKLSAgICBpZiAodGhpc09iamVjdC0+bV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNQaW5uZWRQcm9wZXJ0eVRhYmxl
KCkpIHsKICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZVVuc2FmZSk7
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGVVbnNh
ZmUpOwogICAgIH0gZWxzZSBpZiAodGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKQpA
QCAtMTE4MSw3ICsxMTg3LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmNoZWNrQ29uc2lzdGVuY3koKQog
ICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
aGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMpIHsKKyAgICBpZiAoIWhhc05vbkVudW1lcmFibGVQ
cm9wZXJ0aWVzKCkpIHsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gcHJv
cGVydHlUYWJsZSgpLT5lbmQoKTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRv
ciBpdGVyID0gcHJvcGVydHlUYWJsZSgpLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIShpdGVyLT5hdHRyaWJ1dGVzICYgRG9udEVudW0pKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAx
NzA0MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNTZWFsZWQoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlz
RnJvemVuKFZNJik7Ci0gICAgYm9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9w
cmV2ZW50RXh0ZW5zaW9uczsgfQotICAgIGJvb2wgZGlkVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQorICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gIXByZXZlbnRFeHRlbnNpb25zKCk7IH0KICAgICBib29sIHB1dFdpbGxHcm93T3V0T2ZM
aW5lU3RvcmFnZSgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdnZXN0ZWROZXdP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKQEAgLTE0MywxMCArMTQyLDEwIEBAIHB1Ymxp
YzoKICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZN
JiwgUHJvcGVydHlOYW1lKTsKICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9u
KFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBw
cm90b3R5cGUpOyB9CiAgICAgICAgIAotICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KLSAgICBib29s
IGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2lu
ZCA9PSBVbmNhY2hlZERpY3Rpb25hcnlLaW5kOyB9CisgICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBj
b25zdCB7IHJldHVybiBkaWN0aW9uYXJ5S2luZCgpICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQor
ICAgIGJvb2wgaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBkaWN0aW9u
YXJ5S2luZCgpID09IFVuY2FjaGVkRGljdGlvbmFyeUtpbmQ7IH0KIAotICAgIGJvb2wgcHJvcGVy
dHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHsgcmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgIT0gVW5j
YWNoZWREaWN0aW9uYXJ5S2luZCAmJiAhdHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hp
bmcoKTsgfQorICAgIGJvb2wgcHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHsgcmV0dXJu
IGRpY3Rpb25hcnlLaW5kKCkgIT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZCAmJiAhdHlwZUluZm8o
KS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKTsgfQogCiAgICAgLy8gV2UgdXNlIFNsb3dQYXRo
IGluIEdldEJ5SWRTdGF0dXMgZm9yIHN0cnVjdHVyZXMgdGhhdCBtYXkgZ2V0IG5ldyBpbXB1cmUg
cHJvcGVydGllcyBsYXRlciB0byBwcmV2ZW50CiAgICAgLy8gREZHIGZyb20gaW5saW5pbmcgcHJv
cGVydHkgYWNjZXNzZXMgc2luY2Ugc3RydWN0dXJlcyBkb24ndCB0cmFuc2l0aW9uIHdoZW4gYSBu
ZXcgaW1wdXJlIHByb3BlcnR5IGFwcGVhcnMuCkBAIC0xOTMsNyArMTkyLDcgQEAgcHVibGljOgog
ICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IGluZm8oKSk7Ci0gICAgICAgIGlmIChtX2hhc1Jh
cmVEYXRhKQorICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBy
YXJlRGF0YSgpLT5wcmV2aW91c0lEKCk7CiAgICAgICAgIHJldHVybiBwcmV2aW91cygpOwogICAg
IH0KQEAgLTI2OCwyMSArMjY3LDE1IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBnZXRD
b25jdXJyZW50bHkoVk0mLCBTdHJpbmdJbXBsKiB1aWQpOwogICAgIFByb3BlcnR5T2Zmc2V0IGdl
dENvbmN1cnJlbnRseShWTSYsIFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCi0gICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9Ci0g
ICAgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvOyB9Ci0gICAgdm9pZCBzZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGJv
b2wgaXNfX3Byb3RvX18pCisgICAgdm9pZCBzZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0
aFByb3RvQ2hlY2soYm9vbCBpc19fcHJvdG9fXykKICAgICB7Ci0gICAgICAgIG1faGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIHNldEhhc0dldHRlclNldHRlclByb3Bl
cnRpZXModHJ1ZSk7CiAgICAgICAgIGlmICghaXNfX3Byb3RvX18pCi0gICAgICAgICAgICBtX2hh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8gPSB0cnVlOwot
ICAgIH0KLSAgICB2b2lkIHNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCkKLSAgICB7Ci0g
ICAgICAgIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90
byA9IHRydWU7CisgICAgICAgICAgICBzZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVy
dGllc0V4Y2x1ZGluZ1Byb3RvKHRydWUpOwogICAgIH0KIAotICAgIGJvb2wgaGFzTm9uRW51bWVy
YWJsZVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0
aWVzOyB9Ci0gICAgICAgIAorICAgIHZvaWQgc2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMo
KSB7IHNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8o
dHJ1ZSk7IH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpKTsKQEAgLTI5MCw3ICsyODMsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5
RnVuY3Rpb24oVk0mLCBQcm9wZXJ0eU5hbWUpOwotICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVu
Y3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVj
aWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KKyAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0
aW9uVHJhY2tpbmcoKSB7IHNldFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudChtYXhTcGVjaWZp
Y0Z1bmN0aW9uVGhyYXNoQ291bnQpOyB9CiAKICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUo
Vk0mLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5l
ZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogZW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaC4KQEAgLTI5OCwyOCArMjkxLDE4IEBAIHB1YmxpYzoKIAogICAgIEpTU3RyaW5nKiBvYmpl
Y3RUb1N0cmluZ1ZhbHVlKCkKICAgICB7Ci0gICAgICAgIGlmICghbV9oYXNSYXJlRGF0YSkKKyAg
ICAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IHJldHVybiByYXJlRGF0YSgpLT5vYmplY3RUb1N0cmluZ1ZhbHVlKCk7CiAgICAgfQogCiAgICAg
dm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwg
SlNTdHJpbmcqIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKCFtX2hhc1JhcmVEYXRhKQorICAg
ICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgICBhbGxvY2F0ZVJhcmVEYXRhKHZt
KTsKICAgICAgICAgcmFyZURhdGEoKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSh2bSwgb3duZXIs
IHZhbHVlKTsKICAgICB9CiAKLSAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkOwotICAgIH0KLQotICAg
IHZvaWQgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpCi0gICAgewotICAgICAgICBtX3N0YXRp
Y0Z1bmN0aW9uUmVpZmllZCA9IHRydWU7Ci0gICAgfQotCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCkBAIC00MDAsNiArMzgzLDM2IEBAIHB1YmxpYzoK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgorICAgIHR5cGVkZWYgZW51bSB7
IAorICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLAorICAgICAgICBDYWNoZWREaWN0aW9u
YXJ5S2luZCA9IDEsCisgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCisgICAgfSBE
aWN0aW9uYXJ5S2luZDsKKworcHVibGljOgorI2RlZmluZSBERUZJTkVfQklURklFTEQodHlwZSwg
bG93ZXJOYW1lLCB1cHBlck5hbWUsIHdpZHRoLCBvZmZzZXQpIFwKKyAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgc18jI2xvd2VyTmFtZSMjU2hpZnQgPSBvZmZzZXQ7XAorICAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBzXyMjbG93ZXJOYW1lIyNNYXNrID0gKCgxIDw8ICh3aWR0aCAtIDEpKSB8ICgo
MSA8PCAod2lkdGggLSAxKSkgLSAxKSk7XAorICAgIHR5cGUgbG93ZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZT4oKG1fYml0RmllbGQgPj4gb2Zmc2V0KSAmIHNfIyNsb3dl
ck5hbWUjI01hc2spOyB9XAorICAgIHZvaWQgc2V0IyN1cHBlck5hbWUodHlwZSBuZXdWYWx1ZSkg
XAorICAgIHtcCisgICAgICAgIG1fYml0RmllbGQgJj0gfihzXyMjbG93ZXJOYW1lIyNNYXNrIDw8
IG9mZnNldCk7XAorICAgICAgICBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfIyNsb3dlck5h
bWUjI01hc2spIDw8IG9mZnNldDtcCisgICAgfQorCisgICAgREVGSU5FX0JJVEZJRUxEKERpY3Rp
b25hcnlLaW5kLCBkaWN0aW9uYXJ5S2luZCwgRGljdGlvbmFyeUtpbmQsIDIsIDApOworICAgIERF
RklORV9CSVRGSUVMRChib29sLCBpc1Bpbm5lZFByb3BlcnR5VGFibGUsIElzUGlubmVkUHJvcGVy
dHlUYWJsZSwgMSwgMik7CisgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc0dldHRlclNldHRl
clByb3BlcnRpZXMsIEhhc0dldHRlclNldHRlclByb3BlcnRpZXMsIDEsIDMpOworICAgIERFRklO
RV9CSVRGSUVMRChib29sLCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvLCBIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1By
b3RvLCAxLCA0KTsKKyAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaGFzTm9uRW51bWVyYWJsZVBy
b3BlcnRpZXMsIEhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzLCAxLCA1KTsKKyAgICBERUZJTkVf
QklURklFTEQodW5zaWduZWQsIGF0dHJpYnV0ZXNJblByZXZpb3VzLCBBdHRyaWJ1dGVzSW5QcmV2
aW91cywgMTQsIDYpOworICAgIERFRklORV9CSVRGSUVMRCh1bnNpZ25lZCwgc3BlY2lmaWNGdW5j
dGlvblRocmFzaENvdW50LCBTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQsIDIsIDIwKTsKKyAg
ICBERUZJTkVfQklURklFTEQoYm9vbCwgcHJldmVudEV4dGVuc2lvbnMsIFByZXZlbnRFeHRlbnNp
b25zLCAxLCAyMik7CisgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGRpZFRyYW5zaXRpb24sIERp
ZFRyYW5zaXRpb24sIDEsIDIzKTsKKyAgICBERUZJTkVfQklURklFTEQoYm9vbCwgc3RhdGljRnVu
Y3Rpb25zUmVpZmllZCwgU3RhdGljRnVuY3Rpb25zUmVpZmllZCwgMSwgMjQpOworICAgIERFRklO
RV9CSVRGSUVMRChib29sLCBoYXNSYXJlRGF0YSwgSGFzUmFyZURhdGEsIDEsIDI1KTsKKworcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUs
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsKQEAgLTQxNiwxMSArNDI5LDYgQEAgcHJpdmF0ZToK
ICAgICAvLyB0byB1bmxvY2sgaXQuCiAgICAgdm9pZCBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1h
dGVyaWFsaXphdGlvbihWZWN0b3I8U3RydWN0dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVy
ZSomLCBQcm9wZXJ0eVRhYmxlKiYpOwogICAgIAotICAgIHR5cGVkZWYgZW51bSB7IAotICAgICAg
ICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLAotICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9
IDEsCi0gICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCi0gICAgfSBEaWN0aW9uYXJ5
S2luZDsKICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwg
U3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCiAgICAgUHJvcGVydHlPZmZzZXQgcHV0U3Bl
Y2lmaWNWYWx1ZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKQEAgLTQ1NSw3ICs0NjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzZXRQcmV2aW91c0lEKFZNJiB2bSwgU3RydWN0dXJlKiB0cmFuc2l0aW9uLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGlmIChtX2hhc1JhcmVEYXRhKQorICAgICAgICBp
ZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhKCktPnNldFByZXZpb3VzSUQo
dm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
cHJldmlvdXNPclJhcmVEYXRhLnNldCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlKTsKQEAgLTQ2
Myw3ICs0NzEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKQogICAg
IHsKLSAgICAgICAgaWYgKG1faGFzUmFyZURhdGEpCisgICAgICAgIGlmIChoYXNSYXJlRGF0YSgp
KQogICAgICAgICAgICAgcmFyZURhdGEoKS0+Y2xlYXJQcmV2aW91c0lEKCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1fcHJldmlvdXNPclJhcmVEYXRhLmNsZWFyKCk7CkBAIC00ODIsMTMg
KzQ5MCwxMyBAQCBwcml2YXRlOgogCiAgICAgU3RydWN0dXJlKiBwcmV2aW91cygpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoIW1faGFzUmFyZURhdGEpOworICAgICAgICBBU1NFUlQoIWhh
c1JhcmVEYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4obV9w
cmV2aW91c09yUmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7
CisgICAgICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN0cnVjdHVyZVJhcmVEYXRhKj4obV9wcmV2aW91c09yUmFyZURhdGEuZ2V0KCkpOwogICAg
IH0KICAgICAgICAgCkBAIC01MzMsMTggKzU0MSw4IEBAIHByaXZhdGU6CiAgICAgdWludDhfdCBt
X2lubGluZUNhcGFjaXR5OwogICAgIAogICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKLSAg
ICAKLSAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKLSAgICBib29sIG1faXNQaW5u
ZWRQcm9wZXJ0eVRhYmxlIDogMTsKLSAgICBib29sIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cyA6IDE7Ci0gICAgYm9vbCBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8gOiAxOwotICAgIGJvb2wgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyA6
IDE7Ci0gICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzSW5QcmV2aW91cyA6IDE0OwotICAgIHVuc2ln
bmVkIG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50IDogMjsKLSAgICB1bnNpZ25lZCBtX3By
ZXZlbnRFeHRlbnNpb25zIDogMTsKLSAgICB1bnNpZ25lZCBtX2RpZFRyYW5zaXRpb24gOiAxOwot
ICAgIHVuc2lnbmVkIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkIDogMTsKLSAgICBib29sIG1faGFz
UmFyZURhdGEgOiAxOworCisgICAgdWludDMyX3QgbV9iaXRGaWVsZDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTcwNDMyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTQg
KzEzNSwxNCBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRyYW5zCiBpbmxp
bmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoVk0mIHZtLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKQogewogICAgIEFTU0VSVCghaXNEaWN0aW9u
YXJ5KCkpOwotICAgIGlmICghbV9oYXNSYXJlRGF0YSkKKyAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
CiAgICAgICAgIGFsbG9jYXRlUmFyZURhdGEodm0pOwogICAgIHJhcmVEYXRhKCktPnNldEVudW1l
cmF0aW9uQ2FjaGUodm0sIHRoaXMsIGVudW1lcmF0aW9uQ2FjaGUpOwogfQogCiBpbmxpbmUgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciogU3RydWN0dXJlOjplbnVtZXJhdGlvbkNhY2hlKCkKIHsKLSAg
ICBpZiAoIW1faGFzUmFyZURhdGEpCisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gcmFyZURhdGEoKS0+ZW51bWVyYXRpb25DYWNoZSgpOwogfQpA
QCAtMjI4LDcgKzIyOCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBTdHJ1Y3R1cmU6OmNoZWNrT2Zm
c2UKICAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlID0gbV9wcm9wZXJ0eVRhYmxlVW5z
YWZlLmdldCgpOwogCiAgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKSB7Ci0gICAgICAgIEFTU0VSVCgh
bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUpOworICAgICAgICBBU1NFUlQoIWlzUGlubmVkUHJvcGVy
dHlUYWJsZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="258340"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="258344"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>