<?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>18619</bug_id>
          
          <creation_ts>2008-04-19 02:50:00 -0700</creation_ts>
          <short_desc>Support continue, break, and return in try .. finally blocks</short_desc>
          <delta_ts>2008-04-19 15:37:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>18624</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78249</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-19 02:50:00 -0700</bug_when>
    <thetext>Task tracking bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78250</commentid>
    <comment_count>1</comment_count>
      <attachid>20688</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-19 03:18:56 -0700</bug_when>
    <thetext>Created attachment 20688
Rewrite finalisers with the wonder and joy of jsr/sret</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78272</commentid>
    <comment_count>2</comment_count>
      <attachid>20688</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-19 15:10:12 -0700</bug_when>
    <thetext>Comment on attachment 20688
Rewrite finalisers with the wonder and joy of jsr/sret

The code seems ok on the substance, so I&apos;ll say r=me.

But here are some style suggestions:

1) The return address register is variously named it&apos;s returnRegister, returnAddrRegister, returnAddress, and in some confusing cases, returnAddressnReg. I think it should be retAddrDst (or returnAddrDst) for jsr, and retAddrSrc (or returnAddrSrc) for sret, just to make clear these instructions respectively read and write the return address.

2) Is it really right to call a finally block a &quot;finaliser&quot;? In the context of dynamic languages, a &quot;finaliser&quot; is typically a routine that runs when a garbage-collected object is destroyed.

3) In emitComplexJumpScopes, I would advise you to consider breaking some of the commented blocks into well-named helper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78274</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-19 15:37:40 -0700</bug_when>
    <thetext>Committed r32269</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20688</attachid>
            <date>2008-04-19 03:18:56 -0700</date>
            <delta_ts>2008-04-19 15:10:12 -0700</delta_ts>
            <desc>Rewrite finalisers with the wonder and joy of jsr/sret</desc>
            <filename>finalisers.patch</filename>
            <type>text/plain</type>
            <size>19561</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiMmVhY2VkLi41ODAwODQ1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMDgtMDQtMTkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTg2MTk6IFN1cHBv
