<?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>164964</bug_id>
          
          <creation_ts>2016-11-18 15:44:27 -0800</creation_ts>
          <short_desc>Fix missing exception checks in Interpreter.cpp.</short_desc>
          <delta_ts>2017-03-15 13:20:46 -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>WebKit Local 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>
          
          <blocked>162351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252910</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-18 15:44:27 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252913</commentid>
    <comment_count>1</comment_count>
      <attachid>295204</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-18 15:49:45 -0800</bug_when>
    <thetext>Created attachment 295204
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253280</commentid>
    <comment_count>2</comment_count>
      <attachid>295308</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 11:54:09 -0800</bug_when>
    <thetext>Created attachment 295308
proposed patch: updated to use return { } where possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253300</commentid>
    <comment_count>3</comment_count>
      <attachid>295308</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-21 15:18:03 -0800</bug_when>
    <thetext>Comment on attachment 295308
proposed patch: updated to use return { } where possible.

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

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:140
&gt; +                    scope.release();

Why wouldn&apos;t this be an ASSERT(!scope.exception())?
Seems weird to have it be successful and throw an exception.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:146
&gt; +                    scope.release();

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288150</commentid>
    <comment_count>4</comment_count>
      <attachid>295308</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 11:29:25 -0700</bug_when>
    <thetext>Comment on attachment 295308
proposed patch: updated to use return { } where possible.

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

&gt;&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:140
&gt;&gt; +                    scope.release();
&gt; 
&gt; Why wouldn&apos;t this be an ASSERT(!scope.exception())?
&gt; Seems weird to have it be successful and throw an exception.

The literal parser allocates objects, and can therefore throw OutOfMemoryErrors, StackOverflowErrors, etc.

I&apos;m going to update and land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288166</commentid>
    <comment_count>5</comment_count>
      <attachid>304522</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 11:58:25 -0700</bug_when>
    <thetext>Created attachment 304522
Re-based patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288209</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-15 13:17:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/31071591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288212</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 13:20:46 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r214005: &lt;http://trac.webkit.org/r214005&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295204</attachid>
            <date>2016-11-18 15:49:45 -0800</date>
            <delta_ts>2016-11-21 11:54:09 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164964.patch</filename>
            <type>text/plain</type>
            <size>11674</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE2LTExLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIEludGVycHJldGVyLmNwcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKwog
MjAxNi0xMS0xOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgZmxhZyB0byBlbmFibGUgcG9pbnRlciBsb2NrLiBFbmFibGUgcG9pbnRlciBs
b2NrIGZlYXR1cmUgZm9yIG1hYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA4ODkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM2LDEyICsxMzYsMTYgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0
ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZS5jaGFy
YWN0ZXJzOCgpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKLSAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJh
bFBhcnNlKCkpCisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExpdGVy
YWxQYXJzZXI8VUNoYXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFj
dGVyczE2KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04pOwotICAgICAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFs
UGFyc2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNTEs
NiArMTU1LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpj
b2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxl
c1VuZGVyVERaKTsKICAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Y2FsbEZyYW1lLCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UpLCBjYWxsZXJDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMTU5LDYgKzE2NCw3IEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bGVyRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IHZt
LmludGVycHJldGVyOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gaW50ZXJwcmV0
ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4p
OwogfQogCkBAIC0xOTIsMTAgKzE5OCw5IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZy
YW1lKiBjYWxsRnIKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmd1bWVu
dHMuaXNPYmplY3QoKSk7CiAgICAgICAgIGxlbmd0aCA9IGdldExlbmd0aChjYWxsRnJhbWUsIGpz
Q2FzdDxKU09iamVjdCo+KGNlbGwpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIDApOwogICAgIAogICAgIGlmIChsZW5ndGggPj0gZmlyc3RWYXJBcmdPZmZzZXQpCiAg
ICAgICAgIGxlbmd0aCAtPSBmaXJzdFZhckFyZ09mZnNldDsKQEAgLTIyMiw2ICsyMjcsNyBAQCB1
bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9m
VmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVl
RnJhbWUgPSBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90
cywgbGVuZ3RoICsgMSk7CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heEFyZ3VtZW50cyB8
fCAhdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkg
ewpAQCAtNzg3LDYgKzc5Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3Jh
bUV4ZWMKICAgICAgICAgcGFyc2VSZXN1bHQgPSBsaXRlcmFsUGFyc2VyLnRyeUpTT05QUGFyc2Uo
SlNPTlBEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiAgICAg
fQogCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAg
IGlmIChwYXJzZVJlc3VsdCkgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc2NvcGUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKQEAgLTg3
MSwxNiArODc4LDE4IEBAIGZhaWxlZEpTT05QOgogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3Bl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8g
Ynl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgotICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSkpCisgICAg
SlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXModm0s
IGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSB8
fCAhZXJyb3IpOworICAgIGlmIChVTkxJS0VMWShlcnJvcikpCiAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpKTsK
IAogICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVC
bG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVCghdGhyb3dTY29w
ZS5leGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpzRHluYW1pY0Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBl
cnJvcikpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVy
cHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIGlmIChVTkxJS0VMWShlcnJv
cikpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7CiAgICAgICAgIGNv
ZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAg
fQogCkBAIC04OTYsOCArOTA1LDggQEAgZmFpbGVkSlNPTlA6CiAgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnBy
b3RvQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCkBA
IC05MzUsNyArOTQ0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZy
YQogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVuY3Rpb25F
eGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVC
bG9jayk7CiAgICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJw
cmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CiAgICAgICAgIGlmIChVTkxJS0VM
WSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOworICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKIAogICAgICAgICBBU1NF
UlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CkBAIC05NTIsOCArOTYxLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIHsKICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29k
ZToKICAgICAgICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1
dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZtRW50cnlUb05hdGl2ZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24pLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwpAQCAtOTk3LDggKzEwMDYsOSBAQCBK
U09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgaWYgKGlzSlNDb25z
dHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVj
dCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rp
b24qPihjb25zdHJ1Y3RvciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2sp
OworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9j
YXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFj
b21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKICAgICAgICAgQVNTRVJUKCEh
bmV3Q29kZUJsb2NrKTsKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCA9IGZhbHNlOwpAQCAtMTAzMyw3ICsxMDQzLDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRl
cnByZXRlcjo6cHJlcGFyZUZvcgogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVF9VTlVTRUQodGhyb3dTY29wZSwgIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIAogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKQEAg
LTEwNDEsMTAgKzEwNTEsOSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJl
Rm9yCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVG
b3JDYWxsLCBuZXdDb2RlQmxvY2spOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKTsKKyAgICBBU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7
CisgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1
cmUoKTsKLSAgICB9CiAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9
IGZhbHNlOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOwpAQCAtMTA3MSw2ICsxMDgwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShD
YWxsRnJhbWVDbAogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIC8vIEV4ZWN1dGUg
dGhlIGNvZGU6CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+
ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9DYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTExMjAsOCArMTEzMCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENv
ZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVG
b3JFeGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNh
bGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24o
KSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJy
b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxFdmFsQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7
CiAgICAgfQogCkBAIC0xMTU1LDkgKzExNjYsMTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YQogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1W
YXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPnZhcmlhYmxlKGkpOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZU9iamVjdC0+
aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB2YXJpYWJsZU9iamVjdC0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsK
ICAgICAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHZhcmlh
YmxlT2JqZWN0LCBjYWxsRnJhbWUsIGlkZW50LCBqc1VuZGVmaW5lZCgpLCBzbG90KTsKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAg
LTExNjUsNiArMTE3OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlh
YmxlT2JqZWN0KTsKICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5w
dXQodmFyaWFibGVPYmplY3QsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpLCBzbG90KTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgY2hlY2tlZFJldHVybih0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNzcsNiArMTE5Miw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICBwcm90b0NhbGxGcmFtZS5p
bml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
LCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbC0+Z2VuZXJh
dGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CkBAIC0xMjAyLDggKzEyMTgsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAgICAgewogICAgICAgICBDb2RlQmxvY2sq
IHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVs
bHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJU
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihj
b21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAg
ICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTIyMiw2ICsxMjM5
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogICAgIHByb3Rv
Q2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CiAKICAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgorICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295308</attachid>
            <date>2016-11-21 11:54:09 -0800</date>
            <delta_ts>2017-03-15 11:58:25 -0700</delta_ts>
            <desc>proposed patch: updated to use return { } where possible.</desc>
            <filename>bug-164964.patch</filename>
            <type>text/plain</type>
            <size>11674</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE2LTExLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIEludGVycHJldGVyLmNwcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKToKKwog
