<?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>82774</bug_id>
          
          <creation_ts>2012-03-30 13:20:40 -0700</creation_ts>
          <short_desc>Cache origin check result to RuleData</short_desc>
          <delta_ts>2012-04-11 20:52:37 -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>CSS</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>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>592444</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-30 13:20:40 -0700</bug_when>
    <thetext>You wan&apos;t be able to get back to the stylesheet from a css style rule soon. We need to do the origin check when we know the sheet it came from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592448</commentid>
    <comment_count>1</comment_count>
      <attachid>134869</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-30 13:25:42 -0700</bug_when>
    <thetext>Created attachment 134869
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592451</commentid>
    <comment_count>2</comment_count>
      <attachid>134869</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-30 13:33:34 -0700</bug_when>
    <thetext>Comment on attachment 134869
patch

r=me with s/hadDocumentSecurityOrigin/hasDocumentSecurityOrigin/
Let&apos;s wait for EWS to report in though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592484</commentid>
    <comment_count>3</comment_count>
      <attachid>134878</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-30 14:06:14 -0700</bug_when>
    <thetext>Created attachment 134878
null check style selector

Style selector is null when processing UA stylesheets. Those are never from the same origin as the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592497</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-30 14:24:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/112727</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134869</attachid>
            <date>2012-03-30 13:25:42 -0700</date>
            <delta_ts>2012-03-30 14:01:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ruledata-origin.patch</filename>
            <type>text/plain</type>
            <size>13018</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTMwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBvcmlnaW4gY2hlY2sg