cnQgY29udGludWUsIGJyZWFrLCBhbmQgcmV0dXJuIGluIHRyeSAuLiBmaW5hbGx5IGJsb2Nrcwor
ICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE5Pgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGN1cnJlbnQgcGFydGlhbCBmaW5hbGx5
IHN1cHBvcnQgKHdoaWNoIHVzZXMgY29kZQorICAgICAgICBkdXBsaWNhdGlvbiB0byBhY2hpZXZl
IHdoYXQgaXQgZG9lcykgd2l0aCBhIHN1YnJvdXRpbmUgYmFzZWQgYXBwcm9hY2guCisgICAgICAg
IFRoaXMgaGFzIGEgbnVtYmVyIG9mIGFkdmFudGFnZXMgb3ZlciBjb2RlIGR1cGxpY2F0aW9uOgor
ICAgICAgICAgICogUmVkdWNlZCBjb2RlIHNpemUKKyAgICAgICAgICAqIFNpbXBsaWZpZWQgZXhj
ZXB0aW9uIGhhbmRsaW5nIGFzIHRoZSBmaW5hbGlzZXIgY29kZSBvbmx5IGV4aXN0cyBpbiAKKyAg
ICAgICAgICAgIG9uZSBwbGFjZSwgc28gbm8gIm1hZ2ljIiBpcyBuZWVkZWQgdG8gZ2V0IHRoZSBj
b3JyZWN0IGhhbmRsZXIgZm9yIGEgCisgICAgICAgICAgICBmaW5hbGlzZXIuCisgICAgICAgICAg
KiBXaGVuIHdlIHN1cHBvcnQgaW5zdHJ1Y3Rpb24gdG8gbGluZSBudW1iZXIgbWFwcGluZyB3ZSB3
b24ndCBuZWVkIHRvCisgICAgICAgICAgICB3b3JyeSBhYm91dCB0aGUgZHJhbWF0aWMgY29kZSBt
b3ZlbWVudCBjYXVzZWQgYnkgZHVwbGljYXRpb24KKworICAgICAgICBPbiB0aGUgZG93bnNpZGUg
aXQgaXMgbmVjZXNzYXJ5IHRvIGFkZCB0d28gbmV3IG9wY29kZXMsIG9wX2pzciBhbmQgb3Bfc3Jl
dAorICAgICAgICB0byBlbnRlciBhbmQgZXhpdCB0aGUgZmluYWxpc2VyIHN1YnJvdXRpbmVzLCBo
YXBwaWx5IFN1blNwaWRlciByZXBvcnRzCisgICAgICAgIGEgcGVyZm9ybWFuY2UgcHJvZ3Jlc3Np
b24gKGdjYyBhbWF6ZXMgbWUpIGFuZCB1YmVuY2ggcmVwb3J0cyBhIHdhc2guCisKKyAgICAgICAg
V2hpbGUganNyIGFuZCBzcmV0IHByb3ZpZGUgYSBtZWNoYW5pc20gdGhhdCBhbGxvd3MgdXMgdG8g
ZW50ZXIgYW5kIGV4aXQKKyAgICAgICAgYW55IGFyYml0cmFyeSBmaW5hbGlzZXIgd2UgbmVlZCB0
bywgaXQgd2FzIHN0aWxsIG5lY2Vzc2FyeSB0byBpbmNyZWFzZQorICAgICAgICB0aGUgYW1vdW50
IG9mIGluZm9ybWF0aW9uIHRyYWNrZWQgd2hlbiBlbnRlcmluZyBhbmQgZXhpdGluZyBib3RoIGZp
bmFsaXNlcgorICAgICAgICBzY29wZXMgYW5kIGR5bmFtaWMgc2NvcGVzICgid2l0aCIpLiAgVGhp
cyBtZWFucyAic2NvcGVEZXB0aCIgaXMgbm93CisgICAgICAgIHRoZSBjb21iaW5hdGlvbiBvZiAi
ZmluYWxpc2VyRGVwdGgiIGFuZCAiZHluYW1pY1Njb3BlRGVwdGgiLiAgV2UgYWxzbworICAgICAg
ICBub3cgdXNlIGEgc2NvcGVDb250ZXh0U3RhY2sgdG8gZW5zdXJlIHRoYXQgd2UgcG9wIHNjb3Bl
cyBhbmQgZXhlY3V0ZQorICAgICAgICBmaW5hbGlzZXJzIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAg
VGhpcyBpbmNyZWFzZXMgdGhlIGNvc3Qgb2YgIndpdGgiIG5vZGVzCisgICAgICAgIGR1cmluZyBj
b2RlZ2VuLCBidXQgaXQgc2hvdWxkIG5vdCBiZSBzaWduaWZpY2FudCBlbm91Z2ggdG8gZWZmZWN0
IHJlYWwKKyAgICAgICAgd29ybGQgcGVyZm9ybWFuY2UgYW5kIGdyZWF0bHkgc2ltcGxpZmllcyBj
b2RlZ2VuIGZvciByZXR1cm4sIGJyZWFrIGFuZAorICAgICAgICBjb250aW51ZSB3aGVuIGludGVy
YWN0aW5nIHdpdGggZmluYWxpc2Vycy4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChLSlM6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICAgUHJldHR5IHByaW50aW5n
IG9mIGpzci9zcmV0IG9wY29kZXMKKworICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoS0pTOjpDb2RlR2VuZXJhdG9yOjpDb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEtK
Uzo6Q29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hTY29wZSk6CisgICAgICAgIChLSlM6OkNvZGVHZW5l
cmF0b3I6OmVtaXRQb3BTY29wZSk6CisgICAgICAgICAgRHluYW1pYyBzY29wZXMgbmVlZCB0byBi
ZSB0cmFja2VkIG9uIHRoZSBzY29wZUNvbnRleHRTdGFjayBub3cKKworICAgICAgICAoS0pTOjpD
b2RlR2VuZXJhdG9yOjpwdXNoRmluYWxpc2VyQ29udGV4dCk6CisgICAgICAgIChLSlM6OkNvZGVH
ZW5lcmF0b3I6OnBvcEZpbmFsaXNlckNvbnRleHQpOgorICAgICAgICAgIEhhbmRsZSBlbnRyeSBh
bmQgZXhpdCBmcm9tIGNvZGUgcmVnaW9ucyB3aXRoIGZpbmFsaXNlcnMuICBUaGlzIGlzCisgICAg
ICAgICAgbmVlZGVkIHNvbGVseSB0byBzdXBwb3J0IHJldHVybiwgY29udGludWUgYW5kIGJyZWFr
IGluc2lkZSBmaW5hbGlzZXIKKyAgICAgICAgICByZWdpb25zLgorCisgICAgICAgIChLSlM6OkNv
ZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4SnVtcFNjb3Blcyk6CisgICAgICAgICAgSGVscGVyIGZ1
bmN0aW9uIGZvciBlbWl0SnVtcFNjb3BlcyB0byBoYW5kbGUgdGhlIGNvbXBsZXggY29kZWdlbgor
ICAgICAgICAgIG5lZWRlZCB0byBoYW5kbGUgcmV0dXJuLCBjb250aW51ZSBhbmQgYnJlYWsgaW5z
aWRlIGEgZmluYWxpc2VyIHJlZ2lvbgorCisgICAgICAgIChLSlM6OkNvZGVHZW5lcmF0b3I6OmVt
aXRKdW1wU2NvcGVzKToKKyAgICAgICAgICBVcGRhdGVkIHRvIGJlIGF3YXJlIG9mIGZpbmFsaXNl
cnMsIGlmIGEgY3Jvc3Mtc2NvcGUganVtcCBvY2N1cnMgaW5zaWRlCisgICAgICAgICAgYSBmaW5h
bGlzZXIgd2UgaGFuZCBvZmYgY29kZWdlbiB0byBlbWl0Q29tcGxleEp1bXBTY29wZXMsIG90aGVy
d2lzZQorICAgICAgICAgIHdlIGNhbiBoYW5kbGUgdGhlIG5vcm1hbCAodHJpdmlhbCkgY2FzZSB3
aXRoIGEgc2luZ2xlIGluc3RydWN0aW9uLgorCisgICAgICAgIChLSlM6OkNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wU3Vicm91dGluZSk6CisgICAgICAgIChLSlM6OkNvZGVHZW5lcmF0b3I6OmVtaXRT
dWJyb3V0aW5lUmV0dXJuKToKKyAgICAgICAgICBUcml2aWFsIG9wY29kZSBlbWl0dGVyIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEtKUzo6Q29k
ZUdlbmVyYXRvcjo6c2NvcGVEZXB0aCk6CisgICAgICAgICogVk0vTWFjaGluZS5jcHA6CisgICAg
ICAgIChLSlM6Ok1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgICBJbXBsZW1lbnQg
b3BfanNyIGFuZCBvcF9zcmV0LgorCisgICAgICAgICogVk0vT3Bjb2RlLmg6CisgICAgICAgICAg
QWQgb3BfanNyIGFuZCBvcF9zcmV0CisKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAg
ICAoS0pTOjpUcnlOb2RlOjplbWl0Q29kZSk6CisgICAgICAgICAgRml4IGNvZGVnZW4gZm9yIG5l
dyBmaW5hbGlzZXIgbW9kZWwuCisKIDIwMDgtMDQtMTcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAgYi9KYXZhU2NyaXB0Q29yZS9WTS9D
b2RlQmxvY2suY3BwCmluZGV4IDdjNDFkMGQuLmVmZjNjOGIgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2Nr
LmNwcApAQCAtNDkwLDYgKzQ5MCwxNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJgogICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSB0aHJvd1x0XHQlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShyMCkuY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX2pzcjogeworICAgICAgICAgICAgaW50IHJldHVyblJlZ2lzdGVyID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpzclx0XHQlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUocmV0dXJuUmVnaXN0ZXIpLmNfc3RyKCksIG9mZnNldCwganVtcFRhcmdl
dChiZWdpbiwgaXQsIG9mZnNldCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9zcmV0OiB7CisgICAgICAgICAgICBpbnQgcmV0dXJuUmVnaXN0ZXIgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gc3JldFx0XHQlc1xu
IiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyZXR1cm5SZWdpc3RlcikuY19zdHIoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2VuZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludGYoIlsl
NGRdIGVuZFx0XHQlc1xuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShyMCkuY19zdHIoKSk7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDlhZTA1OGEuLmM0MGQwYTcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjEsNyArMTYxLDggQEAgQ29kZUdlbmVy
YXRvcjo6Q29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIGNvbnN0IFNjb3Bl
Q2hhaW4mIHNjb3BlQ2gKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCiAgICAgLCBt
X3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAg
ICAsIG1fc2NvcGVEZXB0aCgwKQorICAgICwgbV9maW5hbGlzZXJEZXB0aCgwKQorICAgICwgbV9k
eW5hbWljU2NvcGVEZXB0aCgwKQogICAgICwgbV9pc0V2YWxDb2RlKGZhbHNlKQogICAgICwgbV9u
ZXh0VmFyKC0xKQogICAgICwgbV9wcm9wZXJ0eU5hbWVzKENvbW1vbklkZW50aWZpZXJzOjpzaGFy
ZWQoKSkKQEAgLTIwMyw3ICsyMDQsOCBAQCBDb2RlR2VuZXJhdG9yOjpDb2RlR2VuZXJhdG9yKEZ1
bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgY29uc3QgU2NvcGVDaGFpbiYgcwogICAgICwg
bV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0aW9uQm9k
eSkKICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAsIG1fc2NvcGVEZXB0aCgwKQor
ICAgICwgbV9maW5hbGlzZXJEZXB0aCgwKQorICAgICwgbV9keW5hbWljU2NvcGVEZXB0aCgwKQog
ICAgICwgbV9pc0V2YWxDb2RlKGZhbHNlKQogICAgICwgbV9uZXh0VmFyKC0xKQogICAgICwgbV9w
cm9wZXJ0eU5hbWVzKENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKSkKQEAgLTI0MSw3ICsyNDMs
OCBAQCBDb2RlR2VuZXJhdG9yOjpDb2RlR2VuZXJhdG9yKEV2YWxOb2RlKiBldmFsTm9kZSwgY29u
c3QgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgUwogICAgICwgbV9zeW1ib2xUYWJsZShzeW1ib2xU
YWJsZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQogICAgICwgbV9jb2RlQmxvY2soY29k
ZUJsb2NrKQotICAgICwgbV9zY29wZURlcHRoKDApCisgICAgLCBtX2ZpbmFsaXNlckRlcHRoKDAp
CisgICAgLCBtX2R5bmFtaWNTY29wZURlcHRoKDApCiAgICAgLCBtX2lzRXZhbENvZGUodHJ1ZSkK
ICAgICAsIG1fbmV4dFZhcigtMSkKICAgICAsIG1fcHJvcGVydHlOYW1lcyhDb21tb25JZGVudGlm
aWVyczo6c2hhcmVkKCkpCkBAIC04NjQsMjEgKzg2Nyw0OCBAQCBSZWdpc3RlcklEKiBDb2RlR2Vu
ZXJhdG9yOjplbWl0UHVzaFNjb3BlKFJlZ2lzdGVySUQqIHIwKQogICAgIG1fY29kZUJsb2NrLT5u
ZWVkc0FjdGl2YXRpb24gPSB0cnVlOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYWNoaW5l
KCkuZ2V0T3Bjb2RlKG9wX3B1c2hfc2NvcGUpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cjAtPmluZGV4KCkpOwotICAgIG1fc2NvcGVEZXB0aCsrOworCisgICAgQ29udHJvbEZsb3dDb250
ZXh0IHNjb3BlOworICAgIHNjb3BlLmlzRmluYWxpc2VyID0gZmFsc2U7CisgICAgbV9zY29wZUNv
bnRleHRTdGFjay5hcHBlbmQoc2NvcGUpOworICAgIG1fZHluYW1pY1Njb3BlRGVwdGgrKzsKICAg
ICByZXR1cm4gcjA7CiB9CiAKIHZvaWQgQ29kZUdlbmVyYXRvcjo6ZW1pdFBvcFNjb3BlKCkKIHsK
LSAgICBBU1NFUlQobV9zY29wZURlcHRoID4gMCk7CisgICAgQVNTRVJUKG1fc2NvcGVDb250ZXh0
U3RhY2suc2l6ZSgpKTsKKyAgICBBU1NFUlQoIW1fc2NvcGVDb250ZXh0U3RhY2subGFzdCgpLmlz
RmluYWxpc2VyKTsKKwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYWNoaW5lKCkuZ2V0T3Bj
b2RlKG9wX3BvcF9zY29wZSkpOwotICAgIG1fc2NvcGVEZXB0aC0tOworCisgICAgbV9zY29wZUNv
bnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgbV9keW5hbWljU2NvcGVEZXB0aC0tOworfQor
Cit2b2lkIENvZGVHZW5lcmF0b3I6OnB1c2hGaW5hbGlzZXJDb250ZXh0KExhYmVsSUQqIHRhcmdl
dCwgUmVnaXN0ZXJJRCogcmV0dXJuQWRkclJlZ2lzdGVyKQoreworICAgIENvbnRyb2xGbG93Q29u
dGV4dCBzY29wZTsKKyAgICBzY29wZS5pc0ZpbmFsaXNlciA9IHRydWU7CisgICAgRmluYWxpc2Vy
Q29udGV4dCBjb250ZXh0ID0geyB0YXJnZXQsIHJldHVybkFkZHJSZWdpc3RlciB9OworICAgIHNj
b3BlLmZpbmFsaXNlckNvbnRleHQgPSBjb250ZXh0OworICAgIG1fc2NvcGVDb250ZXh0U3RhY2su
YXBwZW5kKHNjb3BlKTsKKyAgICBtX2ZpbmFsaXNlckRlcHRoKys7Cit9CisKK3ZvaWQgQ29kZUdl
bmVyYXRvcjo6cG9wRmluYWxpc2VyQ29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fc2NvcGVDb250
ZXh0U3RhY2suc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9zY29wZUNvbnRleHRTdGFjay5sYXN0KCku
aXNGaW5hbGlzZXIpOworICAgIEFTU0VSVChtX2ZpbmFsaXNlckRlcHRoID4gMCk7CisgICAgbV9z
Y29wZUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgbV9maW5hbGlzZXJEZXB0aC0tOwog
fQogCiB2b2lkIENvZGVHZW5lcmF0b3I6OnB1c2hKdW1wQ29udGV4dChMYWJlbFN0YWNrKiBsYWJl
bHMsIExhYmVsSUQqIGNvbnRpbnVlVGFyZ2V0LCBMYWJlbElEKiBicmVha1RhcmdldCkKIHsKLSAg
ICBKdW1wQ29udGV4dCBzY29wZSA9IHsgbGFiZWxzLCBjb250aW51ZVRhcmdldCwgYnJlYWtUYXJn
ZXQsIG1fc2NvcGVEZXB0aCB9OwotICAgIG1fanVtcENvbnRleHRTdGFjay5hcHBlbmQoc2NvcGUp
OworICAgIEp1bXBDb250ZXh0IGNvbnRleHQgPSB7IGxhYmVscywgY29udGludWVUYXJnZXQsIGJy
ZWFrVGFyZ2V0LCBzY29wZURlcHRoKCkgfTsKKyAgICBtX2p1bXBDb250ZXh0U3RhY2suYXBwZW5k
KGNvbnRleHQpOwogfQogCiB2b2lkIENvZGVHZW5lcmF0b3I6OnBvcEp1bXBDb250ZXh0KCkKQEAg
LTkwMCwxNCArOTMwLDYxIEBAIEp1bXBDb250ZXh0KiBDb2RlR2VuZXJhdG9yOjpqdW1wQ29udGV4
dEZvckxhYmVsKGNvbnN0IElkZW50aWZpZXImIGxhYmVsKQogICAgIHJldHVybiAwOwogfQogCitQ
YXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4SnVtcFNjb3BlcyhM
YWJlbElEKiB0YXJnZXQsIENvbnRyb2xGbG93Q29udGV4dCogdG9wU2NvcGUsIENvbnRyb2xGbG93
Q29udGV4dCogYm90dG9tU2NvcGUpCit7CisgICAgd2hpbGUgKHRvcFNjb3BlID4gYm90dG9tU2Nv
cGUpIHsKKyAgICAgICAgLy8gRmlyc3Qgd2UgY291bnQgdGhlIG51bWJlciBvZiBkeW5hbWljIHNj
b3BlcyB3ZSBuZWVkIHRvIHJlbW92ZSB0byBnZXQKKyAgICAgICAgLy8gdG8gYSBmaW5hbGlzZXIu
CisgICAgICAgIGludCBuTm9ybWFsU2NvcGVzID0gMDsKKyAgICAgICAgd2hpbGUgKHRvcFNjb3Bl
ID4gYm90dG9tU2NvcGUpIHsKKyAgICAgICAgICAgIGlmICh0b3BTY29wZS0+aXNGaW5hbGlzZXIp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICArK25Ob3JtYWxTY29wZXM7Cisg
ICAgICAgICAgICAtLXRvcFNjb3BlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5Ob3JtYWxT
Y29wZXMpIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGEgbnVtYmVyIG9mIGR5
bmFtaWMgc2NvcGVzIHRvIGdldCB0byB0aGUgbmV4dCBmaW5hbGlzZXIKKyAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtYWNoaW5lKCkuZ2V0T3Bjb2RlKG9wX2ptcF9zY29wZXMpKTsK
KyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuTm9ybWFsU2NvcGVzKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gSWYgdG9wU2NvcGUgPCBib3R0b21TY29wZSB0aGVuIHRo
ZXJlIGlzbid0IGFjdHVhbGx5IGEgZmluYWxpc2VyIAorICAgICAgICAgICAgLy8gbGVmdCB0byBl
bWl0LCBzbyBtYWtlIHRoZSBqbXBfc2NvcGVzIGp1bXAgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBs
YWJlbAorICAgICAgICAgICAgaWYgKHRvcFNjb3BlID09IGJvdHRvbVNjb3BlKSB7CisgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+b2Zmc2V0RnJvbShpbnN0cnVj
dGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UganVzdCB1c2Ugam1wX3Njb3Bl
cyB0byBwb3AgYSBncm91cCBvZiBzY29wZXMgYW5kIGdvIAorICAgICAgICAgICAgLy8gdG8gdGhl
IG5leHQgaW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbElEPiBuZXh0SW5zbiA9
IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV4dEluc24t
Pm9mZnNldEZyb20oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBlbWl0TGFi
ZWwobmV4dEluc24uZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIC8vIFRvIGdldCBoZXJlIHRo
ZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGZpbmFsaXNlciBwcmVzZW50CisgICAgICAgIGRvIHsK
KyAgICAgICAgICAgIEFTU0VSVCh0b3BTY29wZS0+aXNGaW5hbGlzZXIpOworICAgICAgICAgICAg
ZW1pdEp1bXBTdWJyb3V0aW5lKHRvcFNjb3BlLT5maW5hbGlzZXJDb250ZXh0LnJldHVybkFkZHJS
ZWdpc3RlciwgdG9wU2NvcGUtPmZpbmFsaXNlckNvbnRleHQuZmluYWxpc2VyQWRkcik7CisgICAg
ICAgICAgICAtLXRvcFNjb3BlOworICAgICAgICAgICAgaWYgKCF0b3BTY29wZS0+aXNGaW5hbGlz
ZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKHRvcFNjb3BlID4g
Ym90dG9tU2NvcGUpOworICAgIH0KKyAgICByZXR1cm4gZW1pdEp1bXAodGFyZ2V0KTsKK30KKwog
UGFzc1JlZlB0cjxMYWJlbElEPiBDb2RlR2VuZXJhdG9yOjplbWl0SnVtcFNjb3BlcyhMYWJlbElE
KiB0YXJnZXQsIGludCB0YXJnZXRTY29wZURlcHRoKQogewotICAgIGludCBzY29wZURlbHRhID0g
bV9zY29wZURlcHRoIC0gdGFyZ2V0U2NvcGVEZXB0aDsKLSAgICBBU1NFUlQoc2NvcGVEZWx0YSA+
PSAwKTsKLSAgICAKKyAgICBBU1NFUlQoc2NvcGVEZXB0aCgpIC0gdGFyZ2V0U2NvcGVEZXB0aCA+
PSAwKTsKKworICAgIHNpemVfdCBzY29wZURlbHRhID0gc2NvcGVEZXB0aCgpIC0gdGFyZ2V0U2Nv
cGVEZXB0aDsKKyAgICBBU1NFUlQoc2NvcGVEZWx0YSA8PSBtX3Njb3BlQ29udGV4dFN0YWNrLnNp
emUoKSk7CiAgICAgaWYgKCFzY29wZURlbHRhKQogICAgICAgICByZXR1cm4gZW1pdEp1bXAodGFy
Z2V0KTsKLSAgICAKKworICAgIGlmIChtX2ZpbmFsaXNlckRlcHRoKQorICAgICAgICByZXR1cm4g
ZW1pdENvbXBsZXhKdW1wU2NvcGVzKHRhcmdldCwgJm1fc2NvcGVDb250ZXh0U3RhY2subGFzdCgp
LCAmbV9zY29wZUNvbnRleHRTdGFjay5sYXN0KCkgLSBzY29wZURlbHRhKTsKKwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtYWNoaW5lKCkuZ2V0T3Bjb2RlKG9wX2ptcF9zY29wZXMpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVEZWx0YSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHRhcmdldC0+b2Zmc2V0RnJvbShpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKQEAgLTkz
Myw3ICsxMDEwLDcgQEAgUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdEdldFByb3BlcnR5
TmFtZXMoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFJlZ2lzdGVySUQKIAogUmVnaXN0ZXJJRCogQ29k
ZUdlbmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdGVySUQqIHRhcmdldFJlZ2lzdGVyLCBMYWJlbElE
KiBzdGFydCwgTGFiZWxJRCogZW5kKQogewotICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5vZmZzZXRGcm9tKDApLCBlbmQtPm9mZnNldEZyb20oMCksIGluc3RydWN0aW9ucygpLnNpemUo
KSwgbV9zY29wZURlcHRoIH07CisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPm9mZnNl
dEZyb20oMCksIGVuZC0+b2Zmc2V0RnJvbSgwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5
bmFtaWNTY29wZURlcHRoIH07CiAgICAgZXhjZXB0aW9uSGFuZGxlcnMoKS5hcHBlbmQoaW5mbyk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1hY2hpbmUoKS5nZXRPcGNvZGUob3BfY2F0Y2gp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0UmVnaXN0ZXItPmluZGV4KCkpOwpA
QCAtOTQ2LDQgKzEwMjMsMTggQEAgdm9pZCBDb2RlR2VuZXJhdG9yOjplbWl0VGhyb3coUmVnaXN0
ZXJJRCogZXhjZXB0aW9uKQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb24tPmlu
ZGV4KCkpOwogfQogCitQYXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0b3I6OmVtaXRKdW1w
U3Vicm91dGluZShSZWdpc3RlcklEKiByZXR1cm5BZGRyUmVnaXN0ZXIsIExhYmVsSUQqIGZpbmFs
aXNlcikKK3sKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWFjaGluZSgpLmdldE9wY29kZShv
cF9qc3IpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmV0dXJuQWRkclJlZ2lzdGVyLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmluYWxpc2VyLT5vZmZzZXRGcm9t
KGluc3RydWN0aW9ucygpLnNpemUoKSkpOworICAgIHJldHVybiBmaW5hbGlzZXI7Cit9CisKK3Zv
aWQgQ29kZUdlbmVyYXRvcjo6ZW1pdFN1YnJvdXRpbmVSZXR1cm4oUmVnaXN0ZXJJRCogcmV0dXJu
QWRkclJlZ2lzdGVyKQoreworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYWNoaW5lKCkuZ2V0
T3Bjb2RlKG9wX3NyZXQpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmV0dXJuQWRkclJl
Z2lzdGVyLT5pbmRleCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgS0pTCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2Rl
R2VuZXJhdG9yLmgKaW5kZXggMDUyZmViMy4uOWY3NGRlYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5l
cmF0b3IuaApAQCAtNTQsNiArNTQsMTYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGludCBz
Y29wZURlcHRoOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgRmluYWxpc2VyQ29udGV4dCB7CisgICAg
ICAgIExhYmVsSUQqIGZpbmFsaXNlckFkZHI7CisgICAgICAgIFJlZ2lzdGVySUQqIHJldHVybkFk
ZHJSZWdpc3RlcjsKKyAgICB9OworICAgIAorICAgIHN0cnVjdCBDb250cm9sRmxvd0NvbnRleHQg
eworICAgICAgICBib29sIGlzRmluYWxpc2VyOworICAgICAgICBGaW5hbGlzZXJDb250ZXh0IGZp
bmFsaXNlckNvbnRleHQ7CisgICAgfTsKKyAgICAKICAgICBjbGFzcyBDb2RlR2VuZXJhdG9yIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNr
IFZhclN0YWNrOwpAQCAtMTk5LDIyICsyMDksMjggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAg
IFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdEp1bXBJZlRydWUoUmVnaXN0ZXJJRCosIExhYmVsSUQq
KTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbElEPiBlbWl0SnVtcElmRmFsc2UoUmVnaXN0ZXJJ
RCosIExhYmVsSUQqKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbElEPiBlbWl0SnVtcFNjb3Bl
cyhMYWJlbElEKiB0YXJnZXQsIGludCB0YXJnZXRTY29wZURlcHRoKTsKKworICAgICAgICBQYXNz
UmVmUHRyPExhYmVsSUQ+IGVtaXRKdW1wU3Vicm91dGluZShSZWdpc3RlcklEKiByZXR1cm5BZGRy
UmVnaXN0ZXIsIExhYmVsSUQqKTsKKyAgICAgICAgdm9pZCBlbWl0U3Vicm91dGluZVJldHVybihS
ZWdpc3RlcklEKiByZXR1cm5BZGRyUmVnaXN0ZXIpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldFByb3BlcnR5TmFtZXMoUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5leHRQcm9wZXJ0eU5hbWUoUmVnaXN0ZXJJRCosIFJlZ2lz
dGVySUQqLCBMYWJlbElEKik7CiAgICAgICAgIAorICAgICAgICB2b2lkIHB1c2hGaW5hbGlzZXJD
b250ZXh0KExhYmVsSUQqIHRhcmdldCwgUmVnaXN0ZXJJRCogcmV0dXJuQWRkclJlZ2lzdGVyKTsK
KyAgICAgICAgdm9pZCBwb3BGaW5hbGlzZXJDb250ZXh0KCk7CiAgICAgICAgIHZvaWQgcHVzaEp1
bXBDb250ZXh0KExhYmVsU3RhY2sqLCBMYWJlbElEKiBjb250aW51ZVRhcmdldCwgTGFiZWxJRCog
YnJlYWtUYXJnZXQpOwogICAgICAgICB2b2lkIHBvcEp1bXBDb250ZXh0KCk7CiAgICAgICAgIEp1
bXBDb250ZXh0KiBqdW1wQ29udGV4dEZvckxhYmVsKGNvbnN0IElkZW50aWZpZXImKTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFNjb3BlKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9p
ZCBlbWl0UG9wU2NvcGUoKTsKLSAgICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX3Nj
b3BlRGVwdGg7IH0KKyAgICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNT
Y29wZURlcHRoICsgbV9maW5hbGlzZXJEZXB0aDsgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYXRjaChSZWdpc3RlcklEKiwgTGFiZWxJRCogc3RhcnQsIExhYmVsSUQqIGVuZCk7CiAgICAg
ICAgIHZvaWQgZW1pdFRocm93KFJlZ2lzdGVySUQqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdENvbXBsZXhKdW1wU2NvcGVzKExhYmVsSUQqIHRhcmdl
dCwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiBib3R0
b21TY29wZSk7CiAgICAgICAgIHN0cnVjdCBKU1ZhbHVlSGFzaFRyYWl0cyAgewogICAgICAgICAg
ICAgdHlwZWRlZiBKU1ZhbHVlKiBUcmFpdFR5cGU7CiAgICAgICAgICAgICB0eXBlZGVmIEpTVmFs
dWVIYXNoVHJhaXRzIFN0b3JhZ2VUcmFpdHM7CkBAIC0yNTUsNyArMjcxLDcgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJuICptX3N5
bWJvbFRhYmxlOyB9CiAgICAgICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlvbkhhbmRs
ZXJzKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXJzOyB9CiAgICAgICAg
IAotICAgICAgICBib29sIHNob3VsZE9wdGltaXplTG9jYWxzKCkgeyByZXR1cm4gIW1faXNFdmFs
Q29kZSAmJiAhbV9zY29wZURlcHRoOyB9CisgICAgICAgIGJvb2wgc2hvdWxkT3B0aW1pemVMb2Nh
bHMoKSB7IHJldHVybiAhbV9pc0V2YWxDb2RlICYmICFtX2R5bmFtaWNTY29wZURlcHRoOyB9CiAK
ICAgICAgICAgY29uc3QgU2NvcGVDaGFpbiogbV9zY29wZUNoYWluOwogICAgICAgICBTeW1ib2xU
YWJsZSogbV9zeW1ib2xUYWJsZTsKQEAgLTI2OCwxMCArMjg0LDEyIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICBWZWN0b3I8UmVnaXN0ZXJJRCwgNTEyPiBtX2xvY2FsczsKICAgICAgICAgVmVj
dG9yPFJlZ2lzdGVySUQsIDUxMj4gbV90ZW1wb3JhcmllczsKICAgICAgICAgVmVjdG9yPExhYmVs
SUQsIDUxMj4gbV9sYWJlbHM7Ci0gICAgICAgIGludCBtX3Njb3BlRGVwdGg7CisgICAgICAgIGlu
dCBtX2ZpbmFsaXNlckRlcHRoOworICAgICAgICBpbnQgbV9keW5hbWljU2NvcGVEZXB0aDsKICAg
ICAgICAgYm9vbCBtX2lzRXZhbENvZGU7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8SnVtcENv
bnRleHQ+IG1fanVtcENvbnRleHRTdGFjazsKKyAgICAgICAgVmVjdG9yPENvbnRyb2xGbG93Q29u
dGV4dD4gbV9zY29wZUNvbnRleHRTdGFjazsKIAogICAgICAgICBpbnQgbV9uZXh0VmFyOwogICAg
ICAgICBpbnQgbV9uZXh0UGFyYW1ldGVyOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0v
TWFjaGluZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAppbmRleCBlODRkNTNk
Li5jNDMyMjI0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcApAQCAtMTUxMyw2ICsxNTEzLDI3IEBAIEpT
VmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0
YXRlKiBleGVjLCBSZWdpc3RlckZpCiAgICAgICAgIGludCByMCA9ICgrK3ZQQyktPnUub3BlcmFu
ZDsKICAgICAgICAgcmV0dXJuIHJbcjBdLnUuanNWYWx1ZTsKICAgICB9CisgICAgQkVHSU5fT1BD
T0RFKG9wX2pzcikgeworICAgICAgICAvKiBqc3IgcmV0dXJuQWRkcmVzcyhyKSB0YXJnZXQoYWRk
cmVzcykKKyAgICAgICAgIAorICAgICAgICAgUGxhY2VzIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXh0
IGluc3RydWN0aW9uIGludG8gdGhlIHJldHVybkFkZHJlc3MKKyAgICAgICAgIHJlZ2lzdGVyIGFu
ZCBicmFuY2hlcyB0byB0YXJnZXQuCisgICAgICAgICAqLworICAgICAgICBpbnQgcmV0dXJuQWRk
cmVzc25SZWcgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBvZmZzZXQgPSAoKyt2
UEMpLT51Lm9wZXJhbmQ7CisgICAgICAgIHJbcmV0dXJuQWRkcmVzc25SZWddLnUudlBDID0gdlBD
ICsgMTsKKyAgICAgICAgdlBDICs9IG9mZnNldDsKKyAgICAgICAgTkVYVF9PUENPREU7CisgICAg
fQorICAgIEJFR0lOX09QQ09ERShvcF9zcmV0KSB7CisgICAgICAgIC8qIHNyZXQgcmV0dXJuQWRk
cmVzcyhyKQorICAgICAgICAgCisgICAgICAgICBTZXRzIHRoZSB2UEMgdG8gdGhlIGFkZHJlc3Mg
c3RvcmVkIGluIHRoZSByZXR1cm5BZGRyZXNzIHJlZ2lzdGVyLgorICAgICAgICAgKi8KKyAgICAg
ICAgaW50IHJldHVybkFkZHJlc3NuUmVnID0gKCsrdlBDKS0+dS5vcGVyYW5kOworICAgICAgICB2
UEMgPSByW3JldHVybkFkZHJlc3NuUmVnXS51LnZQQzsKKyAgICAgICAgTkVYVF9PUENPREU7Cisg
ICAgfQogICAgIEJFR0lOX09QQ09ERShvcF9idWlsdGluX3Rocm93KSB7CiAgICAgICAgIEFTU0VS
VChleGVjLT5leGNlcHRpb25Tb3VyY2UoKS0+dS5vcGNvZGUgIT0gZ2V0T3Bjb2RlKG9wX2J1aWx0
aW5fdGhyb3cpKTsKICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBleGVjLT5leGNlcHRpb24oKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUv
Vk0vT3Bjb2RlLmgKaW5kZXggNWZkZjdlNi4uZjViYzkzNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvVk0vT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKQEAgLTEx
MCw2ICsxMTAsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3cpIFwK
ICAgICAgICAgbWFjcm8ob3BfYnVpbHRpbl90aHJvdykgXAogICAgICAgICBcCisgICAgICAgIG1h
Y3JvKG9wX2pzcikgXAorICAgICAgICBtYWNybyhvcF9zcmV0KSBcCisgICAgICAgIFwKICAgICAg
ICAgbWFjcm8ob3BfZW5kKSAvLyBlbmQgbXVzdCBiZSB0aGUgbGFzdCBvcGNvZGUgaW4gdGhlIGxp
c3QKICAgICAgICAgCiAgICAgI2RlZmluZSBPUENPREVfSURfRU5VTShvcGNvZGUpIG9wY29kZSwK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9ranMvbm9kZXMuY3BwCmluZGV4IDJhM2RlYjYuLjM4ZDU0ZWYgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNw
cApAQCAtNTUxMCwxNSArNTUxMCwyMCBAQCBSZWdpc3RlcklEKiBUcnlOb2RlOjplbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQdHI8
TGFiZWxJRD4gdHJ5U3RhcnRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0
cjxMYWJlbElEPiB0cnlFbmRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgIFJlZlB0
cjxMYWJlbElEPiBoYW5kbGVyRW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAK
KyAgICBSZWZQdHI8TGFiZWxJRD4gZmluYWxpc2VyU3RhcnQ7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZpbmFsaXNlclJldHVybkFkZHI7CisgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CisgICAg
ICAgIGZpbmFsaXNlclN0YXJ0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgIGZpbmFs
aXNlclJldHVybkFkZHIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5wdXNoRmluYWxpc2VyQ29udGV4dChmaW5hbGlzZXJTdGFydC5nZXQoKSwgZmluYWxpc2Vy
UmV0dXJuQWRkci5nZXQoKSk7CisgICAgfQogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodHJ5U3Rh
cnRMYWJlbC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV90cnlCbG9jay5n
ZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0cnlFbmRMYWJlbC5nZXQoKSk7Ci0gICAg
Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGhhbmRsZXJFbmRMYWJlbC5nZXQoKSk7CiAKICAgICBp
ZiAobV9jYXRjaEJsb2NrKSB7CisgICAgICAgIFJlZlB0cjxMYWJlbElEPiBoYW5kbGVyRW5kTGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGhh
bmRsZXJFbmRMYWJlbC5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRp
b25SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Q2F0Y2goZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCB0cnlTdGFydExhYmVsLmdldCgpLCB0cnlFbmRMYWJlbC5nZXQoKSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIG5ld1Njb3BlID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRQcm9wSWQobmV3U2NvcGUsIG1f
ZXhjZXB0aW9uSWRlbnQsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKQEAgLTU1MjYsMTkgKzU1
MzEsMjYgQEAgUmVnaXN0ZXJJRCogVHJ5Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHVzaFNjb3Bl
KG5ld1Njb3BlKTsKICAgICAgICAgbV9jYXRjaEJsb2NrLT5lbWl0Q29kZShnZW5lcmF0b3IsIGRz
dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UG9wU2NvcGUoKTsKLSAgICAgICAgaWYgKCFtX2Zp
bmFsbHlCbG9jaykKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoaGFuZGxlckVuZExh
YmVsLmdldCgpKTsKLSAgICB9IAorICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGhhbmRsZXJF
bmRMYWJlbC5nZXQoKSk7CisgICAgfQogCiAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7Ci0gICAg
ICAgIFJlZlB0cjxMYWJlbElEPiBmaW5hbGx5U3RhcnRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGZpbmFsbHlTdGFydExhYmVsLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGhhbmRsZXJFbmRMYWJlbC5nZXQoKSk7Ci0g
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wRXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdENhdGNoKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdHJ5U3RhcnRMYWJlbC5nZXQo
KSwgZmluYWxseVN0YXJ0TGFiZWwuZ2V0KCkpOwotICAgICAgICBtX2ZpbmFsbHlCbG9jay0+ZW1p
dENvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgICAgICBnZW5lcmF0b3IucG9wRmluYWxpc2VyQ29u
dGV4dCgpOworICAgICAgICBSZWZQdHI8TGFiZWxJRD4gZmluYWxpc2VyRW5kTGFiZWwgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wU3Vicm91dGluZShm
aW5hbGlzZXJSZXR1cm5BZGRyLmdldCgpLCBmaW5hbGlzZXJTdGFydC5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcChmaW5hbGlzZXJFbmRMYWJlbC5nZXQoKSk7CisKKyAgICAgICAg
Ly8gRmluYWxpc2VyIGZvciBleGNlcHRpb24gcGF0aAorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGVtcEV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHRyeVN0YXJ0TGFiZWwuZ2V0KCksIGdlbmVyYXRvci5lbWl0TGFiZWwo
Z2VuZXJhdG9yLm5ld0xhYmVsKCkuZ2V0KCkpLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wU3Vicm91dGluZShmaW5hbGlzZXJSZXR1cm5BZGRyLmdldCgpLCBmaW5hbGlzZXJTdGFy
dC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3codGVtcEV4Y2VwdGlvblJlZ2lz
dGVyLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChoYW5kbGVyRW5kTGFiZWwu
Z2V0KCkpOworCisgICAgICAgIC8vIGVtaXQgdGhlIGZpbmFsaXNlcgorICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGZpbmFsaXNlclN0YXJ0LmdldCgpKTsKICAgICAgICAgbV9maW5hbGx5Qmxv
Y2stPmVtaXRDb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRTdWJy
b3V0aW5lUmV0dXJuKGZpbmFsaXNlclJldHVybkFkZHIuZ2V0KCkpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZmluYWxpc2VyRW5kTGFiZWwuZ2V0KCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBkc3Q7Cg==
</data>
<flag name="review"
          id="9034"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>