MjAxNi0xMS0xOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgZmxhZyB0byBlbmFibGUgcG9pbnRlciBsb2NrLiBFbmFibGUgcG9pbnRlciBs
b2NrIGZlYXR1cmUgZm9yIG1hYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA4ODkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM2LDEyICsxMzYsMTYgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0
ZXJhbFBhcnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZS5jaGFy
YWN0ZXJzOCgpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKLSAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJh
bFBhcnNlKCkpCisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExpdGVy
YWxQYXJzZXI8VUNoYXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFj
dGVyczE2KCksIHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIE5vblN0cmljdEpTT04pOwotICAgICAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFs
UGFyc2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJl
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZE9iamVjdDsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNTEs
NiArMTU1LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICBW
YXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICBKU1Njb3BlOjpj
b2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKGNhbGxlclNjb3BlQ2hhaW4sIHZhcmlhYmxl
c1VuZGVyVERaKTsKICAgICAgICAgZXZhbCA9IERpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Y2FsbEZyYW1lLCBtYWtlU291cmNlKHByb2dyYW1Tb3VyY2UpLCBjYWxsZXJDb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMTU5LDYgKzE2NCw3IEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bGVyRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IHZt
LmludGVycHJldGVyOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gaW50ZXJwcmV0
ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4p
OwogfQogCkBAIC0xOTIsMTAgKzE5OCw5IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZy
YW1lKiBjYWxsRnIKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVChhcmd1bWVu
dHMuaXNPYmplY3QoKSk7CiAgICAgICAgIGxlbmd0aCA9IGdldExlbmd0aChjYWxsRnJhbWUsIGpz
Q2FzdDxKU09iamVjdCo+KGNlbGwpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIDApOwogICAgIAogICAgIGlmIChsZW5ndGggPj0gZmlyc3RWYXJBcmdPZmZzZXQpCiAg
ICAgICAgIGxlbmd0aCAtPSBmaXJzdFZhckFyZ09mZnNldDsKQEAgLTIyMiw2ICsyMjcsNyBAQCB1
bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9m
VmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVl
RnJhbWUgPSBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90
cywgbGVuZ3RoICsgMSk7CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heEFyZ3VtZW50cyB8
fCAhdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkg
ewpAQCAtNzg3LDYgKzc5Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3Jh
bUV4ZWMKICAgICAgICAgcGFyc2VSZXN1bHQgPSBsaXRlcmFsUGFyc2VyLnRyeUpTT05QUGFyc2Uo
SlNPTlBEYXRhLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCktPnN1cHBvcnRzUmljaFNvdXJjZUluZm8oc2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiAgICAg
fQogCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwogICAg
IGlmIChwYXJzZVJlc3VsdCkgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc2NvcGUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKQEAgLTg3
MSwxNiArODc4LDE4IEBAIGZhaWxlZEpTT05QOgogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3Bl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8g
Ynl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgotICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSkpCisgICAg
SlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXModm0s
IGNhbGxGcmFtZSwgc2NvcGUpOworICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSB8
fCAhZXJyb3IpOworICAgIGlmIChVTkxJS0VMWShlcnJvcikpCiAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpKTsK
IAogICAgIFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVC
bG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVCghdGhyb3dTY29w
ZS5leGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpzRHluYW1pY0Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBl
cnJvcikpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVy
cHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CisgICAgICAgIGlmIChVTkxJS0VMWShlcnJv
cikpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7CiAgICAgICAgIGNv
ZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAg
fQogCkBAIC04OTYsOCArOTA1LDggQEAgZmFpbGVkSlNPTlA6CiAgICAgcHJvdG9DYWxsRnJhbWUu
aW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnBy
b3RvQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCkBA
IC05MzUsNyArOTQ0LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZy
YQogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY2FsbERhdGEuanMuZnVuY3Rpb25F
eGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVC
bG9jayk7CiAgICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJw
cmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CiAgICAgICAgIGlmIChVTkxJS0VM
WSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOworICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKIAogICAgICAgICBBU1NF
UlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlz
QmVJbmxpbmVkID0gZmFsc2U7CkBAIC05NTIsOCArOTYxLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIHsKICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgY29k
ZToKICAgICAgICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1
dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZtRW50cnlUb05hdGl2ZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24pLCAmdm0sICZwcm90b0NhbGxGcmFtZSkpOwogICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkpOwpAQCAtOTk3LDggKzEwMDYsOSBAQCBK
U09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgaWYgKGlzSlNDb25z
dHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVj
dCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnBy
ZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rp
b24qPihjb25zdHJ1Y3RvciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2sp
OworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9j
YXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFj
b21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAKICAgICAgICAgQVNTRVJUKCEh
bmV3Q29kZUJsb2NrKTsKICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCA9IGZhbHNlOwpAQCAtMTAzMyw3ICsxMDQzLDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRl
cnByZXRlcjo6cHJlcGFyZUZvcgogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVF9VTlVTRUQodGhyb3dTY29wZSwgIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIAogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKQEAg
LTEwNDEsMTAgKzEwNTEsOSBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJl
Rm9yCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVG
b3JDYWxsLCBuZXdDb2RlQmxvY2spOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKTsKKyAgICBBU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7
CisgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1
cmUoKTsKLSAgICB9CiAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9
IGZhbHNlOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOwpAQCAtMTA3MSw2ICsxMDgwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShD
YWxsRnJhbWVDbAogICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIC8vIEV4ZWN1dGUg
dGhlIGNvZGU6CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBjbG9zdXJlLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+
ZXhlY3V0ZSgmdm0sIGNsb3N1cmUucHJvdG9DYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTExMjAsOCArMTEzMCw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENv
ZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVG
b3JFeGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNh
bGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24o
KSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVFcnJvcikpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJy
b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBpbGVFcnJvcik7CiAg
ICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxFdmFsQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7
CiAgICAgfQogCkBAIC0xMTU1LDkgKzExNjYsMTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YQogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1W
YXJpYWJsZXM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPnZhcmlhYmxlKGkpOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZU9iamVjdC0+
aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzUHJv
cGVydHkgPSB2YXJpYWJsZU9iamVjdC0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICAgICAgaWYgKCFoYXNQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsK
ICAgICAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHZhcmlh
YmxlT2JqZWN0LCBjYWxsRnJhbWUsIGlkZW50LCBqc1VuZGVmaW5lZCgpLCBzbG90KTsKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAg
LTExNjUsNiArMTE3OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlh
YmxlT2JqZWN0KTsKICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5w
dXQodmFyaWFibGVPYmplY3QsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgc2NvcGUpLCBzbG90KTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgY2hlY2tlZFJldHVybih0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNzcsNiArMTE5Miw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICBwcm90b0NhbGxGcmFtZS5p
bml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
LCBzY29wZSksIHRoaXNWYWx1ZSwgMSk7CiAKICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAg
IHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbC0+Z2VuZXJh
dGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKIAogICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CkBAIC0xMjAyLDggKzEyMTgsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAgICAgewogICAgICAgICBDb2RlQmxvY2sq
IHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPih2bSwgbnVs
bHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJU
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihj
b21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAg
ICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTIyMiw2ICsxMjM5
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogICAgIHByb3Rv
Q2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CiAKICAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgorICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cg==
</data>
<flag name="review"
          id="317922"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304522</attachid>
            <date>2017-03-15 11:58:25 -0700</date>
            <delta_ts>2017-03-15 11:58:25 -0700</delta_ts>
            <desc>Re-based patch for landing.</desc>
            <filename>bug-164964.patch</filename>
            <type>text/plain</type>
            <size>11676</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzOTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIEludGVycHJldGVyLmNwcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFy
YXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKwogMjAxNy0wMy0xNSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBYY29kZSBwcm9qZWN0
IGZpbGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIxMzk2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMiAr
MTM3LDE2IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgaWYg
KCFjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgICAgICBpZiAocHJv
Z3JhbVNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXI8TENo
YXI+IHByZXBhcnNlcihjYWxsRnJhbWUsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJv
Z3JhbVNvdXJjZS5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7Ci0gICAgICAgICAgICAgICAgaWYg
KEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKQorICAg
ICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRl
cmFsUGFyc2UoKSkgeworICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFy
PiBwcmVwYXJzZXIoY2FsbEZyYW1lLCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnMxNigpLCBwcm9n
cmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKLSAgICAgICAgICAgICAgICBpZiAo
SlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7ICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRl
cmFsUGFyc2UoKSkgeworICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRPYmplY3Q7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMTUyLDYgKzE1Niw3IEBAIEpT
VmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVW
YXJpYWJsZXNVbmRlclREWihjYWxsZXJTY29wZUNoYWluLCB2YXJpYWJsZXNVbmRlclREWik7CiAg
ICAgICAgIGV2YWwgPSBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFr
ZVNvdXJjZShwcm9ncmFtU291cmNlLCBjYWxsZXJDb2RlQmxvY2stPnNvdXJjZSgpLT5zb3VyY2VP
cmlnaW4oKSksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0
VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVz
VW5kZXJURFopOworICAgICAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXZhbCk7
CiAgICAgICAgIGlmICghZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CkBAIC0xNjAsNiArMTY1LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQog
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsZXJGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gdm0uaW50ZXJwcmV0ZXI7CisgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgIHJldHVybiBpbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUs
IHRoaXNWYWx1ZSwgY2FsbGVyU2NvcGVDaGFpbik7CiB9CiAKQEAgLTE5MywxMCArMTk5LDkgQEAg
dW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcgogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFyZ3VtZW50cy5pc09iamVjdCgpKTsKICAgICAgICAgbGVu
Z3RoID0gZ2V0TGVuZ3RoKGNhbGxGcmFtZSwganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCkpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAgICAgCiAgICAgaWYgKGxl
bmd0aCA+PSBmaXJzdFZhckFyZ09mZnNldCkKICAgICAgICAgbGVuZ3RoIC09IGZpcnN0VmFyQXJn
T2Zmc2V0OwpAQCAtMjIzLDcgKzIyOCw4IEBAIHVuc2lnbmVkIHNpemVGcmFtZUZvclZhcmFyZ3Mo
Q2FsbEZyYW1lKiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzaXplT2ZWYXJhcmdzKGNhbGxGcmFtZSwgYXJndW1lbnRz
LCBmaXJzdFZhckFyZ09mZnNldCk7Ci0gICAgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgMCk7CisKICAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJh
cmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChV
TkxJS0VMWShsZW5ndGggPiBtYXhBcmd1bWVudHMgfHwgIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlG
b3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CkBAIC03NjMsNiArNzY5LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29ucwogICAgICAgICBwYXJzZVJlc3VsdCA9IGxp
dGVyYWxQYXJzZXIudHJ5SlNPTlBQYXJzZShKU09OUERhdGEsIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNlSW5mbyhzY29w
ZS0+Z2xvYmFsT2JqZWN0KCkpKTsKICAgICB9CiAKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgaWYgKHBhcnNlUmVzdWx0KSB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIEpT
VmFsdWUgcmVzdWx0OwpAQCAtODQ3LDE2ICs4NTQsMTggQEAgZmFpbGVkSlNPTlA6CiAgICAgVk1F
bnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAv
LyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNlc3Nhcnk6Ci0gICAgaWYgKEpTT2Jq
ZWN0KiBlcnJvciA9IHByb2dyYW0tPmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKHZtLCBjYWxs
RnJhbWUsIHNjb3BlKSkKKyAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5pbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSk7CisgICAgQVNTRVJUKCF0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpIHx8ICFlcnJvcik7CisgICAgaWYgKFVOTElLRUxZKGVycm9yKSkK
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBlcnJvcikpOwogCiAgICAgUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrOwog
ICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVj
dCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxl
Pih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKLSAgICAg
ICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IHRocm93U2NvcGUuZXhjZXB0aW9u
KCkgPT0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPih2bSwgZXJyb3IpKTsKLSAgICAgICAgaWYg
KGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBlcnJvcikpOworICAgICAgICBBU1NFUlQodGhyb3dTY29w
ZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybihlcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2Nr
Kj4odGVtcENvZGVCbG9jayk7CiAgICAgfQogCkBAIC04NzUsOCArODg0LDggQEAgZmFpbGVkSlNP
TlA6CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUo
dm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSwgc2NvcGUpLCB0aGlzT2JqLCAxKTsKIAogICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGU6Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBwcm9ncmFtLT5nZW5lcmF0
ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklU
Q29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybihyZXN1bHQpOwogfQogCkBAIC05MTQsNyArOTIzLDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9y
ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1
bmN0aW9uRXhlY3V0YWJsZT4odm0sIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29w
ZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVCh0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9y
KSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUs
IGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGls
ZUVycm9yKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdD
b2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC05MzQsOCArOTQz
LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIHsKICAg
ICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICAgICAgaWYgKGlzSlNDYWxsKSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgICAg
ICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1
dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtRW50cnlUb05hdGl2ZShyZWludGVycHJldF9jYXN0
PHZvaWQqPihjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24pLCAmdm0sICZwcm90b0NhbGxGcmFtZSkp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBKU1ZhbHVlKCkp
OwpAQCAtOTc5LDggKzk4OCw5IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0
cnVjdCgKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBj
YWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFi
bGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JD
b25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBp
bGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9y
KTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxv
Y2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDE4LDcgKzEwMjgsNyBA
QCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yCiB7CiAgICAgVk0mIHZt
ID0gKnNjb3BlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJU
X1VOVVNFRCh0aHJvd1Njb3BlLCAhdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgCiAgICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lQ2xvc3VyZSgpOwpAQCAtMTAyNiwxMCArMTAzNiw5IEBAIENhbGxGcmFtZUNsb3N1
cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAg
ICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0s
IGZ1bmN0aW9uLCBzY29wZSwgQ29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7Ci0gICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJy
b3IpOworICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nh
c3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAg
ICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwotICAgIH0KICAgICBuZXdDb2RlQmxvY2stPm1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CkBAIC0xMDU5LDYgKzEwNjgsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgfQogCiAgICAgLy8gRXhlY3V0
ZSB0aGUgY29kZToKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gY2hl
Y2tlZFJldHVybihyZXN1bHQpOwpAQCAtMTEwOCw4ICsxMTE4LDkgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1w
Q29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZhbC0+cHJlcGFy
ZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9y
Q2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oY29tcGlsZUVycm9yKSk7CiAgICAg
ICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hl
Y2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVF
cnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2Nr
KTsKICAgICB9CiAKQEAgLTExNDMsOSArMTE1NCwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVZhcmlhYmxlczsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+dmFyaWFibGUoaSk7Ci0gICAgICAgICAgICBpZiAoIXZhcmlhYmxlT2JqZWN0
LT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGlkZW50KSkgeworICAgICAgICAgICAgYm9vbCBoYXNQ
cm9wZXJ0eSA9IHZhcmlhYmxlT2JqZWN0LT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGlkZW50KTsK
KyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgY2hlY2tlZFJldHVy
bih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgICAgICBpZiAoIWhhc1Byb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFyaWFibGVPYmplY3Qp
OwogICAgICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodmFy
aWFibGVPYmplY3QsIGNhbGxGcmFtZSwgaWRlbnQsIGpzVW5kZWZpbmVkKCksIHNsb3QpOworICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgY2hlY2tlZFJldHVy
bih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtMTE1Myw2ICsxMTY3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhl
Y3V0YQogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFy
aWFibGVPYmplY3QpOwogICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PnB1dCh2YXJpYWJsZU9iamVjdCwgY2FsbEZyYW1lLCBmdW5jdGlvbi0+bmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBzY29wZSksIHNsb3QpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBjaGVja2VkUmV0dXJuKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE2OCw2ICsxMTgzLDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIHByb3RvQ2FsbEZyYW1l
LmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCksIHNjb3BlKSwgdGhpc1ZhbHVlLCAxKTsKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6Cisg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsLT5nZW5l
cmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUpOwogCiAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKQEAgLTExOTMsOCArMTIwOSw5IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKICAgICB7CiAgICAgICAgIENvZGVCbG9j
ayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBu
dWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOworICAgICAgICBBU1NF
UlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+
KGNvbXBpbGVFcnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAgfQogCkBAIC0xMjE2LDYgKzEy
MzMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5n
bG9iYWxPYmplY3QoKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKIAogICAgIC8vIEV4ZWN1
dGUgdGhlIGNvZGU6CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9D
YWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>