cmVzdWx0IHRvIFJ1bGVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mjc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFlvdSB3YW4ndCBiZSBhYmxlIHRvIGdldCBiYWNrIHRvIHRoZSBzdHlsZXNoZWV0
IGZyb20gYSBjc3Mgc3R5bGUgcnVsZSBzb29uLiAKKyAgICAgICAgV2UgbmVlZCB0byBkbyB0aGUg
b3JpZ2luIGNoZWNrIHdoZW4gd2Uga25vdyB0aGUgc2hlZXQgaXQgY2FtZSBmcm9tLgorCisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoUnVsZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZURhdGE6Omhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOgorICAg
ICAgICAoUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjptYWtlUnVsZVNldCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVyZTo6UnVsZUZlYXR1cmUpOgorICAgICAgICAoUnVs
ZUZlYXR1cmUpOgorICAgICAgICAoRmVhdHVyZXMpOgorCiAyMDEyLTAzLTMwICBKb2UgTWFzb24g
IDxqbWFzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTWFrZSBzdXJlIHN0cmlu
Z3MgZG8gbm90IGxlYWsgaW4gUGx1Z2luVmlld0JsYWNrYmVycnkuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxMTI2NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3
ICsxODEsNyBAQCBpZiAocHJpbWl0aXZlVmFsdWUpIFwKIAogY2xhc3MgUnVsZURhdGEgewogcHVi
bGljOgotICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9z
aXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKTsK
KyAgICBSdWxlRGF0YShTdHlsZVJ1bGUqLCBDU1NTZWxlY3RvciosIHVuc2lnbmVkIHBvc2l0aW9u
LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2Vs
ZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAgIFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcnVsZTsgfQpAQCAtMTkzLDYgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yOyB9CiAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljaXR5OyB9CiAgICAgdW5zaWduZWQgbGlua01hdGNo
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua01hdGNoVHlwZTsgfQorICAgIGJvb2wgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbjsgfQogICAgIGJvb2wgaXNJblJlZ2lvblJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5SZWdpb25SdWxlOyB9CiAKICAgICAvLyBUcnkgdG8gYmFsYW5jZSBiZXR3ZWVuIG1lbW9yeSB1
c2FnZSAodGhlcmUgY2FuIGJlIGxvdHMgb2YgUnVsZURhdGEgb2JqZWN0cykgYW5kIGdvb2QgZmls
dGVyaW5nIHBlcmZvcm1hbmNlLgpAQCAtMjA1LDEyICsyMDYsMTMgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX3NwZWNpZmljaXR5OwogICAgIC8vIFRoaXMgbnVtYmVyIHdhcyBwaWNrZWQgZmFp
cmx5IGFyYml0cmFyaWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIgaXQgaWYgd2UgbmVlZCB0by4K
ICAgICAvLyBTb21lIHNpbXBsZSB0ZXN0aW5nIHNob3dlZCA8MTAwLDAwMCBSdWxlRGF0YSdzIG9u
IGxhcmdlIHNpdGVzLgotICAgIHVuc2lnbmVkIG1fcG9zaXRpb24gOiAyNTsKKyAgICB1bnNpZ25l
ZCBtX3Bvc2l0aW9uIDogMjQ7CiAgICAgdW5zaWduZWQgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2gg
OiAxOwogICAgIHVuc2lnbmVkIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIDog
MTsKICAgICB1bnNpZ25lZCBtX2xpbmtNYXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2Vy
OjpMaW5rTWF0Y2hNYXNrCisgICAgdW5zaWduZWQgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzSW5SZWdpb25SdWxlIDogMTsKICAgICAvLyBVc2UgcGxh
aW4gYXJyYXkgaW5zdGVhZCBvZiBhIFZlY3RvciB0byBtaW5pbWl6ZSBtZW1vcnkgb3ZlcmhlYWQu
CiAgICAgdW5zaWduZWQgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzW21heGlt
dW1JZGVudGlmaWVyQ291bnRdOwpAQCAtMjM1LDExICsyMzcsMTEgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgTWVkaWFRdWVyeUV2
YWx1YXRvciYsIENTU1N0eWxlU2VsZWN0b3IqID0gMCwgY29uc3QgQ29udGFpbmVyTm9kZSogPSAw
KTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSosIGJvb2wgY2FuVXNlRmFzdENo
ZWNrU2VsZWN0b3IgPSB0cnVlLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOwotICAgIHZv
aWQgYWRkUnVsZShTdHlsZVJ1bGUqLCBDU1NTZWxlY3RvciosIGJvb2wgY2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IgPSB0cnVlLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOworICAgIHZvaWQg
YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwg
Ym9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9vbCBpc0luUmVnaW9uUnVsZSA9IGZhbHNl
KTsKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCBib29sIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wg
aXNJblJlZ2lvblJ1bGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRQYWdlUnVsZShDU1NQYWdlUnVs
ZSopOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1
bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVnaW9uUnVsZShXZWJLaXRD
U1NSZWdpb25SdWxlKik7CisgICAgdm9pZCBhZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZ2lvblJ1
bGUqLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1Nocmlua1Rv
Rml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTQyMiwxNCArNDI0LDE0IEBAIENTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICBhcHBlbmRBdXRob3JTdHlsZXNoZWV0
cygwLCBkb2N1bWVudC0+c3R5bGVTaGVldHMoKS0+dmVjdG9yKCkpOwogfQogICAgIAotc3RhdGlj
IFBhc3NPd25QdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPENTU1N0eWxlU2Vs
ZWN0b3I6OlJ1bGVTZWxlY3RvclBhaXI+JiBydWxlcykKK3N0YXRpYyBQYXNzT3duUHRyPFJ1bGVT
ZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxDU1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVy
ZT4mIHJ1bGVzKQogewogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAgIGlmICgh
c2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVT
ZXQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVsZXNb
aV0uc2VsZWN0b3IpOworICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1
bGVzW2ldLnNlbGVjdG9yLCBydWxlc1tpXS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHJ1bGVTZXQucmVsZWFzZSgpOwogfQogCkBAIC0xMDI0LDggKzEwMjYs
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogRXhwb3NpbmcgZ2V0TWF0Y2hlZENTU1J1bGVzIGFzIGEgd2ViIGZhY2luZyBB
UEkgaXMgZm9yY2luZyB1cyB0byBoYXZlIGEgd2F5IHRvIGdldCB0aGUgYmFzZSBVUkwgcGVyLXJ1
bGUuCi0gICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAmJiAhbV9jaGVja2VyLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVsZS0+ZW5zdXJlQ1NTU3R5bGVS
dWxlKCktPmJhc2VVUkwoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2luZyB0aGUg
bm9uLXN0YW5kYXJkIGdldE1hdGNoZWRDU1NSdWxlcyBBUEkgdG8gd2ViIGlzIHRoZSBvbmx5IHJl
YXNvbiB0aGlzIGlzIG5lZWRlZC4KKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYm
ICFydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpIHsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIzMTEsNyArMjMx
Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIENTU1Nl
bGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQgcG9zaXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKQorUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVs
ZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbiwgYm9vbCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yLCBi
b29sIGluUmVnaW9uUnVsZSkKICAgICA6IG1fcnVsZShydWxlKQogICAgICwgbV9zZWxlY3Rvcihz
ZWxlY3RvcikKICAgICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3ItPnNwZWNpZmljaXR5KCkpCkBA
IC0yMzIxLDYgKzIzMjMsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCBD
U1NTCiAgICAgLCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVI
YXNoKGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IpKQogICAg
ICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2ViQ29yZTo6Y29udGFpbnNV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAsIG1fbGlua01hdGNoVHlw
ZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoc2VsZWN0b3IpKQorICAg
ICwgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4p
CiAgICAgLCBtX2lzSW5SZWdpb25SdWxlKGluUmVnaW9uUnVsZSkKIHsKICAgICBTZWxlY3RvckNo
ZWNrZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKG1fc2VsZWN0b3IsIG1fZGVzY2VuZGFudFNl
bGVjdG9ySWRlbnRpZmllckhhc2hlcywgbWF4aW11bUlkZW50aWZpZXJDb3VudCk7CkBAIC0yMzcx
LDkgKzIzNzQsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEoCiAg
ICAgICAgICAgICBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgfQogICAgIGlmIChm
b3VuZFNpYmxpbmdTZWxlY3RvcikKLSAgICAgICAgZmVhdHVyZXMuc2libGluZ1J1bGVzLmFwcGVu
ZChDU1NTdHlsZVNlbGVjdG9yOjpSdWxlU2VsZWN0b3JQYWlyKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3IoKSkpOworICAgICAgICBmZWF0dXJlcy5zaWJsaW5nUnVsZXMuYXBwZW5k
KENTU1N0eWxlU2VsZWN0b3I6OlJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEu
c2VsZWN0b3IoKSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSk7CiAgICAg
aWYgKHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAgICAg
ICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChDU1NTdHlsZVNlbGVjdG9y
OjpSdWxlU2VsZWN0b3JQYWlyKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3IoKSkp
OworICAgICAgICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChDU1NTdHls
ZVNlbGVjdG9yOjpSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9y
KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOwogfQogICAgIAogdm9p
ZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1h
cCYgbWFwLCBjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCkBAIC0yMzg2LDkgKzIzODksOSBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJCiAgICAgcnVsZXMtPmFwcGVu
ZChydWxlRGF0YSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUs
IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9v
bCBpblJlZ2lvblJ1bGUpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaGFkRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9v
bCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9vbCBpblJlZ2lvblJ1bGUpCiB7Ci0gICAgUnVs
ZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3IsIG1fcnVsZUNvdW50KyssIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yLCBpblJlZ2lvblJ1bGUpOworICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUs
IHNlbGVjdG9yLCBtX3J1bGVDb3VudCsrLCBoYWREb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjYW5V
c2VGYXN0Q2hlY2tTZWxlY3RvciwgaW5SZWdpb25SdWxlKTsKICAgICBjb2xsZWN0RmVhdHVyZXNG
cm9tUnVsZURhdGEobV9mZWF0dXJlcywgcnVsZURhdGEpOwogCiAgICAgaWYgKHNlbGVjdG9yLT5t
X21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgewpAQCAtMjQzMSw3ICsyNDM0LDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRQYWdlUnVsZShDU1NQYWdlUnVsZSogcgogICAgIG1fcGFnZVJ1bGVzLmFwcGVu
ZChydWxlKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZ2lv
blJ1bGUqIHJlZ2lvblJ1bGUpCit2b2lkIFJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUoV2ViS2l0Q1NT
UmVnaW9uUnVsZSogcmVnaW9uUnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKQog
ewogICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVTZXQgPSBuZXcgUnVsZVNldDsKICAgICAvLyBUaGUg
cmVnaW9uIHJ1bGUgc2V0IHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgcG9zaXRpb24gaW5z
aWRlIHRoZSBwYXJlbnQgcnVsZSBzZXQuCkBAIC0yNDQ0LDcgKzI0NDcsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFJlZ2lvblJ1bGUoV2ViS2l0Q1NTUmVnCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJ1bGVzU2l6ZTsgKytpKSB7CiAgICAgICAgIENTU1J1bGUqIHJlZ2lvblN0eWxpbmdSdWxl
ID0gcmVnaW9uUnVsZS0+cnVsZUF0KGkpOwogICAgICAgICBpZiAocmVnaW9uU3R5bGluZ1J1bGUt
PmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLT5zdHlsZVJ1bGUo
KSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLT5zdHlsZVJ1bGUo
KSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIC8v
IFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0IHByb3BlciBvcmRlciBpcyBt
YWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxlU2V0LT5tX3J1bGVDb3VudDsK
QEAgLTI0NjcsNiArMjQ3MCw4IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NT
U3R5bGUKICAgICAgICAgaWYgKGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSAmJiAoIWltcG9ydFJ1
bGUtPm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsKGltcG9ydFJ1bGUtPm1lZGlhUXVlcmll
cygpLCBzdHlsZVNlbGVjdG9yKSkpCiAgICAgICAgICAgICBhZGRSdWxlc0Zyb21TaGVldChpbXBv
cnRSdWxlLT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgc3R5bGVTZWxlY3Rvciwgc2NvcGUpOwogICAg
IH0KKyAgICAKKyAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBzdHlsZVNlbGVj
dG9yLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHNoZWV0LT5iYXNl
VVJMKCkpOwogCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPiA+JiBydWxlcyA9IHNo
ZWV0LT5jaGlsZFJ1bGVzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNp
emUoKTsgKytpKSB7CkBAIC0yNDc0LDcgKzI0NzksNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVz
RnJvbVNoZWV0KENTU1N0eWxlCiAKICAgICAgICAgQVNTRVJUKCFydWxlLT5pc0ltcG9ydFJ1bGUo
KSk7CiAgICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQotICAgICAgICAgICAgYWRkU3R5
bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpLT5zdHlsZVJ1bGUoKSwgIXNj
b3BlKTsKKyAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUq
PihydWxlKS0+c3R5bGVSdWxlKCksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sICFzY29wZSk7
CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBh
Z2VSdWxlKHN0YXRpY19jYXN0PENTU1BhZ2VSdWxlKj4ocnVsZSkpOwogICAgICAgICBlbHNlIGlm
IChydWxlLT5pc01lZGlhUnVsZSgpKSB7CkBAIC0yNDg1LDcgKzI0OTAsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IG1lZGlhUnVsZS0+cnVsZUNvdW50KCk7IGorKykgewogICAgICAgICAg
ICAgICAgICAgICBDU1NSdWxlKiBjaGlsZFJ1bGUgPSBtZWRpYVJ1bGUtPnJ1bGVBdChqKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUnVsZS0+aXNTdHlsZVJ1bGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihj
aGlsZFJ1bGUpLT5zdHlsZVJ1bGUoKSwgIXNjb3BlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjaGlsZFJ1bGUpLT5zdHls
ZVJ1bGUoKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgIXNjb3BlKTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoY2hpbGRSdWxlLT5pc1BhZ2VSdWxlKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRQYWdlUnVsZShzdGF0aWNfY2FzdDxDU1NQYWdlUnVsZSo+KGNoaWxkUnVs
ZSkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzRm9udEZhY2VS
dWxlKCkgJiYgc3R5bGVTZWxlY3RvcikgewpAQCAtMjUyMiwxNyArMjUyNywxNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlCiAgICAgICAgICAgICAvLyBGSVhNRSAo
QlVHIDcyNDcyKTogV2UgZG9uJ3QgYWRkIEAtd2Via2l0LXJlZ2lvbiBydWxlcyBvZiBzY29wZWQg
c3R5bGUgc2hlZXRzIGZvciB0aGUgbW9tZW50LgogICAgICAgICAgICAgaWYgKHNjb3BlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYWRkUmVnaW9uUnVsZShzdGF0aWNf
Y2FzdDxXZWJLaXRDU1NSZWdpb25SdWxlKj4ocnVsZSkpOworICAgICAgICAgICAgYWRkUmVnaW9u
UnVsZShzdGF0aWNfY2FzdDxXZWJLaXRDU1NSZWdpb25SdWxlKj4ocnVsZSksIGhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4pOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChtX2F1dG9TaHJpbmtU
b0ZpdEVuYWJsZWQpCiAgICAgICAgIHNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgUnVsZVNldDo6
YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSogcnVsZSwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3Rv
ciwgYm9vbCBpc0luUmVnaW9uUnVsZSkKK3ZvaWQgUnVsZVNldDo6YWRkU3R5bGVSdWxlKFN0eWxl
UnVsZSogcnVsZSwgYm9vbCBoYWREb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZh
c3RDaGVja1NlbGVjdG9yLCBib29sIGlzSW5SZWdpb25SdWxlKQogewogICAgIGZvciAoQ1NTU2Vs
ZWN0b3IqIHMgPSBydWxlLT5zZWxlY3Rvckxpc3QoKS5maXJzdCgpOyBzOyBzID0gQ1NTU2VsZWN0
b3JMaXN0OjpuZXh0KHMpKQotICAgICAgICBhZGRSdWxlKHJ1bGUsIHMsIGNhblVzZUZhc3RDaGVj
a1NlbGVjdG9yLCBpc0luUmVnaW9uUnVsZSk7CisgICAgICAgIGFkZFJ1bGUocnVsZSwgcywgaGFk
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGlzSW5SZWdp
b25SdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNocmlua01hcFZlY3RvcnNUb0ZpdChS
dWxlU2V0OjpBdG9tUnVsZU1hcCYgbWFwKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCShyZXZpc2lvbiAxMTI2NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTAgKzIzOCwxNiBAQCBwdWJsaWM6
CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKLSAgICBzdHJ1Y3QgUnVs
ZVNlbGVjdG9yUGFpciB7Ci0gICAgICAgIFJ1bGVTZWxlY3RvclBhaXIoU3R5bGVSdWxlKiBydWxl
LCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpIDogcnVsZShydWxlKSwgc2VsZWN0b3Ioc2VsZWN0b3Ip
IHsgfQorICAgIHN0cnVjdCBSdWxlRmVhdHVyZSB7CisgICAgICAgIFJ1bGVGZWF0dXJlKFN0eWxl
UnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBib29sIGhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4pCisgICAgICAgICAgICA6IHJ1bGUocnVsZSkKKyAgICAgICAgICAgICwgc2VsZWN0
b3Ioc2VsZWN0b3IpCisgICAgICAgICAgICAsIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbikgCisgICAgICAgIHsgCisgICAgICAgIH0KICAgICAgICAg
U3R5bGVSdWxlKiBydWxlOwogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CisgICAgICAg
IGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICB9OwogICAgIHN0cnVjdCBGZWF0
dXJlcyB7CiAgICAgICAgIEZlYXR1cmVzKCk7CkBAIC0yNTAsOCArMjU2LDggQEAgcHVibGljOgog
ICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
IGlkc0luUnVsZXM7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGF0dHJzSW5S
dWxlczsKLSAgICAgICAgVmVjdG9yPFJ1bGVTZWxlY3RvclBhaXI+IHNpYmxpbmdSdWxlczsKLSAg
ICAgICAgVmVjdG9yPFJ1bGVTZWxlY3RvclBhaXI+IHVuY29tbW9uQXR0cmlidXRlUnVsZXM7Cisg
ICAgICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gc2libGluZ1J1bGVzOworICAgICAgICBWZWN0b3I8
UnVsZUZlYXR1cmU+IHVuY29tbW9uQXR0cmlidXRlUnVsZXM7CiAgICAgICAgIGJvb2wgdXNlc0Zp
cnN0TGluZVJ1bGVzOwogICAgICAgICBib29sIHVzZXNCZWZvcmVBZnRlclJ1bGVzOwogICAgICAg
ICBib29sIHVzZXNMaW5rUnVsZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134878</attachid>
            <date>2012-03-30 14:06:14 -0700</date>
            <delta_ts>2012-03-30 14:21:49 -0700</delta_ts>
            <desc>null check style selector</desc>
            <filename>ruledata-origin-2.patch</filename>
            <type>text/plain</type>
            <size>13029</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTMwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZSBvcmlnaW4gY2hlY2sg
