<?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>16369</bug_id>
          
          <creation_ts>2007-12-09 13:23:12 -0800</creation_ts>
          <short_desc>REGRESSION (r28525): regular expression tests failing due to bad firstByte optimization</short_desc>
          <delta_ts>2007-12-09 22:22:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>63757</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-09 13:23:12 -0800</bug_when>
    <thetext>Some of the PCRE regular expression tests started failing due to my breaking the firstByte optimization. I have a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63759</commentid>
    <comment_count>1</comment_count>
      <attachid>17807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-09 13:30:58 -0800</bug_when>
    <thetext>Created attachment 17807
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63787</commentid>
    <comment_count>2</comment_count>
      <attachid>17807</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-09 22:17:57 -0800</bug_when>
    <thetext>Comment on attachment 17807
patch

This looks good. 

I am not sure if this and similar code near it needs to be quite as obfuscated as it is?
+    if ((cd.needOuterBracket ? bracketIsAnchored : branchIsAnchored)(codestart))

I think it would read clearer if it was just
+    if ((cd.needOuterBracket ? bracketIsAnchored(codestart) : branchIsAnchored(codestart))

Also, I know it is partially copied, but the ... in this comment doesn&apos;t seem necessary to me.
+.... except when the .* appears inside capturing parentheses, and there is a

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63788</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-09 22:22:22 -0800</bug_when>
    <thetext>Committed revision 28578.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17807</attachid>
            <date>2007-12-09 13:30:58 -0800</date>
            <delta_ts>2007-12-09 22:22:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>FirstBytePatch.txt</filename>
            <type>text/plain</type>
            <size>19885</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTcyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDctMTItMDkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzY5CisgICAgICAgICAgUkVHUkVTU0lPTiAocjI4NTI1KTogcmVndWxhciBleHByZXNz
aW9uIHRlc3RzIGZhaWxpbmcgZHVlIHRvIGJhZCBmaXJzdEJ5dGUgb3B0aW1pemF0aW9uCisKKyAg
ICAgICAgKiBwY3JlL3BjcmVfY29tcGlsZS5jcHA6IENoYW5nZWQgc29tZSBuYW1lcyB0byB1c2Ug
aW50ZXJDYXBzIGludGVhZCBvZiB1bmRlcl9zY29yZXMuCisgICAgICAgIChicmFuY2hJc0FuY2hv
cmVkKTogQnJva2UgaXNfYW5jaG9yZWQgaW50byB0d28gc2VwYXJhdGUgZnVuY3Rpb25zOyB0aGlz
IG9uZSB3b3JrcyBvbiBhCisgICAgICAgIGJyYW5jaCBhbmQgdGhlIG90aGVyIG9uIGFuIGFuY2hv
ci4gVGhlIG9sZCBmdW5jdGlvbiB3b3VsZCBvbmx5IHdvcmsgb24gYSBicmFja2V0LgorICAgICAg
ICBBbHNvIHJlbW92ZWQgdW5uZWVkZWQgcGFyYW1ldGVyczsgdGhlIGFuY2hvcmVkIGNoZWNrIGRv
ZXMgbm90IHJlcXVpcmUgdGhlIGJyYWNrZXQKKyAgICAgICAgbWFwIG9yIHRoZSBvcHRpb25zIGFu
eSBtb3JlIGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZHVjZWQgc2V0IG9mIGZlYXR1cmVzLgorICAgICAg
ICAoYnJhY2tldElzQW5jaG9yZWQpOiBEaXR0by4KKyAgICAgICAgKGJyYW5jaE5lZWRzTGluZVN0
YXJ0KTogQnJva2UgY2FuQXBwbHlGaXJzdENoYXJPcHRpbWl6YXRpb24gaW50byB0d28gZnVuY3Rp
b25zIGFuZCBnYXZlCisgICAgICAgIGJvdGggYSBiZXR0ZXIgbmFtZS4gVGhpcyBpcyB0aGUgZnVu
Y3Rpb24gdGhhdCB3YXMgcmV0dXJuaW5nIHRoZSB3cm9uZyB2YWx1ZS4gVGhlIGZhaWx1cmUKKyAg
ICAgICAgd2FzIGJlYWN1c2UgdGhlIG9sZCBmdW5jdGlvbiB3b3VsZCBvbmx5IHdvcmsgb24gYSBi
cmFja2V0LgorICAgICAgICAoYnJhY2tldE5lZWRzTGluZVN0YXJ0KTogRGl0dG8uCisgICAgICAg
IChqc1JlZ0V4cENvbXBpbGUpOiBDaGFuZ2VkIHRvIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGJyYW5j
aCBvciBicmFja2V0IGZsYXZvciBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb25zIGJhc2VkIG9uIHdo
ZXRoZXIgd2UgY29tcGlsZWQgYW4gb3V0ZXIgYnJhY2tldC4gQWxzbyByZW1vdmVkIGluYWNjdXJh
dGUgY29tbWVudHMKKyAgICAgICAgYW5kIHVubmVlZGVkIHBhcmFtZXRlcnMuCisKKyAgICAgICAg
LSBvdGhlciBzbWFsbCBjaGFuZ2VzCisKKyAgICAgICAgKiBwY3JlL3BjcmUuaDogUmVudW1iZXJl
ZCBlcnJvciBjb2RlcywgaW4gYSBsb2dpY2FsIG9yZGVyLiBGaXJzdCwgbm9ybWFsIGZhaWx1cmUs
IHRoZW4KKyAgICAgICAgdGhlIHJlY3Vyc2lvbiBsaW1pdCwgdGhlbiBydW5uaW5nIG91dCBvZiBt
ZW1vcnksIGFuZCBmaW5hbGx5IGFuIHVuZXhwZWN0ZWQgaW50ZXJuYWwgZXJyb3IuCisKKyAgICAg
ICAgKiBwY3JlL3BjcmVfZXhlYy5jcHA6IEZpeGVkIGluZGVudGF0aW9uLgorICAgICAgICAoanNS
ZWdFeHBFeGVjdXRlKTogQ29ycmVjdGVkIGFuIGluYWNjdXJhdGUgY29tbWVudC4KKwogMjAwNy0x
Mi0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXLgpJbmRleDogSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgJKHJldmlzaW9uIDI4NTcyKQorKysgSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgZW51
bSBKU1JlZ0V4cE11bHRpbGluZU9wdGlvbiB7IEpTUmVnRXhwUwogCiAvKiBqc1JlZ0V4cEV4ZWN1
dGUgZXJyb3IgY29kZXMgKi8KIGNvbnN0IGludCBKU1JlZ0V4cEVycm9yTm9NYXRjaCA9IC0xOwot
Y29uc3QgaW50IEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC0yOworY29uc3QgaW50IEpTUmVnRXhw
RXJyb3JSZWN1cnNpb25MaW1pdCA9IC0yOwogY29uc3QgaW50IEpTUmVnRXhwRXJyb3JOb01lbW9y
eSA9IC0zOwotY29uc3QgaW50IEpTUmVnRXhwRXJyb3JSZWN1cnNpb25MaW1pdCA9IC01OworY29u
c3QgaW50IEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC00OwogCiBKU1JlZ0V4cCoganNSZWdFeHBD
b21waWxlKGNvbnN0IDo6VUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpT
UmVnRXhwSWdub3JlQ2FzZU9wdGlvbiwgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24sCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfY29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlX2NvbXBpbGUuY3BwCShyZXZpc2lvbiAyODU3MikKKysrIEphdmFT
Y3JpcHRDb3JlL3BjcmUvcGNyZV9jb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDIx
ICsxMzcsMjMgQEAgc3RydWN0IENvbXBpbGVEYXRhIHsKICAgICAgICAgc3RhcnRfY29kZSA9IDA7
CiAgICAgICAgIHN0YXJ0X3BhdHRlcm4gPSAwOwogICAgICAgICB0b3BfYmFja3JlZiA9IDA7Ci0g
ICAgICAgIGJhY2tyZWZfbWFwID0gMDsKKyAgICAgICAgYmFja3JlZk1hcCA9IDA7CiAgICAgICAg
IHJlcV92YXJ5b3B0ID0gMDsKICAgICAgICAgbmVlZE91dGVyQnJhY2tldCA9IGZhbHNlOwogICAg
IH0KICAgICBjb25zdCB1c2NoYXIqIHN0YXJ0X2NvZGU7ICAgLyogVGhlIHN0YXJ0IG9mIHRoZSBj
b21waWxlZCBjb2RlICovCiAgICAgY29uc3QgVUNoYXIqIHN0YXJ0X3BhdHRlcm47IC8qIFRoZSBz
dGFydCBvZiB0aGUgcGF0dGVybiAqLwogICAgIGludCB0b3BfYmFja3JlZjsgICAgICAgICAgICAv
KiBNYXhpbXVtIGJhY2sgcmVmZXJlbmNlICovCi0gICAgdW5zaWduZWQgYmFja3JlZl9tYXA7ICAg
ICAgIC8qIEJpdG1hcCBvZiBsb3cgYmFjayByZWZzICovCisgICAgdW5zaWduZWQgYmFja3JlZk1h
cDsgICAgICAgLyogQml0bWFwIG9mIGxvdyBiYWNrIHJlZnMgKi8KICAgICBpbnQgcmVxX3Zhcnlv
cHQ7ICAgICAgICAgICAgLyogIkFmdGVyIHZhcmlhYmxlIGl0ZW0iIGZsYWcgZm9yIHJlcWJ5dGUg
Ki8KICAgICBib29sIG5lZWRPdXRlckJyYWNrZXQ7CiB9OwogCi0vKiBEZWZpbml0aW9uIHRvIGFs
bG93IG11dHVhbCByZWN1cnNpb24gKi8KKy8qIERlZmluaXRpb25zIHRvIGFsbG93IG11dHVhbCBy
ZWN1cnNpb24gKi8KIAotc3RhdGljIGJvb2wgY29tcGlsZV9icmFja2V0KGludCwgaW50KiwgdXNj
aGFyKiosIGNvbnN0IFVDaGFyKiosIGNvbnN0IFVDaGFyKiwgRXJyb3JDb2RlKiwgaW50LCBpbnQq
LCBpbnQqLCBDb21waWxlRGF0YSYpOworc3RhdGljIGJvb2wgY29tcGlsZUJyYWNrZXQoaW50LCBp
bnQqLCB1c2NoYXIqKiwgY29uc3QgVUNoYXIqKiwgY29uc3QgVUNoYXIqLCBFcnJvckNvZGUqLCBp
bnQsIGludCosIGludCosIENvbXBpbGVEYXRhJik7CitzdGF0aWMgYm9vbCBicmFja2V0SXNBbmNo
b3JlZChjb25zdCB1c2NoYXIqIGNvZGUpOworc3RhdGljIGJvb2wgYnJhY2tldE5lZWRzTGluZVN0
YXJ0KGNvbnN0IHVzY2hhciogY29kZSwgdW5zaWduZWQgY2FwdHVyZU1hcCwgdW5zaWduZWQgYmFj
a3JlZk1hcCk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqICAgICAgICAgICAgSGFuZGxlIGVzY2FwZXMgICAgICAgICAgICAgICAgICAgICAg
KgpAQCAtMjc4LDcgKzI4MCw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfZXNjYXBlKGNvbnN0IFVDaGFy
KiogcHQKICAgICAgICAgICAgICAgICBpbnQgY2MgPSBwdHJbaV07CiAgICAgICAgICAgICAgICAg
aWYgKGNjID49ICdhJykKICAgICAgICAgICAgICAgICAgICAgY2MgLT0gMzI7ICAgICAgICAgICAg
IC8qIENvbnZlcnQgdG8gdXBwZXIgY2FzZSAqLwotICAgICAgICAgICAgICAgIGMgPSBjICogMTYg
KyBjYyAtICgoY2MgPCAnQScpPyAnMCcgOiAoJ0EnIC0gMTApKTsKKyAgICAgICAgICAgICAgICBj
ID0gYyAqIDE2ICsgY2MgLSAoKGNjIDwgJ0EnKSA/ICcwJyA6ICgnQScgLSAxMCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcHRyICs9IGkgLSAxOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC03NTAsNyArNzUyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNhZmVseUNoZWNrTmV4dENoYXIo
YwogfQogCiBzdGF0aWMgYm9vbAotY29tcGlsZV9icmFuY2goaW50IG9wdGlvbnMsIGludCogYnJh
Y2tldHMsIHVzY2hhcioqIGNvZGVwdHIsCitjb21waWxlQnJhbmNoKGludCBvcHRpb25zLCBpbnQq
IGJyYWNrZXRzLCB1c2NoYXIqKiBjb2RlcHRyLAogICAgICAgICAgICAgICAgY29uc3QgVUNoYXIq
KiBwdHJwdHIsIGNvbnN0IFVDaGFyKiBwYXR0ZXJuRW5kLCBFcnJvckNvZGUqIGVycm9yY29kZXB0
ciwgaW50ICpmaXJzdGJ5dGVwdHIsCiAgICAgICAgICAgICAgICBpbnQqIHJlcWJ5dGVwdHIsIENv
bXBpbGVEYXRhJiBjZCkKIHsKQEAgLTEyNTYsNyArMTI1OCw3IEBAIGNvbXBpbGVfYnJhbmNoKGlu
dCBvcHRpb25zLCBpbnQqIGJyYWNrZXQKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAvKiBSZW1lbWJlciB3aGV0aGVyIHRoaXMgaXMgYSB2YXJpYWJsZSBsZW5ndGggcmVwZWF0ICov
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmVxdmFyeSA9IChyZXBlYXRfbWlu
ID09IHJlcGVhdF9tYXgpPyAwIDogUkVRX1ZBUlk7CisgICAgICAgICAgICAgICAgcmVxdmFyeSA9
IChyZXBlYXRfbWluID09IHJlcGVhdF9tYXgpID8gMCA6IFJFUV9WQVJZOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIG9wX3R5cGUgPSAwOyAgICAgICAgICAgICAgICAgICAgLyog
RGVmYXVsdCBzaW5nbGUtY2hhciBvcCBjb2RlcyAqLwogICAgICAgICAgICAgICAgIApAQCAtMTY4
OCw3ICsxNjkwLDcgQEAgY29tcGlsZV9icmFuY2goaW50IG9wdGlvbnMsIGludCogYnJhY2tldAog
ICAgICAgICAgICAgICAgIHRlbXBjb2RlID0gY29kZTsKICAgICAgICAgICAgICAgICB0ZW1wcmVx
dmFyeSA9IGNkLnJlcV92YXJ5b3B0OyAgICAgLyogU2F2ZSB2YWx1ZSBiZWZvcmUgYnJhY2tldCAq
LwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICghY29tcGlsZV9icmFja2V0
KAorICAgICAgICAgICAgICAgIGlmICghY29tcGlsZUJyYWNrZXQoCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyYWNrZXRzLCAgICAgICAgICAgICAgICAgICAgIC8qIEV4dHJhY3RpbmcgYnJhY2tl
dCBjb3VudCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGVtcGNvZGUs
ICAgICAgICAgICAgICAgICAgICAvKiBXaGVyZSB0byBwdXQgY29kZSAodXBkYXRlZCkgKi8KQEAg
LTE4MTAsNyArMTgxMiw3IEBAIGNvbXBpbGVfYnJhbmNoKGludCBvcHRpb25zLCBpbnQqIGJyYWNr
ZXQKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICovCiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXZp
b3VzID0gKC1jID4gRVNDX2IgJiYgLWMgPD0gRVNDX3cpPyBjb2RlIDogTlVMTDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzID0gKC1jID4gRVNDX2IgJiYgLWMgPD0gRVNDX3cpID8g
Y29kZSA6IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY29kZSsrID0gLWM7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xOTIw
LDcgKzE5MjIsNyBAQCBSZXR1cm5zOiAgICAgIHRydWUgb24gc3VjY2VzcwogKi8KIAogc3RhdGlj
IGJvb2wKLWNvbXBpbGVfYnJhY2tldChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0cywgdXNjaGFy
KiogY29kZXB0ciwKK2NvbXBpbGVCcmFja2V0KGludCBvcHRpb25zLCBpbnQqIGJyYWNrZXRzLCB1
c2NoYXIqKiBjb2RlcHRyLAogICAgIGNvbnN0IFVDaGFyKiogcHRycHRyLCBjb25zdCBVQ2hhciog
cGF0dGVybkVuZCwgRXJyb3JDb2RlKiBlcnJvcmNvZGVwdHIsIGludCBza2lwYnl0ZXMsCiAgICAg
aW50KiBmaXJzdGJ5dGVwdHIsIGludCogcmVxYnl0ZXB0ciwgQ29tcGlsZURhdGEmIGNkKQogewpA
QCAtMTk0Myw3ICsxOTQ1LDcgQEAgY29tcGlsZV9icmFja2V0KGludCBvcHRpb25zLCBpbnQqIGJy
YWNrZQogICAgICAgICAKICAgICAgICAgaW50IGJyYW5jaGZpcnN0Ynl0ZSA9IFJFUV9VTlNFVDsK
ICAgICAgICAgaW50IGJyYW5jaHJlcWJ5dGUgPSBSRVFfVU5TRVQ7Ci0gICAgICAgIGlmICghY29t
cGlsZV9icmFuY2gob3B0aW9ucywgYnJhY2tldHMsICZjb2RlLCAmcHRyLCBwYXR0ZXJuRW5kLCBl
cnJvcmNvZGVwdHIsCisgICAgICAgIGlmICghY29tcGlsZUJyYW5jaChvcHRpb25zLCBicmFja2V0
cywgJmNvZGUsICZwdHIsIHBhdHRlcm5FbmQsIGVycm9yY29kZXB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYnJhbmNoZmlyc3RieXRlLCAmYnJhbmNocmVxYnl0ZSwgY2QpKSB7CiAg
ICAgICAgICAgICAqcHRycHRyID0gcHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjA0MCw3MSArMjA0Miw0MSBAQCBjb21waWxlX2JyYWNrZXQoaW50IG9wdGlvbnMsIGludCogYnJh
Y2tlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog
CiAvKiBUcnkgdG8gZmluZCBvdXQgaWYgdGhpcyBpcyBhbiBhbmNob3JlZCByZWd1bGFyIGV4cHJl
c3Npb24uIENvbnNpZGVyIGVhY2gKLWFsdGVybmF0aXZlIGJyYW5jaC4gSWYgdGhleSBhbGwgc3Rh
cnQgd2l0aCBPUF9TT0Qgb3IgT1BfQ0lSQywgb3Igd2l0aCBhIGJyYWNrZXQKLWFsbCBvZiB3aG9z
ZSBhbHRlcm5hdGl2ZXMgc3RhcnQgd2l0aCBPUF9TT0Qgb3IgT1BfQ0lSQyAocmVjdXJzZSBhZCBs
aWIpLCB0aGVuCi1pdCdzIGFuY2hvcmVkLiBIb3dldmVyLCBpZiB0aGlzIGlzIGEgbXVsdGlsaW5l
IHBhdHRlcm4sIHRoZW4gb25seSBPUF9TT0QKLWNvdW50cywgc2luY2UgT1BfQ0lSQyBjYW4gbWF0
Y2ggaW4gdGhlIG1pZGRsZS4KLQotV2UgY2FuIGFsc28gY29uc2lkZXIgYSByZWdleCB0byBiZSBh
bmNob3JlZCBpZiBPUF9TT00gc3RhcnRzIGFsbCBpdHMgYnJhbmNoZXMuCi1UaGlzIGlzIHRoZSBj
b2RlIGZvciBcRywgd2hpY2ggbWVhbnMgIm1hdGNoIGF0IHN0YXJ0IG9mIG1hdGNoIHBvc2l0aW9u
LCB0YWtpbmcKLWludG8gYWNjb3VudCB0aGUgbWF0Y2ggb2Zmc2V0Ii4KLQotQSBicmFuY2ggaXMg
YWxzbyBpbXBsaWNpdGx5IGFuY2hvcmVkIGlmIGl0IHN0YXJ0cyB3aXRoIC4qIGFuZCBET1RBTEwg
aXMgc2V0LAotYmVjYXVzZSB0aGF0IHdpbGwgdHJ5IHRoZSByZXN0IG9mIHRoZSBwYXR0ZXJuIGF0
IGFsbCBwb3NzaWJsZSBtYXRjaGluZyBwb2ludHMsCi1zbyB0aGVyZSBpcyBubyBwb2ludCB0cnlp
bmcgYWdhaW4uLi4uIGVyIC4uLi4KK2FsdGVybmF0aXZlIGJyYW5jaC4gSWYgdGhleSBhbGwgc3Rh
cnQgT1BfQ0lSQywgb3Igd2l0aCBhIGJyYWNrZXQKK2FsbCBvZiB3aG9zZSBhbHRlcm5hdGl2ZXMg
c3RhcnQgT1BfQ0lSQyAocmVjdXJzZSBhZCBsaWIpLCB0aGVuCitpdCdzIGFuY2hvcmVkLgogCi0u
Li4uIGV4Y2VwdCB3aGVuIHRoZSAuKiBhcHBlYXJzIGluc2lkZSBjYXB0dXJpbmcgcGFyZW50aGVz
ZXMsIGFuZCB0aGVyZSBpcyBhCi1zdWJzZXF1ZW50IGJhY2sgcmVmZXJlbmNlIHRvIHRob3NlIHBh
cmVudGhlc2VzLiBXZSBoYXZlbid0IGVub3VnaCBpbmZvcm1hdGlvbgotdG8gY2F0Y2ggdGhhdCBj
YXNlIHByZWNpc2VseS4KK0FyZ3VtZW50czoKKyAgY29kZSAgICAgICAgICBwb2ludHMgdG8gc3Rh
cnQgb2YgZXhwcmVzc2lvbiAodGhlIGJyYWNrZXQpCisgIGNhcHR1cmVNYXAgICAgYSBiaXRtYXAg
b2Ygd2hpY2ggYnJhY2tldHMgd2UgYXJlIGluc2lkZSB3aGlsZSB0ZXN0aW5nOyB0aGlzCisgICAg
ICAgICAgICAgICAgIGhhbmRsZXMgdXAgdG8gc3Vic3RyaW5nIDMxOyBhbGwgYnJhY2tldHMgYWZ0
ZXIgdGhhdCBzaGFyZQorICAgICAgICAgICAgICAgICB0aGUgemVybyBiaXQKKyAgYmFja3JlZk1h
cCAgICB0aGUgYmFjayByZWZlcmVuY2UgYml0bWFwCisqLwogCi1BdCBmaXJzdCwgdGhlIGJlc3Qg
d2UgY291bGQgZG8gd2FzIHRvIGRldGVjdCB3aGVuIC4qIHdhcyBpbiBjYXB0dXJpbmcgYnJhY2tl
dHMKLWFuZCB0aGUgaGlnaGVzdCBiYWNrIHJlZmVyZW5jZSB3YXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIHRoYXQgbGV2ZWwuCi1Ib3dldmVyLCBieSBrZWVwaW5nIGEgYml0bWFwIG9mIHRoZSBm
aXJzdCAzMSBiYWNrIHJlZmVyZW5jZXMsIHdlIGNhbiBjYXRjaCBzb21lCi1vZiB0aGUgbW9yZSBj
b21tb24gY2FzZXMgbW9yZSBwcmVjaXNlbHkuCitzdGF0aWMgYm9vbCBicmFuY2hJc0FuY2hvcmVk
KGNvbnN0IHVzY2hhciogY29kZSkKK3sKKyAgICBjb25zdCB1c2NoYXIqIHNjb2RlID0gZmlyc3RT
aWduaWZpY2FudE9wQ29kZShjb2RlKTsKKyAgICBpbnQgb3AgPSAqc2NvZGU7CiAKLUFyZ3VtZW50
czoKLSAgY29kZSAgICAgICAgICAgcG9pbnRzIHRvIHN0YXJ0IG9mIGV4cHJlc3Npb24gKHRoZSBi
cmFja2V0KQotICBvcHRpb25zICAgICAgICBwb2ludHMgdG8gdGhlIG9wdGlvbnMgc2V0dGluZwot
ICBicmFja2V0X21hcCAgICBhIGJpdG1hcCBvZiB3aGljaCBicmFja2V0cyB3ZSBhcmUgaW5zaWRl
IHdoaWxlIHRlc3Rpbmc7IHRoaXMKLSAgICAgICAgICAgICAgICAgIGhhbmRsZXMgdXAgdG8gc3Vi
c3RyaW5nIDMxOyBhZnRlciB0aGF0IHdlIGp1c3QgaGF2ZSB0byB0YWtlCi0gICAgICAgICAgICAg
ICAgICB0aGUgbGVzcyBwcmVjaXNlIGFwcHJvYWNoCi0gIGJhY2tyZWZfbWFwICAgIHRoZSBiYWNr
IHJlZmVyZW5jZSBiaXRtYXAKKyAgICAvKiBCcmFja2V0cyAqLworICAgIGlmIChvcCA+PSBPUF9C
UkEgfHwgb3AgPT0gT1BfQVNTRVJUIHx8IG9wID09IE9QX09OQ0UpCisgICAgICAgIHJldHVybiBi
cmFja2V0SXNBbmNob3JlZChzY29kZSk7CiAKLVJldHVybnM6ICAgICB0cnVlIG9yIGZhbHNlCi0q
LworICAgIC8qIENoZWNrIGZvciBleHBsaWNpdCBhbmNob3JpbmcgKi8gICAgCisgICAgcmV0dXJu
IG9wID09IE9QX0NJUkM7Cit9CiAKLXN0YXRpYyBib29sIGlzX2FuY2hvcmVkKGNvbnN0IHVzY2hh
ciogY29kZSwgaW50IG9wdGlvbnMsIHVuc2lnbmVkIGJyYWNrZXRfbWFwLCB1bnNpZ25lZCBiYWNr
cmVmX21hcCkKK3N0YXRpYyBib29sIGJyYWNrZXRJc0FuY2hvcmVkKGNvbnN0IHVzY2hhciogY29k
ZSkKIHsKICAgICBkbyB7Ci0gICAgICAgIGNvbnN0IHVzY2hhciogc2NvZGUgPSBmaXJzdFNpZ25p
ZmljYW50T3BDb2RlKGNvZGUgKyAxICsgTElOS19TSVpFKTsKLSAgICAgICAgaW50IG9wID0gKnNj
b2RlOwotICAgICAgICAKLSAgICAgICAgLyogQ2FwdHVyaW5nIGJyYWNrZXRzICovCi0gICAgICAg
IGlmIChvcCA+IE9QX0JSQSkgewotICAgICAgICAgICAgb3AgLT0gT1BfQlJBOwotICAgICAgICAg
ICAgaWYgKG9wID4gRVhUUkFDVF9CQVNJQ19NQVgpCi0gICAgICAgICAgICAgICAgb3AgPSBnZXQy
Qnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoc2NvZGUsIDIgKyBMSU5LX1NJWkUpOwotICAgICAgICAg
ICAgaW50IG5ld19tYXAgPSBicmFja2V0X21hcCB8ICgob3AgPCAzMik/ICgxIDw8IG9wKSA6IDEp
OwotICAgICAgICAgICAgaWYgKCFpc19hbmNob3JlZChzY29kZSwgb3B0aW9ucywgbmV3X21hcCwg
YmFja3JlZl9tYXApKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgLyogT3RoZXIgYnJhY2tldHMgKi8KLSAgICAgICAgZWxzZSBpZiAo
b3AgPT0gT1BfQlJBIHx8IG9wID09IE9QX0FTU0VSVCB8fCBvcCA9PSBPUF9PTkNFKSB7Ci0gICAg
ICAgICAgICBpZiAoIWlzX2FuY2hvcmVkKHNjb2RlLCBvcHRpb25zLCBicmFja2V0X21hcCwgYmFj
a3JlZl9tYXApKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIC8qIENoZWNrIGZvciBleHBsaWNpdCBhbmNob3JpbmcgKi8KLSAgICAgICAgCi0gICAgICAg
IH0gZWxzZSBpZiAoKG9wdGlvbnMgJiBNYXRjaEFjcm9zc011bHRpcGxlTGluZXNPcHRpb24pIHx8
IG9wICE9IE9QX0NJUkMpCisgICAgICAgIGlmICghYnJhbmNoSXNBbmNob3JlZChjb2RlICsgMSAr
IExJTktfU0laRSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNvZGUgKz0g
Z2V0T3Bjb2RlVmFsdWVBdE9mZnNldChjb2RlLCAxKTsKICAgICB9IHdoaWxlICgqY29kZSA9PSBP
UF9BTFQpOyAgIC8qIExvb3AgZm9yIGVhY2ggYWx0ZXJuYXRpdmUgKi8KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqICAgICAgICAgQ2hlY2sgZm9yIHN0YXJ0aW5nIHdpdGggXiBvciAuKiAgICAgICAg
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAg
LTIxMTIsNTYgKzIwODQsNTkgQEAgc3RhdGljIGJvb2wgaXNfYW5jaG9yZWQoY29uc3QgdXNjaGFy
KiBjbwogLyogVGhpcyBpcyBjYWxsZWQgdG8gZmluZCBvdXQgaWYgZXZlcnkgYnJhbmNoIHN0YXJ0
cyB3aXRoIF4gb3IgLiogc28gdGhhdAogImZpcnN0IGNoYXIiIHByb2Nlc3NpbmcgY2FuIGJlIGRv
bmUgdG8gc3BlZWQgdGhpbmdzIHVwIGluIG11bHRpbGluZQogbWF0Y2hpbmcgYW5kIGZvciBub24t
RE9UQUxMIHBhdHRlcm5zIHRoYXQgc3RhcnQgd2l0aCAuKiAod2hpY2ggbXVzdCBzdGFydCBhdAot
dGhlIGJlZ2lubmluZyBvciBhZnRlciBcbikuIEFzIGluIHRoZSBjYXNlIG9mIGlzX2FuY2hvcmVk
KCkgKHNlZSBhYm92ZSksIHdlCi1oYXZlIHRvIHRha2UgYWNjb3VudCBvZiBiYWNrIHJlZmVyZW5j
ZXMgdG8gY2FwdHVyaW5nIGJyYWNrZXRzIHRoYXQgY29udGFpbiAuKgotYmVjYXVzZSBpbiB0aGF0
IGNhc2Ugd2UgY2FuJ3QgbWFrZSB0aGUgYXNzdW1wdGlvbi4KK3RoZSBiZWdpbm5pbmcgb3IgYWZ0
ZXIgXG4pCisKKy4uLi4gZXhjZXB0IHdoZW4gdGhlIC4qIGFwcGVhcnMgaW5zaWRlIGNhcHR1cmlu
ZyBwYXJlbnRoZXNlcywgYW5kIHRoZXJlIGlzIGEKK3N1YnNlcXVlbnQgYmFjayByZWZlcmVuY2Ug
dG8gdGhvc2UgcGFyZW50aGVzZXMuIEJ5IGtlZXBpbmcgYSBiaXRtYXAgb2YgdGhlCitmaXJzdCAz
MSBiYWNrIHJlZmVyZW5jZXMsIHdlIGNhbiBjYXRjaCBzb21lIG9mIHRoZSBtb3JlIGNvbW1vbiBj
YXNlcyBtb3JlCitwcmVjaXNlbHk7IGFsbCB0aGUgZ3JlYXRlciBiYWNrIHJlZmVyZW5jZXMgc2hh
cmUgYSBzaW5nbGUgYml0LgogCiBBcmd1bWVudHM6Ci0gIGNvZGUgICAgICAgICAgIHBvaW50cyB0
byBzdGFydCBvZiBleHByZXNzaW9uICh0aGUgYnJhY2tldCkKLSAgYnJhY2tldF9tYXAgICAgYSBi
aXRtYXAgb2Ygd2hpY2ggYnJhY2tldHMgd2UgYXJlIGluc2lkZSB3aGlsZSB0ZXN0aW5nOyB0aGlz
Ci0gICAgICAgICAgICAgICAgICBoYW5kbGVzIHVwIHRvIHN1YnN0cmluZyAzMTsgYWZ0ZXIgdGhh
dCB3ZSBqdXN0IGhhdmUgdG8gdGFrZQotICAgICAgICAgICAgICAgICAgdGhlIGxlc3MgcHJlY2lz
ZSBhcHByb2FjaAotICBiYWNrcmVmX21hcCAgICB0aGUgYmFjayByZWZlcmVuY2UgYml0bWFwCisg
IGNvZGUgICAgICAgICAgcG9pbnRzIHRvIHN0YXJ0IG9mIGV4cHJlc3Npb24gKHRoZSBicmFja2V0
KQorICBjYXB0dXJlTWFwICAgIGEgYml0bWFwIG9mIHdoaWNoIGJyYWNrZXRzIHdlIGFyZSBpbnNp
ZGUgd2hpbGUgdGVzdGluZzsgdGhpcworICAgICAgICAgICAgICAgICBoYW5kbGVzIHVwIHRvIHN1
YnN0cmluZyAzMTsgYWxsIGJyYWNrZXRzIGFmdGVyIHRoYXQgc2hhcmUKKyAgICAgICAgICAgICAg
ICAgdGhlIHplcm8gYml0CisgIGJhY2tyZWZNYXAgICAgdGhlIGJhY2sgcmVmZXJlbmNlIGJpdG1h
cAogKi8KIAotc3RhdGljIGJvb2wgY2FuQXBwbHlGaXJzdENoYXJPcHRpbWl6YXRpb24oY29uc3Qg
dXNjaGFyKiBjb2RlLCB1bnNpZ25lZCBicmFja2V0X21hcCwgdW5zaWduZWQgYmFja3JlZl9tYXAp
CitzdGF0aWMgYm9vbCBicmFuY2hOZWVkc0xpbmVTdGFydChjb25zdCB1c2NoYXIqIGNvZGUsIHVu
c2lnbmVkIGNhcHR1cmVNYXAsIHVuc2lnbmVkIGJhY2tyZWZNYXApCit7CisgICAgY29uc3QgdXNj
aGFyKiBzY29kZSA9IGZpcnN0U2lnbmlmaWNhbnRPcENvZGUoY29kZSk7CisgICAgaW50IG9wID0g
KnNjb2RlOworICAgIAorICAgIC8qIENhcHR1cmluZyBicmFja2V0cyAqLworICAgIGlmIChvcCA+
IE9QX0JSQSkgeworICAgICAgICBpbnQgY2FwdHVyZU51bSA9IG9wIC0gT1BfQlJBOworICAgICAg
ICBpZiAoY2FwdHVyZU51bSA+IEVYVFJBQ1RfQkFTSUNfTUFYKQorICAgICAgICAgICAgY2FwdHVy
ZU51bSA9IGdldDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNldChzY29kZSwgMiArIExJTktfU0laRSk7
CisgICAgICAgIGludCBicmFja2V0TWFzayA9IChjYXB0dXJlTnVtIDwgMzIpID8gKDEgPDwgY2Fw
dHVyZU51bSkgOiAxOworICAgICAgICByZXR1cm4gYnJhY2tldE5lZWRzTGluZVN0YXJ0KHNjb2Rl
LCBjYXB0dXJlTWFwIHwgYnJhY2tldE1hc2ssIGJhY2tyZWZNYXApOworICAgIH0KKyAgICAKKyAg
ICAvKiBPdGhlciBicmFja2V0cyAqLworICAgIGlmIChvcCA9PSBPUF9CUkEgfHwgb3AgPT0gT1Bf
QVNTRVJUIHx8IG9wID09IE9QX09OQ0UpCisgICAgICAgIHJldHVybiBicmFja2V0TmVlZHNMaW5l
U3RhcnQoc2NvZGUsIGNhcHR1cmVNYXAsIGJhY2tyZWZNYXApOworICAgIAorICAgIC8qIC4qIG1l
YW5zICJzdGFydCBhdCBzdGFydCBvciBhZnRlciBcbiIgaWYgaXQgaXNuJ3QgaW4gYnJhY2tldHMg
dGhhdAorICAgICBtYXkgYmUgcmVmZXJlbmNlZC4gKi8KKyAgICAKKyAgICBpZiAob3AgPT0gT1Bf
VFlQRVNUQVIgfHwgb3AgPT0gT1BfVFlQRU1JTlNUQVIpCisgICAgICAgIHJldHVybiBzY29kZVsx
XSA9PSBPUF9OT1RfTkVXTElORSAmJiAhKGNhcHR1cmVNYXAgJiBiYWNrcmVmTWFwKTsKKworICAg
IC8qIEV4cGxpY2l0IF4gKi8KKyAgICByZXR1cm4gb3AgPT0gT1BfQ0lSQzsKK30KKworc3RhdGlj
IGJvb2wgYnJhY2tldE5lZWRzTGluZVN0YXJ0KGNvbnN0IHVzY2hhciogY29kZSwgdW5zaWduZWQg
Y2FwdHVyZU1hcCwgdW5zaWduZWQgYmFja3JlZk1hcCkKIHsKICAgICBkbyB7Ci0gICAgICAgIGNv
bnN0IHVzY2hhciogc2NvZGUgPSBmaXJzdFNpZ25pZmljYW50T3BDb2RlKGNvZGUgKyAxICsgTElO
S19TSVpFKTsKLSAgICAgICAgaW50IG9wID0gKnNjb2RlOwotICAgICAgICAKLSAgICAgICAgLyog
Q2FwdHVyaW5nIGJyYWNrZXRzICovCi0gICAgICAgIGlmIChvcCA+IE9QX0JSQSkgewotICAgICAg
ICAgICAgb3AgLT0gT1BfQlJBOwotICAgICAgICAgICAgaWYgKG9wID4gRVhUUkFDVF9CQVNJQ19N
QVgpCi0gICAgICAgICAgICAgICAgb3AgPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoc2Nv
ZGUsIDIrTElOS19TSVpFKTsKLSAgICAgICAgICAgIGludCBuZXdfbWFwID0gYnJhY2tldF9tYXAg
fCAoKG9wIDwgMzIpPyAoMSA8PCBvcCkgOiAxKTsKLSAgICAgICAgICAgIGlmICghY2FuQXBwbHlG
aXJzdENoYXJPcHRpbWl6YXRpb24oc2NvZGUsIG5ld19tYXAsIGJhY2tyZWZfbWFwKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8q
IE90aGVyIGJyYWNrZXRzICovCi0gICAgICAgIGVsc2UgaWYgKG9wID09IE9QX0JSQSB8fCBvcCA9
PSBPUF9BU1NFUlQgfHwgb3AgPT0gT1BfT05DRSkgewotICAgICAgICAgICAgaWYgKCFjYW5BcHBs
eUZpcnN0Q2hhck9wdGltaXphdGlvbihzY29kZSwgYnJhY2tldF9tYXAsIGJhY2tyZWZfbWFwKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICAvKiAuKiBt
ZWFucyAic3RhcnQgYXQgc3RhcnQgb3IgYWZ0ZXIgXG4iIGlmIGl0IGlzbid0IGluIGJyYWNrZXRz
IHRoYXQKLSAgICAgICAgIG1heSBiZSByZWZlcmVuY2VkLiAqLwotICAgICAgICAKLSAgICAgICAg
fSBlbHNlIGlmIChvcCA9PSBPUF9UWVBFU1RBUiB8fCBvcCA9PSBPUF9UWVBFTUlOU1RBUikgewot
ICAgICAgICAgICAgaWYgKHNjb2RlWzFdICE9IE9QX05PVF9ORVdMSU5FIHx8IChicmFja2V0X21h
cCAmIGJhY2tyZWZfbWFwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZSBpZiAob3AgIT0gT1BfQ0lSQykgLyogQ2hlY2sgZm9yIGV4cGxpY2l0IGNpcmN1bWZs
ZXggKi8KKyAgICAgICAgaWYgKCFicmFuY2hOZWVkc0xpbmVTdGFydChjb2RlICsgMSArIExJTktf
U0laRSwgY2FwdHVyZU1hcCwgYmFja3JlZk1hcCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIAotICAgICAgICAvKiBNb3ZlIG9uIHRvIHRoZSBuZXh0IGFsdGVybmF0aXZlICov
Ci0gICAgICAgIAogICAgICAgICBjb2RlICs9IGdldE9wY29kZVZhbHVlQXRPZmZzZXQoY29kZSwg
MSk7CiAgICAgfSB3aGlsZSAoKmNvZGUgPT0gT1BfQUxUKTsgIC8qIExvb3AgZm9yIGVhY2ggYWx0
ZXJuYXRpdmUgKi8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCiAvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICBDaGVjayBmb3IgYXNzZXJ0
ZWQgZml4ZWQgZmlyc3QgY2hhciAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCkBAIC0yMjk2LDcgKzIyNzEsNyBAQCBzdGF0aWMgaW50IGNh
bGN1bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKGMgPD0gLUVTQ19SRUYpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHJlZm51
bSA9IC1jIC0gRVNDX1JFRjsKLSAgICAgICAgICAgICAgICAgICAgY2QuYmFja3JlZl9tYXAgfD0g
KHJlZm51bSA8IDMyKT8gKDEgPDwgcmVmbnVtKSA6IDE7CisgICAgICAgICAgICAgICAgICAgIGNk
LmJhY2tyZWZNYXAgfD0gKHJlZm51bSA8IDMyKSA/ICgxIDw8IHJlZm51bSkgOiAxOwogICAgICAg
ICAgICAgICAgICAgICBpZiAocmVmbnVtID4gY2QudG9wX2JhY2tyZWYpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjZC50b3BfYmFja3JlZiA9IHJlZm51bTsKICAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoICs9IDI7ICAgLyogRm9yIHNpbmdsZSBiYWNrIHJlZmVyZW5jZSAqLwpAQCAtMjM1Miw3
ICsyMzI3LDcgQEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndAogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1pblJlcGVhdHMgPiAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCArPSAzICsgbGFzdGl0ZW1sZW5ndGg7CiAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGxhc3RpdGVtbGVuZ3RoICsg
KChtYXhSZXBlYXRzID4gMCk/IDMgOiAxKTsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9
IGxhc3RpdGVtbGVuZ3RoICsgKChtYXhSZXBlYXRzID4gMCkgPyAzIDogMSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzYWZlbHlDaGVj
a05leHRDaGFyKHB0ciwgcGF0dGVybkVuZCwgJz8nKSkKQEAgLTI0OTcsNyArMjQ3Miw3IEBAIHN0
YXRpYyBpbnQgY2FsY3VsYXRlQ29tcGlsZWRQYXR0ZXJuTGVuZ3QKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBBbiBleHRyYSBpdGVtIGlzIG5lZWRlZCAqLwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAxICsgX3BjcmVfb3JkMnV0Zjgob2NjLCBi
dWZmZXIpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG9jYyA9
PSBvY2QpPyAwIDogX3BjcmVfb3JkMnV0Zjgob2NkLCBidWZmZXIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKG9jYyA9PSBvY2QpID8gMCA6IF9wY3JlX29yZDJ1
dGY4KG9jZCwgYnVmZmVyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkBAIC0yODAwLDEwICsyNzc1LDEwIEBAIEpTUmVnRXhwKiBqc1JlZ0V4cENv
bXBpbGUoY29uc3QgVUNoYXIqIHAKICAgICBpbnQgZmlyc3RieXRlLCByZXFieXRlOwogICAgIGlu
dCBicmFja2V0Q291bnQgPSAwOwogICAgIGlmICghY2QubmVlZE91dGVyQnJhY2tldCkKLSAgICAg
ICAgY29tcGlsZV9icmFuY2gocmUtPm9wdGlvbnMsICZicmFja2V0Q291bnQsICZjb2RlLCAmcHRy
LCBwYXR0ZXJuRW5kLCAmZXJyb3Jjb2RlLCAmZmlyc3RieXRlLCAmcmVxYnl0ZSwgY2QpOworICAg
ICAgICBjb21waWxlQnJhbmNoKHJlLT5vcHRpb25zLCAmYnJhY2tldENvdW50LCAmY29kZSwgJnB0
ciwgcGF0dGVybkVuZCwgJmVycm9yY29kZSwgJmZpcnN0Ynl0ZSwgJnJlcWJ5dGUsIGNkKTsKICAg
ICBlbHNlIHsKICAgICAgICAgKmNvZGUgPSBPUF9CUkE7Ci0gICAgICAgIGNvbXBpbGVfYnJhY2tl
dChyZS0+b3B0aW9ucywgJmJyYWNrZXRDb3VudCwgJmNvZGUsICZwdHIsIHBhdHRlcm5FbmQsICZl
cnJvcmNvZGUsIDAsICZmaXJzdGJ5dGUsICZyZXFieXRlLCBjZCk7CisgICAgICAgIGNvbXBpbGVC
cmFja2V0KHJlLT5vcHRpb25zLCAmYnJhY2tldENvdW50LCAmY29kZSwgJnB0ciwgcGF0dGVybkVu
ZCwgJmVycm9yY29kZSwgMCwgJmZpcnN0Ynl0ZSwgJnJlcWJ5dGUsIGNkKTsKICAgICB9CiAgICAg
cmUtPnRvcF9icmFja2V0ID0gYnJhY2tldENvdW50OwogICAgIHJlLT50b3BfYmFja3JlZiA9IGNk
LnRvcF9iYWNrcmVmOwpAQCAtMjg0NSwyMCArMjgyMCwxOCBAQCBKU1JlZ0V4cCoganNSZWdFeHBD
b21waWxlKGNvbnN0IFVDaGFyKiBwCiAgICAgIHN0YXJ0IHdpdGggXi4gYW5kIGFsc28gd2hlbiBh
bGwgYnJhbmNoZXMgc3RhcnQgd2l0aCAuKiBmb3Igbm9uLURPVEFMTCBtYXRjaGVzLgogICAgICAq
LwogICAgIAotICAgIGlmIChpc19hbmNob3JlZChjb2Rlc3RhcnQsIHJlLT5vcHRpb25zLCAwLCBj
ZC5iYWNrcmVmX21hcCkpCisgICAgaWYgKChjZC5uZWVkT3V0ZXJCcmFja2V0ID8gYnJhY2tldElz
QW5jaG9yZWQgOiBicmFuY2hJc0FuY2hvcmVkKShjb2Rlc3RhcnQpKQogICAgICAgICByZS0+b3B0
aW9ucyB8PSBJc0FuY2hvcmVkT3B0aW9uOwogICAgIGVsc2UgewogICAgICAgICBpZiAoZmlyc3Ri
eXRlIDwgMCkKICAgICAgICAgICAgIGZpcnN0Ynl0ZSA9IGZpbmRfZmlyc3Rhc3NlcnRlZGNoYXIo
Y29kZXN0YXJ0LCByZS0+b3B0aW9ucywgZmFsc2UpOwotICAgICAgICBpZiAoZmlyc3RieXRlID49
IDApICAgLyogUmVtb3ZlIGNhc2VsZXNzIGZsYWcgZm9yIG5vbi1jYXNlYWJsZSBjaGFycyAqLwot
ICAgICAgICB7CisgICAgICAgIGlmIChmaXJzdGJ5dGUgPj0gMCkgewogICAgICAgICAgICAgaW50
IGNoID0gZmlyc3RieXRlICYgMjU1OwogICAgICAgICAgICAgaWYgKGNoIDwgMTI3KSB7CiAgICAg
ICAgICAgICAgICAgcmUtPmZpcnN0X2J5dGUgPSAoKGZpcnN0Ynl0ZSAmIFJFUV9JR05PUkVfQ0FT
RSkgJiYgZmxpcENhc2UoY2gpID09IGNoKSA/IGNoIDogZmlyc3RieXRlOwogICAgICAgICAgICAg
ICAgIHJlLT5vcHRpb25zIHw9IFVzZUZpcnN0Qnl0ZU9wdGltaXphdGlvbk9wdGlvbjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjYW5BcHBseUZpcnN0Q2hhck9w
dGltaXphdGlvbihjb2Rlc3RhcnQsIDAsIGNkLmJhY2tyZWZfbWFwKSkKKyAgICAgICAgfSBlbHNl
IGlmICgoY2QubmVlZE91dGVyQnJhY2tldCA/IGJyYWNrZXROZWVkc0xpbmVTdGFydCA6IGJyYW5j
aE5lZWRzTGluZVN0YXJ0KShjb2Rlc3RhcnQsIDAsIGNkLmJhY2tyZWZNYXApKQogICAgICAgICAg
ICAgcmUtPm9wdGlvbnMgfD0gVXNlTXVsdGlMaW5lRmlyc3RCeXRlT3B0aW1pemF0aW9uT3B0aW9u
OwogICAgIH0KICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAJKHJldmlzaW9u
IDI4NTcyKQorKysgSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTksNyArNDE5LDcgQEAgc3RhdGljIGludCBtYXRjaChjb25zdCBVQ2hhciogc3Vi
amVjdFB0cgogICAgIC8qIE9uZS10aW1lIHNldHVwIG9mIHRoZSBvcGNvZGUganVtcCB0YWJsZS4g
Ki8KICNpZmRlZiBVU0VfQ09NUFVURURfR09UT19GT1JfTUFUQ0hfT1BDT0RFX0xPT1AKICAgICBm
b3IgKGludCBpID0gMjU1OyAhb3Bjb2RlX2p1bXBfdGFibGVbaV07IGktLSkKLSAgICAgICAgICAg
IG9wY29kZV9qdW1wX3RhYmxlW2ldID0gJiZDQVBUVVJJTkdfQlJBQ0tFVDsKKyAgICAgICAgb3Bj
b2RlX2p1bXBfdGFibGVbaV0gPSAmJkNBUFRVUklOR19CUkFDS0VUOwogI2VuZGlmCiAgICAgCiAj
aWZkZWYgVVNFX0NPTVBVVEVEX0dPVE9fRk9SX01BVENIX1JFQ1VSU0lPTgpAQCAtMjA3NywxMiAr
MjA3Nyw4IEBAIGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqIHJlLAogICAgICAg
ICAKICAgICAgICAgaW50IHJldHVybkNvZGUgPSBtYXRjaChzdGFydF9tYXRjaCwgc3RhcnRfY29k
ZSwgMiwgbWF0Y2hfYmxvY2spOwogICAgICAgICAKLSAgICAgICAgLyogV2hlbiB0aGUgcmVzdWx0
IGlzIG5vIG1hdGNoLCBpZiB0aGUgc3ViamVjdCdzIGZpcnN0IGNoYXJhY3RlciB3YXMgYQotICAg
ICAgICAgbmV3bGluZSBhbmQgdGhlIFBDUkVfRklSU1RMSU5FIG9wdGlvbiBpcyBzZXQsIGJyZWFr
ICh3aGljaCB3aWxsIHJldHVybgotICAgICAgICAgUENSRV9FUlJPUl9OT01BVENIKS4gVGhlIG9w
dGlvbiByZXF1ZXN0cyB0aGF0IGEgbWF0Y2ggb2NjdXIgYmVmb3JlIHRoZSBmaXJzdAotICAgICAg
ICAgbmV3bGluZSBpbiB0aGUgc3ViamVjdC4gT3RoZXJ3aXNlLCBhZHZhbmNlIHRoZSBwb2ludGVy
IHRvIHRoZSBuZXh0IGNoYXJhY3RlcgotICAgICAgICAgYW5kIGNvbnRpbnVlIC0gYnV0IHRoZSBj
b250aW51YXRpb24gd2lsbCBhY3R1YWxseSBoYXBwZW4gb25seSB3aGVuIHRoZQotICAgICAgICAg
cGF0dGVybiBpcyBub3QgYW5jaG9yZWQuICovCisgICAgICAgIC8qIFdoZW4gdGhlIHJlc3VsdCBp
cyBubyBtYXRjaCwgYWR2YW5jZSB0aGUgcG9pbnRlciB0byB0aGUgbmV4dCBjaGFyYWN0ZXIKKyAg
ICAgICAgIGFuZCBjb250aW51ZS4gKi8KICAgICAgICAgCiAgICAgICAgIGlmIChyZXR1cm5Db2Rl
ID09IE1BVENIX05PTUFUQ0gpIHsKICAgICAgICAgICAgIHN0YXJ0X21hdGNoKys7Cg==
</data>
<flag name="review"
          id="7675"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>