<?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>113554</bug_id>
          
          <creation_ts>2013-03-28 20:02:03 -0700</creation_ts>
          <short_desc>Simplified bytecode generation by unforking &quot;condition context&quot; codegen</short_desc>
          <delta_ts>2013-03-29 12:10:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>865971</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-28 20:02:03 -0700</bug_when>
    <thetext>Simplified bytecode generation by unforking &quot;condition context&quot; codegen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865972</commentid>
    <comment_count>1</comment_count>
      <attachid>195691</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-28 20:11:23 -0700</bug_when>
    <thetext>Created attachment 195691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865975</commentid>
    <comment_count>2</comment_count>
      <attachid>195691</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-03-28 20:22:36 -0700</bug_when>
    <thetext>Comment on attachment 195691
Patch

Given you&apos;re doing this work in a bunch of place anyway, can we change from a bool to an enum for the fallsthrough parameter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865981</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-28 21:03:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 195691 [details])
&gt; Given you&apos;re doing this work in a bunch of place anyway, can we change from a bool to an enum for the fallsthrough parameter?

Seems a bit far afield, but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865982</commentid>
    <comment_count>4</comment_count>
      <attachid>195694</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-28 21:05:14 -0700</bug_when>
    <thetext>Created attachment 195694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866257</commentid>
    <comment_count>5</comment_count>
      <attachid>195694</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-29 11:40:52 -0700</bug_when>
    <thetext>Comment on attachment 195694
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866283</commentid>
    <comment_count>6</comment_count>
      <attachid>195694</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-29 12:10:26 -0700</bug_when>
    <thetext>Comment on attachment 195694
Patch

Clearing flags on attachment: 195694

Committed r147234: &lt;http://trac.webkit.org/changeset/147234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866285</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-29 12:10:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195691</attachid>
            <date>2013-03-28 20:11:23 -0700</date>
            <delta_ts>2013-03-28 21:05:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113554-20130328201120.patch</filename>
            <type>text/plain</type>
            <size>13232</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEzLTAzLTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2ltcGxpZmllZCBieXRlY29kZSBnZW5lcmF0aW9uIGJ5IHVuZm9ya2luZyAiY29uZGl0aW9u
IGNvbnRleHQiIGNvZGVnZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vdywgYSBub2RlIHRoYXQgZXN0YWJsaXNoZXMgYSBjb25kaXRpb24gY29udGV4
dCBjYW4gYWx3YXlzIGFzayBpdHMgY2hpbGQKKyAgICAgICAgbm9kZXMgdG8gZ2VuZXJhdGUgaW50
byB0aGF0IGNvbnRleHQuCisKKyAgICAgICAgVGhpcyBoYXMgYSBmZXcgYWR2YW50YWdlczoKKwor
ICAgICAgICAoKikgUmVtb3ZlcyBhIGJ1bmNoIG9mIGNvZGU7CisKKyAgICAgICAgKCopIE9wdGlt
aXplcyBhIGZldyBtaXNzZWQgY2FzZXMgbGlrZSAiaWYgKCEoeCA8IDIpKSIsICJpZiAoISF4KSIs
IGFuZAorICAgICAgICAiaWYgKCF4IHx8ICF5KSI7CisKKyAgICAgICAgKCopIFBhdmVzIHRoZSB3
YXkgdG8gcmVtb3ZpbmcgbW9yZSBvcGNvZGVzLgorCisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2Rl
Lmg6CisgICAgICAgIChKU0MpOiBTZXBhcmF0ZWQgb3V0IHRoZSBicmFuY2hpbmcgb3Bjb2RlcyBm
b3IgY2xhcml0eS4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4
dCk6IEFsbCBleHByZXNzaW9ucworICAgICAgICBjYW4gYmUgZW1pdHRlZCBpbiBhIGNvbmRpdGlv
biBjb250ZXh0IG5vdyAtLSB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcworICAgICAgICB0byBicmFu
Y2ggYmFzZWQgb24gdGhlIGV4cHJlc3Npb24ncyB2YWx1ZS4KKworICAgICAgICAoSlNDOjpMb2dp
Y2FsTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpT
Qzo6TG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAg
ICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
Zk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6
OkV4cHJlc3Npb25Ob2RlOjppc1N1YnRyYWN0KToKKyAgICAgICAgKEV4cHJlc3Npb25Ob2RlKToK
KyAgICAgICAgKExvZ2ljYWxOb3ROb2RlKToKKyAgICAgICAgKExvZ2ljYWxPcE5vZGUpOiBSZW1v
dmVkIGxvdHMgb2YgY29kZSBmb3IgaGFuZGxpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgdGhhdCBj
b3VsZG4ndCBnZW5lcmF0ZSBpbnRvIGEgY29uZGl0aW9uIGNvbnRleHQgYmVjYXVzZSBhbGwgZXhw
cmVzc2lvbnMKKyAgICAgICAgY2FuIG5vdy4KKwogMjAxMy0wMy0yOCAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZpZWQgdGhlIGJ5dGVjb2RlIGJ5
IHJlbW92aW5nIG9wX2xvb3AgYW5kIG9wX2xvb3BfaWZfKgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTQ3MTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcy
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ob3Bfam5sZXNzZXEsIDQpIFwKICAgICBt
YWNybyhvcF9qbmdyZWF0ZXIsIDQpIFwKICAgICBtYWNybyhvcF9qbmdyZWF0ZXJlcSwgNCkgXAor
ICAgIFwKICAgICBtYWNybyhvcF9sb29wX2hpbnQsIDEpIFwKKyAgICBcCiAgICAgbWFjcm8ob3Bf
c3dpdGNoX2ltbSwgNCkgXAogICAgIG1hY3JvKG9wX3N3aXRjaF9jaGFyLCA0KSBcCiAgICAgbWFj
cm8ob3Bfc3dpdGNoX3N0cmluZywgNCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTQ3MTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBiZWNh
dXNlIHRoZSBhc3NpZ25tZW50IG5vZGUsICJ4ID0iLCBwYXNzZXMgclt4XSBhcyBkc3QgdG8gdGhl
IG51bWJlciBub2RlLCAiMSIuCiAqLwogCit2b2lkIEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNv
ZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgTGFiZWwq
IHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgYm9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1
ZSkKK3sKKyAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodGhpcyk7
CisgICAgaWYgKGZhbGxUaHJvdWdoTWVhbnNUcnVlKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZkZhbHNlKHJlc3VsdCwgZmFsc2VUYXJnZXQpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKHJlc3VsdCwgdHJ1ZVRhcmdldCk7Cit9CisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YTo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtOTIzLDggKzkzMiw2IEBAIFJlZ2lzdGVySUQq
IEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUKIAogdm9pZCBMb2dpY2FsTm90Tm9kZTo6ZW1p
dEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wgZmFsbFRocm91Z2hN
ZWFuc1RydWUpCiB7Ci0gICAgQVNTRVJUKGV4cHIoKS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVn
ZW4oKSk7Ci0KICAgICAvLyByZXZlcnNlIHRoZSB0cnVlIGFuZCBmYWxzZSB0YXJnZXRzCiAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KGV4cHIoKSwgZmFsc2VUYXJnZXQs
IHRydWVUYXJnZXQsICFmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiB9CkBAIC0xMTY2LDMwICsxMTcz
LDE0IEBAIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZSgKIAogdm9pZCBM
b2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwg
Ym9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSkKIHsKLSAgICBpZiAobV9leHByMS0+aGFzQ29uZGl0
aW9uQ29udGV4dENvZGVnZW4oKSkgewotICAgICAgICBSZWZQdHI8TGFiZWw+IGFmdGVyRXhwcjEg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dp
Y2FsQW5kKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwcjEsIGFmdGVyRXhwcjEuZ2V0KCksIGZhbHNlVGFyZ2V0LCB0cnVlKTsKLSAgICAgICAg
ZWxzZSAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dCht
X2V4cHIxLCB0cnVlVGFyZ2V0LCBhZnRlckV4cHIxLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJFeHByMS5nZXQoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogdGVtcCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIxKTsKLSAgICAg
ICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dpY2FsQW5kKQotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZGYWxzZSh0ZW1wLCBmYWxzZVRhcmdldCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLCB0cnVlVGFyZ2V0KTsKLSAgICB9
CisgICAgUmVmUHRyPExhYmVsPiBhZnRlckV4cHIxID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Cisg
ICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dpY2FsQW5kKQorICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMSwgYWZ0ZXJFeHByMS5nZXQoKSwgZmFsc2VU
YXJnZXQsIHRydWUpOworICAgIGVsc2UgCisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChtX2V4cHIxLCB0cnVlVGFyZ2V0LCBhZnRlckV4cHIxLmdldCgpLCBmYWxz
ZSk7CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChhZnRlckV4cHIxLmdldCgpKTsKIAotICAgIGlm
IChtX2V4cHIyLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQotICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdHJ1ZVRhcmdldCwgZmFsc2VU
YXJnZXQsIGZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUmVnaXN0
ZXJJRCogdGVtcCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKLSAgICAgICAgaWYgKGZh
bGxUaHJvdWdoTWVhbnNUcnVlKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxz
ZSh0ZW1wLCBmYWxzZVRhcmdldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLCB0cnVlVGFyZ2V0KTsKLSAgICB9CisgICAgZ2VuZXJhdG9y
LmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwcjIsIHRydWVUYXJnZXQsIGZhbHNlVGFy
Z2V0LCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBDb25kaXRpb25hbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0xMjAwLDE0ICsxMTkxLDkgQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0
Qnl0ZWNvZAogICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAKLSAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7Ci0g
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChiZWZvcmVUaGVuLmdldCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBS
ZWdpc3RlcklEKiBjb25kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fbG9naWNhbCk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoY29uZCwgYmVmb3JlRWxzZS5nZXQoKSk7Ci0gICAg
fQorICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwor
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2xvZ2ljYWwsIGJlZm9y
ZVRoZW4uZ2V0KCksIGJlZm9yZUVsc2UuZ2V0KCksIHRydWUpOworICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoYmVmb3JlVGhlbi5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0
LmdldCgpLCBtX2V4cHIxKTsKICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoYWZ0ZXJFbHNlLmdldCgp
KTsKQEAgLTE1NDMsMTQgKzE1MjksOSBAQCBSZWdpc3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kCiAgICAgCiAgICAgUmVmUHRyPExhYmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKIAotICAgIGlmIChtX2NvbmRpdGlvbi0+aGFzQ29uZGl0aW9uQ29udGV4dENv
ZGVnZW4oKSkgewotICAgICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fY29uZGl0aW9uLCBiZWZvcmVUaGVuLmdldCgpLCBhZnRlclRoZW4uZ2V0KCksIHRydWUpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGNvbmQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9jb25k
aXRpb24pOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGNvbmQsIGFmdGVyVGhl
bi5nZXQoKSk7Ci0gICAgfQorICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dCht
X2NvbmRpdGlvbiwgYmVmb3JlVGhlbi5nZXQoKSwgYWZ0ZXJUaGVuLmdldCgpLCB0cnVlKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9pZkJsb2NrKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVy
VGhlbi5nZXQoKSk7CkBAIC0xNTY4LDE0ICsxNTQ5LDkgQEAgUmVnaXN0ZXJJRCogSWZFbHNlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dAogICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAKLSAgICBpZiAobV9jb25kaXRpb24tPmhhc0NvbmRpdGlvbkNvbnRleHRD
b2RlZ2VuKCkpIHsKLSAgICAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2NvbmRpdGlvbiwgYmVmb3JlVGhlbi5nZXQoKSwgYmVmb3JlRWxzZS5nZXQoKSwgdHJ1ZSk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlVGhlbi5nZXQoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Nv
bmRpdGlvbik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoY29uZCwgYmVmb3Jl
RWxzZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2NvbmRpdGlvbiwgYmVmb3JlVGhlbi5nZXQoKSwgYmVmb3JlRWxzZS5nZXQoKSwgdHJ1ZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVUaGVuLmdldCgpKTsKIAogICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1faWZCbG9jayk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGFm
dGVyRWxzZS5nZXQoKSk7CkBAIC0xNjA1LDEyICsxNTgxLDcgQEAgUmVnaXN0ZXJJRCogRG9XaGls
ZU5vZGU6OmVtaXRCeXRlY29kZShCeQogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKLSAg
ICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQotICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBmYWxzZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGNvbmQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZUcnVlKGNvbmQsIHRvcE9mTG9vcC5nZXQoKSk7Ci0gICAgfQorICAgIGdl
bmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQo
KSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CkBAIC0x
NjI0LDEyICsxNTk1LDcgQEAgUmVnaXN0ZXJJRCogV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZQogICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbV9leHBy
LT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jaGFyUG9zaXRpb24oKSk7Ci0g
ICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgp
LCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgdHJ1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGNvbmQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZGYWxzZShjb25kLCBzY29wZS0+YnJlYWtUYXJnZXQoKSk7Ci0gICAgfQor
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9v
cC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIHRydWUpOwogCiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
QEAgLTE2MzksMTIgKzE2MDUsNyBAQCBSZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CiAKLSAgICBpZiAobV9leHByLT5o
YXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1Rh
cmdldCgpLCBmYWxzZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGNvbmQgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGNvbmQsIHRvcE9mTG9vcC5nZXQoKSk7Ci0gICAgfQorICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFr
VGFyZ2V0KCksIGZhbHNlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFr
VGFyZ2V0KCkpOwogICAgIApAQCAtMTY2NCwxNCArMTYyNSw4IEBAIFJlZ2lzdGVySUQqIEZvck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY28KICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwogICAgIAogICAgIFJlZlB0cjxMYWJlbD4g
dG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgaWYgKG1fZXhwcjIpIHsKLSAg
ICAgICAgaWYgKG1fZXhwcjItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCi0gICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZM
b29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgdHJ1ZSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIy
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoY29uZCwgc2NvcGUtPmJy
ZWFrVGFyZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChtX2V4cHIyKQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZMb29w
LmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgdHJ1ZSk7CiAKICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwpA
QCAtMTY4MywxNCArMTYzOCw5IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY28KICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCi0gICAgaWYgKG1fZXhwcjIpIHsKLSAg
ICAgICAgaWYgKG1fZXhwcjItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCi0gICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZM
b29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIFJlZ2lzdGVySUQqIGNvbmQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
Mik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoY29uZCwgdG9wT2ZMb29w
LmdldCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIGlmIChtX2V4cHIyKQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdG9wT2ZMb29w
LmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOworICAgIGVsc2UKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKHRvcE9mTG9vcC5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgJKHJldmlzaW9uIDE0NzE5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDkgKzE1Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRyYWN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRDb2Rl
Z2VuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqLCBM
YWJlbCosIGJvb2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJh
dG9yJiwgTGFiZWwqLCBMYWJlbCosIGJvb2wpOwogCiAgICAgICAgIHZpcnR1YWwgRXhwcmVzc2lv
bk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgeyByZXR1cm4gdGhpczsgfQogCkBAIC03MzMsNyArNzMy
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJl
bCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJvdWdoTWVhbnNU
cnVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkg
Y29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpOyB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CkBAIC04OTYsNyArODk0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VU
YXJnZXQsIGJvb2wgZmFsbFRocm91Z2hNZWFuc1RydWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHIyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195694</attachid>
            <date>2013-03-28 21:05:14 -0700</date>
            <delta_ts>2013-03-29 12:10:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113554-20130328210511.patch</filename>
            <type>text/plain</type>
            <size>15681</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3MTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEzLTAzLTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2ltcGxpZmllZCBieXRlY29kZSBnZW5lcmF0aW9uIGJ5IHVuZm9ya2luZyAiY29uZGl0aW9u
IGNvbnRleHQiIGNvZGVnZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vdywgYSBub2RlIHRoYXQgZXN0YWJsaXNoZXMgYSBjb25kaXRpb24gY29udGV4
dCBjYW4gYWx3YXlzIGFzayBpdHMgY2hpbGQKKyAgICAgICAgbm9kZXMgdG8gZ2VuZXJhdGUgaW50
byB0aGF0IGNvbnRleHQuCisKKyAgICAgICAgVGhpcyBoYXMgYSBmZXcgYWR2YW50YWdlczoKKwor
ICAgICAgICAoKikgUmVtb3ZlcyBhIGJ1bmNoIG9mIGNvZGU7CisKKyAgICAgICAgKCopIE9wdGlt
aXplcyBhIGZldyBtaXNzZWQgY2FzZXMgbGlrZSAiaWYgKCEoeCA8IDIpKSIsICJpZiAoISF4KSIs
IGFuZAorICAgICAgICAiaWYgKCF4IHx8ICF5KSI7CisKKyAgICAgICAgKCopIFBhdmVzIHRoZSB3
YXkgdG8gcmVtb3ZpbmcgbW9yZSBvcGNvZGVzLgorCisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2Rl
Lmg6CisgICAgICAgIChKU0MpOiBTZXBhcmF0ZWQgb3V0IHRoZSBicmFuY2hpbmcgb3Bjb2RlcyBm
b3IgY2xhcml0eS4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAg
ICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4
dCk6IEFsbCBleHByZXNzaW9ucworICAgICAgICBjYW4gYmUgZW1pdHRlZCBpbiBhIGNvbmRpdGlv
biBjb250ZXh0IG5vdyAtLSB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcworICAgICAgICB0byBicmFu
Y2ggYmFzZWQgb24gdGhlIGV4cHJlc3Npb24ncyB2YWx1ZS4KKworICAgICAgICAoSlNDOjpMb2dp
Y2FsTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpT
Qzo6TG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAg
ICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpJ
Zk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvck5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6
OkV4cHJlc3Npb25Ob2RlOjppc1N1YnRyYWN0KToKKyAgICAgICAgKEV4cHJlc3Npb25Ob2RlKToK
KyAgICAgICAgKExvZ2ljYWxOb3ROb2RlKToKKyAgICAgICAgKExvZ2ljYWxPcE5vZGUpOiBSZW1v
dmVkIGxvdHMgb2YgY29kZSBmb3IgaGFuZGxpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgdGhhdCBj
b3VsZG4ndCBnZW5lcmF0ZSBpbnRvIGEgY29uZGl0aW9uIGNvbnRleHQgYmVjYXVzZSBhbGwgZXhw
cmVzc2lvbnMKKyAgICAgICAgY2FuIG5vdy4KKwogMjAxMy0wMy0yOCAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZpZWQgdGhlIGJ5dGVjb2RlIGJ5
IHJlbW92aW5nIG9wX2xvb3AgYW5kIG9wX2xvb3BfaWZfKgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTQ3MTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcy
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ob3Bfam5sZXNzZXEsIDQpIFwKICAgICBt
YWNybyhvcF9qbmdyZWF0ZXIsIDQpIFwKICAgICBtYWNybyhvcF9qbmdyZWF0ZXJlcSwgNCkgXAor
ICAgIFwKICAgICBtYWNybyhvcF9sb29wX2hpbnQsIDEpIFwKKyAgICBcCiAgICAgbWFjcm8ob3Bf
c3dpdGNoX2ltbSwgNCkgXAogICAgIG1hY3JvKG9wX3N3aXRjaF9jaGFyLCA0KSBcCiAgICAgbWFj
cm8ob3Bfc3dpdGNoX3N0cmluZywgNCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTQ3
MTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsMTEgKzM1NCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZSgwLCBuKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQoRXhwcmVzc2lvbk5vZGUqIG4sIExh
YmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wgZmFsbFRocm91Z2hNZWFu
c1RydWUpCisgICAgICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQoRXhwcmVzc2lv
bk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJv
dWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFkZExpbmVJ
bmZvKG4tPmxpbmVObygpKTsKICAgICAgICAgICAgIGlmIChtX3N0YWNrLmlzU2FmZVRvUmVjdXJz
ZSgpKQotICAgICAgICAgICAgICAgIG4tPmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCgq
dGhpcywgdHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKKyAg
ICAgICAgICAgICAgICBuLT5lbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoKnRoaXMsIHRy
dWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE0NzE5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNiArNzQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgYmVjYXVzZSB0aGUgYXNzaWdu
bWVudCBub2RlLCAieCA9IiwgcGFzc2VzIHJbeF0gYXMgZHN0IHRvIHRoZSBudW1iZXIgbm9kZSwg
IjEiLgogKi8KIAordm9pZCBFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25D
b250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCit7Cisg
ICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHRoaXMpOworICAgIGlm
IChmYWxsVGhyb3VnaE1vZGUgPT0gRmFsbFRocm91Z2hNZWFuc1RydWUpCisgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmRmFsc2UocmVzdWx0LCBmYWxzZVRhcmdldCk7CisgICAgZWxzZQorICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUocmVzdWx0LCB0cnVlVGFyZ2V0KTsKK30KKwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC05MjEsMTIgKzkzMCwxMCBA
QCBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlCiAgCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9naWNhbE5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBMb2dpY2FsTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5D
b25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIExhYmVsKiB0cnVl
VGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wgZmFsbFRocm91Z2hNZWFuc1RydWUpCit2
b2lkIExvZ2ljYWxOb3ROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRh
cmdldCwgRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkKIHsKLSAgICBBU1NFUlQoZXhw
cigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKTsKLQogICAgIC8vIHJldmVyc2UgdGhl
IHRydWUgYW5kIGZhbHNlIHRhcmdldHMKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlv
bkNvbnRleHQoZXhwcigpLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdldCwgIWZhbGxUaHJvdWdoTWVh
bnNUcnVlKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQoZXhwcigp
LCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdldCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkpOwogfQog
CiAKQEAgLTExNjQsMzIgKzExNzEsMTYgQEAgUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1p
dEJ5dGVjb2RlKAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRl
ZChkc3QsIHRlbXAuZ2V0KCkpOwogfQogCi12b2lkIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29k
ZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBMYWJlbCog
dHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJvdWdoTWVhbnNUcnVl
KQordm9pZCBMb2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxz
ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkKIHsKLSAgICBpZiAobV9l
eHByMS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkgewotICAgICAgICBSZWZQdHI8TGFi
ZWw+IGFmdGVyRXhwcjEgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgaWYgKG1fb3Bl
cmF0b3IgPT0gT3BMb2dpY2FsQW5kKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5D
b25kaXRpb25Db250ZXh0KG1fZXhwcjEsIGFmdGVyRXhwcjEuZ2V0KCksIGZhbHNlVGFyZ2V0LCB0
cnVlKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChtX2V4cHIxLCB0cnVlVGFyZ2V0LCBhZnRlckV4cHIxLmdldCgpLCBmYWxz
ZSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJFeHByMS5nZXQoKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgUmVnaXN0ZXJJRCogdGVtcCA9IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2V4cHIxKTsKLSAgICAgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dpY2FsQW5kKQotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZSh0ZW1wLCBmYWxzZVRhcmdldCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLCB0cnVl
VGFyZ2V0KTsKLSAgICB9CisgICAgUmVmUHRyPExhYmVsPiBhZnRlckV4cHIxID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CisgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BMb2dpY2FsQW5kKQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMSwgYWZ0ZXJFeHBy
MS5nZXQoKSwgZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKKyAgICBlbHNlIAor
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByMSwgdHJ1
ZVRhcmdldCwgYWZ0ZXJFeHByMS5nZXQoKSwgRmFsbFRocm91Z2hNZWFuc0ZhbHNlKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRXhwcjEuZ2V0KCkpOwogCi0gICAgaWYgKG1fZXhwcjIt
Pmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIyLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFs
bFRocm91Z2hNZWFuc1RydWUpOwotICAgIGVsc2UgewotICAgICAgICBSZWdpc3RlcklEKiB0ZW1w
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgICAgICBpZiAoZmFsbFRocm91Z2hN
ZWFuc1RydWUpCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKHRlbXAsIGZh
bHNlVGFyZ2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZUcnVlKHRlbXAsIHRydWVUYXJnZXQpOwotICAgIH0KKyAgICBnZW5lcmF0b3IuZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQobV9leHByMiwgdHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZhbGxU
aHJvdWdoTW9kZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25k
aXRpb25hbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjAwLDE0ICsx
MTkxLDkgQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZAogICAgIFJl
ZlB0cjxMYWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0
cjxMYWJlbD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBpZiAobV9s
b2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7Ci0gICAgICAgIFJlZlB0cjxM
YWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBiZWZvcmVUaGVuLmdldCgp
LCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChi
ZWZvcmVUaGVuLmdldCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZWdpc3RlcklEKiBjb25k
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fbG9naWNhbCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmRmFsc2UoY29uZCwgYmVmb3JlRWxzZS5nZXQoKSk7Ci0gICAgfQorICAgIFJlZlB0cjxM
YWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2xvZ2ljYWwsIGJlZm9yZVRoZW4uZ2V0KCksIGJl
Zm9yZUVsc2UuZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKKyAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0Rz
dC5nZXQoKSwgbV9leHByMSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQo
KSk7CkBAIC0xNTQzLDE0ICsxNTI5LDkgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZAogICAgIAogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJUaGVuID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAKLSAgICBpZiAobV9jb25kaXRpb24tPmhhc0NvbmRpdGlvbkNvbnRleHRD
b2RlZ2VuKCkpIHsKLSAgICAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2NvbmRpdGlvbiwgYmVmb3JlVGhlbi5nZXQoKSwgYWZ0ZXJUaGVuLmdldCgpLCB0cnVlKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVUaGVuLmdldCgpKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBSZWdpc3RlcklEKiBjb25kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fY29u
ZGl0aW9uKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxzZShjb25kLCBhZnRlclRo
ZW4uZ2V0KCkpOwotICAgIH0KKyAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
bV9jb25kaXRpb24sIGJlZm9yZVRoZW4uZ2V0KCksIGFmdGVyVGhlbi5nZXQoKSwgRmFsbFRocm91
Z2hNZWFuc1RydWUpOworICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlVGhlbi5nZXQoKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOwogICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoYWZ0ZXJUaGVuLmdldCgpKTsKQEAgLTE1NjgsMTQgKzE1NDksOSBAQCBSZWdp
c3RlcklEKiBJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiAgICAgUmVmUHRyPExhYmVsPiBi
ZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBhZnRl
ckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGlmIChtX2NvbmRpdGlvbi0+aGFz
Q29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkgewotICAgICAgICBSZWZQdHI8TGFiZWw+IGJlZm9y
ZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
SW5Db25kaXRpb25Db250ZXh0KG1fY29uZGl0aW9uLCBiZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVF
bHNlLmdldCgpLCB0cnVlKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVUaGVu
LmdldCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZWdpc3RlcklEKiBjb25kID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fY29uZGl0aW9uKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZG
YWxzZShjb25kLCBiZWZvcmVFbHNlLmdldCgpKTsKLSAgICB9CisgICAgUmVmUHRyPExhYmVsPiBi
ZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
SW5Db25kaXRpb25Db250ZXh0KG1fY29uZGl0aW9uLCBiZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVF
bHNlLmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChiZWZvcmVUaGVuLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1faWZC
bG9jayk7CiAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQoKSk7CkBAIC0xNjA1
LDEyICsxNTgxLDcgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeQog
CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKLSAgICBpZiAobV9leHByLT5oYXNDb25kaXRp
b25Db250ZXh0Q29kZWdlbigpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlv
bkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBm
YWxzZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGNvbmQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9leHByKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmQs
IHRvcE9mTG9vcC5nZXQoKSk7Ci0gICAgfQorICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0
aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCks
IEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3Bl
LT5icmVha1RhcmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwpAQCAtMTYyNCwxMiAr
MTU5NSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICBS
ZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5v
KCksIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+Y2hhclBvc2l0aW9uKCkpOwotICAgIGlmICht
X2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCi0gICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUt
PmJyZWFrVGFyZ2V0KCksIHRydWUpOwotICAgIGVsc2UgewotICAgICAgICBSZWdpc3RlcklEKiBj
b25kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmRmFsc2UoY29uZCwgc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwotICAgIH0KKyAgICBnZW5l
cmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCks
IHNjb3BlLT5icmVha1RhcmdldCgpLCBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29w
SGludCgpOwpAQCAtMTYzOSwxMiArMTYwNSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGUKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRh
cmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKIAotICAgIGlmICht
X2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCi0gICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUt
PmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUmVnaXN0ZXJJRCog
Y29uZCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZCwgdG9wT2ZMb29wLmdldCgpKTsKLSAgICB9CisgICAgZ2VuZXJhdG9y
LmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29w
ZS0+YnJlYWtUYXJnZXQoKSwgRmFsbFRocm91Z2hNZWFuc0ZhbHNlKTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwogICAgIApAQCAtMTY2NCwxNCArMTYy
NSw4IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY28KICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwog
ICAgIAogICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
Ci0gICAgaWYgKG1fZXhwcjIpIHsKLSAgICAgICAgaWYgKG1fZXhwcjItPmhhc0NvbmRpdGlvbkNv
bnRleHRDb2RlZ2VuKCkpCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlv
bkNvbnRleHQobV9leHByMiwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwg
dHJ1ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmRmFsc2UoY29uZCwgc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGlmIChtX2V4cHIyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNv
bnRleHQobV9leHByMiwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgRmFs
bFRocm91Z2hNZWFuc1RydWUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0b3BPZkxvb3Au
Z2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKQEAgLTE2ODMsMTQgKzE2Mzgs
OSBAQCBSZWdpc3RlcklEKiBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvCiAgICAgaWYgKG1f
ZXhwcjMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpLCBtX2V4cHIzKTsKIAotICAgIGlmIChtX2V4cHIyKSB7Ci0gICAgICAgIGlmIChtX2V4cHIy
LT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwcjIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUt
PmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWdp
c3RlcklEKiBjb25kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmQsIHRvcE9mTG9vcC5nZXQoKSk7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UKKyAgICBpZiAobV9leHByMikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwcjIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJy
ZWFrVGFyZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CisgICAgZWxzZQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXAodG9wT2ZMb29wLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAkocmV2aXNpb24gMTQ3MTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgT3BMb2dpY2FsT3IKICAgICB9OwogCisgICAgZW51bSBGYWxsVGhyb3Vn
aE1vZGUgeworICAgICAgICBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSA9IDAsCisgICAgICAgIEZhbGxU
aHJvdWdoTWVhbnNGYWxzZSA9IDEKKyAgICB9OworICAgIGlubGluZSBGYWxsVGhyb3VnaE1vZGUg
aW52ZXJ0KEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEZhbGxUaHJvdWdoTW9kZT4oIWZhbGxUaHJvdWdoTW9kZSk7IH0KKwogICAgIHR5cGVkZWYg
SGFzaFNldDxSZWZQdHI8U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVy
U2V0OwogCiAgICAgbmFtZXNwYWNlIERlY2xhcmF0aW9uU3RhY2tzIHsKQEAgLTE1Miw5ICsxNTgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzU2ltcGxlQXJyYXko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNDb25kaXRp
b25Db250ZXh0Q29kZWdlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRv
ciYsIExhYmVsKiwgTGFiZWwqLCBib29sKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChC
eXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiwgTGFiZWwqLCBGYWxsVGhyb3VnaE1vZGUpOwogCiAg
ICAgICAgIHZpcnR1YWwgRXhwcmVzc2lvbk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgeyByZXR1cm4g
dGhpczsgfQogCkBAIC03MzIsOCArNzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGlj
OgogICAgICAgICBMb2dpY2FsTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSopOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25k
aXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVs
KiBmYWxzZVRhcmdldCwgYm9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpIGNvbnN0IHsgcmV0dXJuIGV4cHIo
KS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKTsgfQorICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFy
Z2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSk7CiAgICAgfTsKIAogICAg
IGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkBAIC04OTUsOCAr
ODk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgYm9v
bCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNDb25kaXRp
b25Db250ZXh0Q29kZWdlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdm9pZCBl
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCog
dHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIxOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9l
eHByMjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>