cmVzdWx0IHRvIFJ1bGVEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mjc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFlvdSB3YW4ndCBiZSBhYmxlIHRvIGdldCBiYWNrIHRvIHRoZSBzdHlsZXNoZWV0
IGZyb20gYSBjc3Mgc3R5bGUgcnVsZSBzb29uLiAKKyAgICAgICAgV2UgbmVlZCB0byBkbyB0aGUg
b3JpZ2luIGNoZWNrIHdoZW4gd2Uga25vdyB0aGUgc2hlZXQgaXQgY2FtZSBmcm9tLgorCisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoUnVsZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZURhdGE6Omhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOgorICAg
ICAgICAoUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjptYWtlUnVsZVNldCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVyZTo6UnVsZUZlYXR1cmUpOgorICAgICAgICAoUnVs
ZUZlYXR1cmUpOgorICAgICAgICAoRmVhdHVyZXMpOgorCiAyMDEyLTAzLTMwICBKb2UgTWFzb24g
IDxqbWFzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTWFrZSBzdXJlIHN0cmlu
Z3MgZG8gbm90IGxlYWsgaW4gUGx1Z2luVmlld0JsYWNrYmVycnkuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxMTI2NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3
ICsxODEsNyBAQCBpZiAocHJpbWl0aXZlVmFsdWUpIFwKIAogY2xhc3MgUnVsZURhdGEgewogcHVi
bGljOgotICAgIFJ1bGVEYXRhKFN0eWxlUnVsZSosIENTU1NlbGVjdG9yKiwgdW5zaWduZWQgcG9z
aXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKTsK
KyAgICBSdWxlRGF0YShTdHlsZVJ1bGUqLCBDU1NTZWxlY3RvciosIHVuc2lnbmVkIHBvc2l0aW9u
LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2Vs
ZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKTsKIAogICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAgIFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcnVsZTsgfQpAQCAtMTkzLDYgKzE5Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFp
bnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yOyB9CiAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHko
KSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljaXR5OyB9CiAgICAgdW5zaWduZWQgbGlua01hdGNo
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua01hdGNoVHlwZTsgfQorICAgIGJvb2wgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbjsgfQogICAgIGJvb2wgaXNJblJlZ2lvblJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5SZWdpb25SdWxlOyB9CiAKICAgICAvLyBUcnkgdG8gYmFsYW5jZSBiZXR3ZWVuIG1lbW9yeSB1
c2FnZSAodGhlcmUgY2FuIGJlIGxvdHMgb2YgUnVsZURhdGEgb2JqZWN0cykgYW5kIGdvb2QgZmls
dGVyaW5nIHBlcmZvcm1hbmNlLgpAQCAtMjA1LDEyICsyMDYsMTMgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX3NwZWNpZmljaXR5OwogICAgIC8vIFRoaXMgbnVtYmVyIHdhcyBwaWNrZWQgZmFp
cmx5IGFyYml0cmFyaWx5LiBXZSBjYW4gcHJvYmFibHkgbG93ZXIgaXQgaWYgd2UgbmVlZCB0by4K
ICAgICAvLyBTb21lIHNpbXBsZSB0ZXN0aW5nIHNob3dlZCA8MTAwLDAwMCBSdWxlRGF0YSdzIG9u
IGxhcmdlIHNpdGVzLgotICAgIHVuc2lnbmVkIG1fcG9zaXRpb24gOiAyNTsKKyAgICB1bnNpZ25l
ZCBtX3Bvc2l0aW9uIDogMjQ7CiAgICAgdW5zaWduZWQgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3IgOiAxOwogICAgIHVu
c2lnbmVkIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2gg
OiAxOwogICAgIHVuc2lnbmVkIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIDog
MTsKICAgICB1bnNpZ25lZCBtX2xpbmtNYXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2Vy
OjpMaW5rTWF0Y2hNYXNrCisgICAgdW5zaWduZWQgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
IDogMTsKICAgICB1bnNpZ25lZCBtX2lzSW5SZWdpb25SdWxlIDogMTsKICAgICAvLyBVc2UgcGxh
aW4gYXJyYXkgaW5zdGVhZCBvZiBhIFZlY3RvciB0byBtaW5pbWl6ZSBtZW1vcnkgb3ZlcmhlYWQu
CiAgICAgdW5zaWduZWQgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzW21heGlt
dW1JZGVudGlmaWVyQ291bnRdOwpAQCAtMjM1LDExICsyMzcsMTEgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgTWVkaWFRdWVyeUV2
YWx1YXRvciYsIENTU1N0eWxlU2VsZWN0b3IqID0gMCwgY29uc3QgQ29udGFpbmVyTm9kZSogPSAw
KTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVsZSosIGJvb2wgY2FuVXNlRmFzdENo
ZWNrU2VsZWN0b3IgPSB0cnVlLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOwotICAgIHZv
aWQgYWRkUnVsZShTdHlsZVJ1bGUqLCBDU1NTZWxlY3RvciosIGJvb2wgY2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IgPSB0cnVlLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOworICAgIHZvaWQg
YWRkU3R5bGVSdWxlKFN0eWxlUnVsZSosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwg
Ym9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9vbCBpc0luUmVnaW9uUnVsZSA9IGZhbHNl
KTsKKyAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgQ1NTU2VsZWN0b3IqLCBib29sIGhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wg
aXNJblJlZ2lvblJ1bGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRQYWdlUnVsZShDU1NQYWdlUnVs
ZSopOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1
bGVNYXAmLCBjb25zdCBSdWxlRGF0YSYpOwotICAgIHZvaWQgYWRkUmVnaW9uUnVsZShXZWJLaXRD
U1NSZWdpb25SdWxlKik7CisgICAgdm9pZCBhZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZ2lvblJ1
bGUqLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pOwogICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1Nocmlua1Rv
Rml0RW5hYmxlZCA9IGZhbHNlOyB9CiAKQEAgLTQyMiwxNCArNDI0LDE0IEBAIENTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICBhcHBlbmRBdXRob3JTdHlsZXNoZWV0
cygwLCBkb2N1bWVudC0+c3R5bGVTaGVldHMoKS0+dmVjdG9yKCkpOwogfQogICAgIAotc3RhdGlj
IFBhc3NPd25QdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPENTU1N0eWxlU2Vs
ZWN0b3I6OlJ1bGVTZWxlY3RvclBhaXI+JiBydWxlcykKK3N0YXRpYyBQYXNzT3duUHRyPFJ1bGVT
ZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxDU1NTdHlsZVNlbGVjdG9yOjpSdWxlRmVhdHVy
ZT4mIHJ1bGVzKQogewogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAgIGlmICgh
c2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVT
ZXQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVsZXNb
aV0uc2VsZWN0b3IpOworICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1
bGVzW2ldLnNlbGVjdG9yLCBydWxlc1tpXS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHJ1bGVTZXQucmVsZWFzZSgpOwogfQogCkBAIC0xMDI0LDggKzEwMjYs
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogRXhwb3NpbmcgZ2V0TWF0Y2hlZENTU1J1bGVzIGFzIGEgd2ViIGZhY2luZyBB
UEkgaXMgZm9yY2luZyB1cyB0byBoYXZlIGEgd2F5IHRvIGdldCB0aGUgYmFzZSBVUkwgcGVyLXJ1
bGUuCi0gICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAmJiAhbV9jaGVja2VyLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVsZS0+ZW5zdXJlQ1NTU3R5bGVS
dWxlKCktPmJhc2VVUkwoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2luZyB0aGUg
bm9uLXN0YW5kYXJkIGdldE1hdGNoZWRDU1NSdWxlcyBBUEkgdG8gd2ViIGlzIHRoZSBvbmx5IHJl
YXNvbiB0aGlzIGlzIG5lZWRlZC4KKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYm
ICFydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpIHsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIzMTEsNyArMjMx
Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc1VuY29tbW9uQXR0cmkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxlRGF0YShTdHlsZVJ1bGUqIHJ1bGUsIENTU1Nl
bGVjdG9yKiBzZWxlY3RvciwgdW5zaWduZWQgcG9zaXRpb24sIGJvb2wgY2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKQorUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVs
ZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbiwgYm9vbCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVjdG9yLCBi
b29sIGluUmVnaW9uUnVsZSkKICAgICA6IG1fcnVsZShydWxlKQogICAgICwgbV9zZWxlY3Rvcihz
ZWxlY3RvcikKICAgICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3ItPnNwZWNpZmljaXR5KCkpCkBA
IC0yMzIxLDYgKzIzMjMsNyBAQCBSdWxlRGF0YTo6UnVsZURhdGEoU3R5bGVSdWxlKiBydWxlLCBD
U1NTCiAgICAgLCBtX2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVI
YXNoKGlzU2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNlZE9uUnVsZUhhc2goc2VsZWN0b3IpKQogICAg
ICwgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoV2ViQ29yZTo6Y29udGFpbnNV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKHNlbGVjdG9yKSkKICAgICAsIG1fbGlua01hdGNoVHlw
ZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoc2VsZWN0b3IpKQorICAg
ICwgbV9oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4p
CiAgICAgLCBtX2lzSW5SZWdpb25SdWxlKGluUmVnaW9uUnVsZSkKIHsKICAgICBTZWxlY3RvckNo
ZWNrZXI6OmNvbGxlY3RJZGVudGlmaWVySGFzaGVzKG1fc2VsZWN0b3IsIG1fZGVzY2VuZGFudFNl
bGVjdG9ySWRlbnRpZmllckhhc2hlcywgbWF4aW11bUlkZW50aWZpZXJDb3VudCk7CkBAIC0yMzcx
LDkgKzIzNzQsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEoCiAg
ICAgICAgICAgICBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgfQogICAgIGlmIChm
b3VuZFNpYmxpbmdTZWxlY3RvcikKLSAgICAgICAgZmVhdHVyZXMuc2libGluZ1J1bGVzLmFwcGVu
ZChDU1NTdHlsZVNlbGVjdG9yOjpSdWxlU2VsZWN0b3JQYWlyKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3IoKSkpOworICAgICAgICBmZWF0dXJlcy5zaWJsaW5nUnVsZXMuYXBwZW5k
KENTU1N0eWxlU2VsZWN0b3I6OlJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEu
c2VsZWN0b3IoKSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSk7CiAgICAg
aWYgKHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAgICAg
ICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChDU1NTdHlsZVNlbGVjdG9y
OjpSdWxlU2VsZWN0b3JQYWlyKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3IoKSkp
OworICAgICAgICBmZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChDU1NTdHls
ZVNlbGVjdG9yOjpSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9y
KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOwogfQogICAgIAogdm9p
ZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1h
cCYgbWFwLCBjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCkBAIC0yMzg2LDkgKzIzODksOSBAQCB2
b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJCiAgICAgcnVsZXMtPmFwcGVu
ZChydWxlRGF0YSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUs
IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9v
bCBpblJlZ2lvblJ1bGUpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9v
bCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgYm9vbCBpblJlZ2lvblJ1bGUpCiB7Ci0gICAgUnVs
ZURhdGEgcnVsZURhdGEocnVsZSwgc2VsZWN0b3IsIG1fcnVsZUNvdW50KyssIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yLCBpblJlZ2lvblJ1bGUpOworICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUs
IHNlbGVjdG9yLCBtX3J1bGVDb3VudCsrLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjYW5V
c2VGYXN0Q2hlY2tTZWxlY3RvciwgaW5SZWdpb25SdWxlKTsKICAgICBjb2xsZWN0RmVhdHVyZXNG
cm9tUnVsZURhdGEobV9mZWF0dXJlcywgcnVsZURhdGEpOwogCiAgICAgaWYgKHNlbGVjdG9yLT5t
X21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkgewpAQCAtMjQzMSw3ICsyNDM0LDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRQYWdlUnVsZShDU1NQYWdlUnVsZSogcgogICAgIG1fcGFnZVJ1bGVzLmFwcGVu
ZChydWxlKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRSZWdpb25SdWxlKFdlYktpdENTU1JlZ2lv
blJ1bGUqIHJlZ2lvblJ1bGUpCit2b2lkIFJ1bGVTZXQ6OmFkZFJlZ2lvblJ1bGUoV2ViS2l0Q1NT
UmVnaW9uUnVsZSogcmVnaW9uUnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKQog
ewogICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVTZXQgPSBuZXcgUnVsZVNldDsKICAgICAvLyBUaGUg
cmVnaW9uIHJ1bGUgc2V0IHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgcG9zaXRpb24gaW5z
aWRlIHRoZSBwYXJlbnQgcnVsZSBzZXQuCkBAIC0yNDQ0LDcgKzI0NDcsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFJlZ2lvblJ1bGUoV2ViS2l0Q1NTUmVnCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJ1bGVzU2l6ZTsgKytpKSB7CiAgICAgICAgIENTU1J1bGUqIHJlZ2lvblN0eWxpbmdSdWxl
ID0gcmVnaW9uUnVsZS0+cnVsZUF0KGkpOwogICAgICAgICBpZiAocmVnaW9uU3R5bGluZ1J1bGUt
PmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLT5zdHlsZVJ1bGUo
KSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICByZWdpb25SdWxlU2V0LT5hZGRTdHlsZVJ1bGUo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocmVnaW9uU3R5bGluZ1J1bGUpLT5zdHlsZVJ1bGUo
KSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIC8v
IFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0IHByb3BlciBvcmRlciBpcyBt
YWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxlU2V0LT5tX3J1bGVDb3VudDsK
QEAgLTI0NjcsNiArMjQ3MCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NT
U3R5bGUKICAgICAgICAgaWYgKGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSAmJiAoIWltcG9ydFJ1
bGUtPm1lZGlhUXVlcmllcygpIHx8IG1lZGl1bS5ldmFsKGltcG9ydFJ1bGUtPm1lZGlhUXVlcmll
cygpLCBzdHlsZVNlbGVjdG9yKSkpCiAgICAgICAgICAgICBhZGRSdWxlc0Zyb21TaGVldChpbXBv
cnRSdWxlLT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgc3R5bGVTZWxlY3Rvciwgc2NvcGUpOwogICAg
IH0KKyAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBzdHlsZVNlbGVjdG9yICYm
IHN0eWxlU2VsZWN0b3ItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
c2hlZXQtPmJhc2VVUkwoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1J1bGU+ID4m
IHJ1bGVzID0gc2hlZXQtPmNoaWxkUnVsZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcnVsZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTI0NzQsNyArMjQ3OCw3IEBAIHZvaWQgUnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGUKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlz
SW1wb3J0UnVsZSgpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAg
ICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSktPnN0eWxl
UnVsZSgpLCAhc2NvcGUpOworICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENT
U1N0eWxlUnVsZSo+KHJ1bGUpLT5zdHlsZVJ1bGUoKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdp
biwgIXNjb3BlKTsKICAgICAgICAgZWxzZSBpZiAocnVsZS0+aXNQYWdlUnVsZSgpKQogICAgICAg
ICAgICAgYWRkUGFnZVJ1bGUoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUqPihydWxlKSk7CiAgICAg
ICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVkaWFSdWxlKCkpIHsKQEAgLTI0ODUsNyArMjQ4OSw3IEBA
IHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGUKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbWVkaWFSdWxlLT5ydWxlQ291bnQoKTsgaisrKSB7
CiAgICAgICAgICAgICAgICAgICAgIENTU1J1bGUqIGNoaWxkUnVsZSA9IG1lZGlhUnVsZS0+cnVs
ZUF0KGopOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRSdWxlLT5pc1N0eWxlUnVsZSgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0
eWxlUnVsZSo+KGNoaWxkUnVsZSktPnN0eWxlUnVsZSgpLCAhc2NvcGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNoaWxk
UnVsZSktPnN0eWxlUnVsZSgpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCAhc2NvcGUpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PENTU1BhZ2VSdWxl
Kj4oY2hpbGRSdWxlKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkUnVsZS0+
aXNGb250RmFjZVJ1bGUoKSAmJiBzdHlsZVNlbGVjdG9yKSB7CkBAIC0yNTIyLDE3ICsyNTI2LDE3
IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGUKICAgICAgICAgICAg
IC8vIEZJWE1FIChCVUcgNzI0NzIpOiBXZSBkb24ndCBhZGQgQC13ZWJraXQtcmVnaW9uIHJ1bGVz
IG9mIHNjb3BlZCBzdHlsZSBzaGVldHMgZm9yIHRoZSBtb21lbnQuCiAgICAgICAgICAgICBpZiAo
c2NvcGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBhZGRSZWdpb25S
dWxlKHN0YXRpY19jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPihydWxlKSk7CisgICAgICAgICAg
ICBhZGRSZWdpb25SdWxlKHN0YXRpY19jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPihydWxlKSwg
aGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG1f
YXV0b1Nocmlua1RvRml0RW5hYmxlZCkKICAgICAgICAgc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9p
ZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBib29sIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yLCBib29sIGlzSW5SZWdpb25SdWxlKQordm9pZCBSdWxlU2V0OjphZGRTdHls
ZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJv
b2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJblJlZ2lvblJ1bGUpCiB7CiAgICAg
Zm9yIChDU1NTZWxlY3RvciogcyA9IHJ1bGUtPnNlbGVjdG9yTGlzdCgpLmZpcnN0KCk7IHM7IHMg
PSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQocykpCi0gICAgICAgIGFkZFJ1bGUocnVsZSwgcywgY2Fu
VXNlRmFzdENoZWNrU2VsZWN0b3IsIGlzSW5SZWdpb25SdWxlKTsKKyAgICAgICAgYWRkUnVsZShy
dWxlLCBzLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3Rv
ciwgaXNJblJlZ2lvblJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2hyaW5rTWFwVmVj
dG9yc1RvRml0KFJ1bGVTZXQ6OkF0b21SdWxlTWFwJiBtYXApCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDExMjY2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxMCArMjM4LDE2
IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKIAotICAg
IHN0cnVjdCBSdWxlU2VsZWN0b3JQYWlyIHsKLSAgICAgICAgUnVsZVNlbGVjdG9yUGFpcihTdHls
ZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWxlY3RvcikgOiBydWxlKHJ1bGUpLCBzZWxlY3Rv
cihzZWxlY3RvcikgeyB9CisgICAgc3RydWN0IFJ1bGVGZWF0dXJlIHsKKyAgICAgICAgUnVsZUZl
YXR1cmUoU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbikKKyAgICAgICAgICAgIDogcnVsZShydWxlKQorICAgICAgICAg
ICAgLCBzZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgICAgICwgaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbihoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKSAKKyAgICAgICAgeyAKKyAgICAgICAg
fQogICAgICAgICBTdHlsZVJ1bGUqIHJ1bGU7CiAgICAgICAgIENTU1NlbGVjdG9yKiBzZWxlY3Rv
cjsKKyAgICAgICAgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luOwogICAgIH07CiAgICAg
c3RydWN0IEZlYXR1cmVzIHsKICAgICAgICAgRmVhdHVyZXMoKTsKQEAgLTI1MCw4ICsyNTYsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHZvaWQgY2xlYXIoKTsKICAgICAgICAgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4gaWRzSW5SdWxlczsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4gYXR0cnNJblJ1bGVzOwotICAgICAgICBWZWN0b3I8UnVsZVNlbGVjdG9yUGFpcj4gc2libGlu
Z1J1bGVzOwotICAgICAgICBWZWN0b3I8UnVsZVNlbGVjdG9yUGFpcj4gdW5jb21tb25BdHRyaWJ1
dGVSdWxlczsKKyAgICAgICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBzaWJsaW5nUnVsZXM7CisgICAg
ICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gdW5jb21tb25BdHRyaWJ1dGVSdWxlczsKICAgICAgICAg
Ym9vbCB1c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgICAgIGJvb2wgdXNlc0JlZm9yZUFmdGVyUnVs
ZXM7CiAgICAgICAgIGJvb2wgdXNlc0xpbmtSdWxlczsK
</data>
<flag name="review"
          id="139244"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>