<?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>120461</bug_id>
          
          <creation_ts>2013-08-29 04:04:42 -0700</creation_ts>
          <short_desc>Move element renderer creation out of NodeRenderingContext</short_desc>
          <delta_ts>2013-08-29 05:48:31 -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>DOM</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922395</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-29 04:04:42 -0700</bug_when>
    <thetext>Whittle down NodeRenderingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922398</commentid>
    <comment_count>1</comment_count>
      <attachid>209965</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-29 04:49:53 -0700</bug_when>
    <thetext>Created attachment 209965
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922400</commentid>
    <comment_count>2</comment_count>
      <attachid>209965</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-29 04:55:44 -0700</bug_when>
    <thetext>Comment on attachment 209965
patch

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

r=me, nice!

&gt; Source/WebCore/style/StyleResolveTree.cpp:137
&gt; +    if (!element.document()-&gt;shouldCreateRenderers())
&gt; +        return false;

We should hoist this check up to the Document level so we don&apos;t have to run it for every Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922421</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-29 05:48:31 -0700</bug_when>
    <thetext>https://trac.webkit.org/r154806</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209965</attachid>
            <date>2013-08-29 04:49:53 -0700</date>
            <delta_ts>2013-08-29 04:55:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>create-renderer-no-noderenderingcontext-4.patch</filename>
            <type>text/plain</type>
            <size>19891</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTA4LTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGVsZW1lbnQgcmVuZGVy
ZXIgY3JlYXRpb24gb3V0IG9mIE5vZGVSZW5kZXJpbmdDb250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0NjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkgYW5kIHRoZSByZWxhdGVkIHV0aWxpdHkgZnVuY3Rp
b25zIHRvIFN0eWxlUmVzb2x2ZVRyZWUuCisgICAgICAgIAorICAgICAgICBUaWdodGVuIHR5cGlu
ZyBhbmQgY29uc3RuZXNzLiBSZWZhY3RvciBzbGlndGhseSB0byBiZSBtb3JlIHVuZGVyc3RhbmRh
YmxlLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2hvdWxkTW92ZVRvRmxvd1RocmVhZCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBkb20vUHNldWRvRWxl
bWVudC5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6Om5leHRTaWJsaW5nUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OnNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpl
bGVtZW50SW5zaWRlUmVnaW9uTmVlZHNSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6bW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpj
cmVhdGVSZW5kZXJlcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjphdHRhY2hS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzaG91bGRNb3ZlVG9GbG93VGhyZWFkKToKKyAgICAgICAgKiBzdmcv
U1ZHRWxlbWVudC5oOgorCiAyMDEzLTA4LTI4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+CiAKICAgICAgICAgQVg6IFdlYlByb2Nlc3MgYXQgY29tLmFwcGxlLldlYkNvcmU6
IFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RPYmplY3QgKyAyNwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMTU0ODA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjc3LDEwICsyNjc3LDggQEAgUmVuZGVyUmVnaW9u
KiBFbGVtZW50OjpyZW5kZXJSZWdpb24oKSBjbwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQog
Ci1ib29sIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoUmVuZGVyU3R5bGUqIHN0eWxl
VG9Vc2UpIGNvbnN0Citib29sIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2Up
OwotCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChkb2N1bWVudCgpLT53ZWJr
aXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjg5LDcgKzI2ODcs
NyBAQCBib29sIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoUmVuCiAgICAgaWYgKGlz
SW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdHlsZVRv
VXNlLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgIGlmIChzdHlsZVRvVXNlLmZsb3dUaHJl
YWQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiAhaXNS
ZWdpc3RlcmVkV2l0aE5hbWVkRmxvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lv
biAxNTQ4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MjUsNyArNTI1LDcgQEAgcHVibGljOgogICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVn
aW9uKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgdmlydHVhbCBib29s
IHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0Owog
ICAgIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgd2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4gd2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAxNTQ4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMyArNTQsNiBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9kZShub2RlKQotICAgICwgbV9wYXJlbnRGbG93
UmVuZGVyZXIoMCkKLXsKLSAgICBtX3JlbmRlcmluZ1BhcmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnBhcmVudChub2RlKTsKLX0KLQotTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKLSAgICA6IG1fbm9k
ZShub2RlKQotICAgICwgbV9yZW5kZXJpbmdQYXJlbnQoMCkKLSAgICAsIG1fc3R5bGUoc3R5bGUp
Ci0gICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQotewotfQotCi1Ob2RlUmVuZGVyaW5nQ29u
dGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSwgY29uc3QgU3R5bGU6OkF0dGFj
aENvbnRleHQmIGNvbnRleHQpCi0gICAgOiBtX25vZGUobm9kZSkKLSAgICAsIG1fc3R5bGUoY29u
dGV4dC5yZXNvbHZlZFN0eWxlKQotICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKICAg
ICBtX3JlbmRlcmluZ1BhcmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudChub2Rl
KTsKIH0KQEAgLTExMSw5ICs5NCw2IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Om5leHQKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2Rl
KG1fbm9kZSk7Ci0KICAgICAvLyBBdm9pZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVu
Y3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhl
IHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRhY2hlZCB5ZXQuCiAgICAgaWYgKG1fcmVuZGVyaW5n
UGFyZW50ICYmICFtX3JlbmRlcmluZ1BhcmVudC0+YXR0YWNoZWQoKSkKQEAgLTE0MCw5ICsxMjAs
NiBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2CiAgICAgQVNTRVJU
KCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhdG9FbGVtZW50KG1fbm9kZSktPmlzSW5Ub3BM
YXllcigpKTsKICNlbmRpZgogCi0gICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1f
bm9kZSk7Ci0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgTyhOXjIpIGF2
b2lkYW5jZSBhcyBuZXh0UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmll
ZCBhZGRpbmcgaXQsIHNldmVyYWwgdGVzdHMgZmFpbGVkLgogICAgIGZvciAoTm9kZSogc2libGlu
ZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhtX25vZGUpOyBzaWJs
aW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKHNp
YmxpbmcpKSB7CkBAIC0xNzMsMTE4ICsxNTAsOSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpwYXJlCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobV9wYXJlbnRGbG93UmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKLQogICAgIHJldHVy
biBtX3JlbmRlcmluZ1BhcmVudCA/IG1fcmVuZGVyaW5nUGFyZW50LT5yZW5kZXJlcigpIDogMDsK
IH0KIAotYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBj
b25zdAotewotICAgIGlmICghbV9ub2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJl
cnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVy
ID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxk
cmVuKCkgJiYgIShtX25vZGUtPmlzUHNldWRvRWxlbWVudCgpICYmIHBhcmVudFJlbmRlcmVyLT5j
YW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIW1fcmVuZGVyaW5nUGFyZW50LT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKG1fbm9kZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQ2hlY2sg
dGhlIHNwZWNpZmljIGNhc2Ugb2YgZWxlbWVudHMgdGhhdCBhcmUgY2hpbGRyZW4gb2YgcmVnaW9u
cyBidXQgYXJlIGZsb3dlZCBpbnRvIGEgZmxvdyB0aHJlYWQgdGhlbXNlbHZlcy4KLWJvb2wgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OmVsZW1lbnRJbnNpZGVSZWdpb25OZWVkc1JlbmRlcmVyKCkKLXsK
LSAgICBib29sIGVsZW1lbnRJbnNpZGVSZWdpb25OZWVkc1JlbmRlcmVyID0gZmFsc2U7Ci0KLSNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCht
X25vZGUpOwotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRS
ZW5kZXJlcigpOwotICAgIGlmICgocGFyZW50UmVuZGVyZXIgJiYgIXBhcmVudFJlbmRlcmVyLT5j
YW5IYXZlQ2hpbGRyZW4oKSAmJiBwYXJlbnRSZW5kZXJlci0+aXNSZW5kZXJSZWdpb24oKSkKLSAg
ICAgICAgfHwgKCFwYXJlbnRSZW5kZXJlciAmJiBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkgJiYg
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5pc0luc2lkZVJlZ2lvbigpKSkgewotCi0gICAgICAg
IGlmICghbV9zdHlsZSkKLSAgICAgICAgICAgIG1fc3R5bGUgPSBlbGVtZW50LT5zdHlsZUZvclJl
bmRlcmVyKCk7Ci0KLSAgICAgICAgZWxlbWVudEluc2lkZVJlZ2lvbk5lZWRzUmVuZGVyZXIgPSBl
bGVtZW50LT5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKG1fc3R5bGUuZ2V0KCkpOwotCi0gICAgICAg
IC8vIENoaWxkcmVuIG9mIHRoaXMgZWxlbWVudCB3aWxsIG9ubHkgYmUgYWxsb3dlZCB0byBiZSBm
bG93ZWQgaW50byBvdGhlciBmbG93LXRocmVhZHMgaWYgZGlzcGxheSBpcyBOT1Qgbm9uZS4KLSAg
ICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVySXNOZWVkZWQoKm1fc3R5bGUpKQotICAgICAgICAg
ICAgZWxlbWVudC0+c2V0SXNJbnNpZGVSZWdpb24odHJ1ZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICByZXR1cm4gZWxlbWVudEluc2lkZVJlZ2lvbk5lZWRzUmVuZGVyZXI7Ci19Ci0KLXZvaWQgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpCi17Ci0jaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9ub2Rl
KTsKLQotICAgIGlmICghZWxlbWVudC0+c2hvdWxkTW92ZVRvRmxvd1RocmVhZChtX3N0eWxlLmdl
dCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fbm9kZS0+ZG9jdW1lbnQoKS0+
cmVuZGVyVmlldygpKTsKLSAgICBGbG93VGhyZWFkQ29udHJvbGxlciYgZmxvd1RocmVhZENvbnRy
b2xsZXIgPSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRy
b2xsZXIoKTsKLSAgICBtX3BhcmVudEZsb3dSZW5kZXJlciA9ICZmbG93VGhyZWFkQ29udHJvbGxl
ci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUobV9zdHlsZS0+Zmxvd1RocmVhZCgpKTsK
LSAgICBmbG93VGhyZWFkQ29udHJvbGxlci5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKG1f
bm9kZSwgbV9wYXJlbnRGbG93UmVuZGVyZXIpOwotI2VuZGlmCi19Ci0KLXZvaWQgTm9kZVJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKLXsKLSAgICBB
U1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7Ci0KLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9F
bGVtZW50KG1fbm9kZSk7Ci0KLSAgICBlbGVtZW50LT5zZXRJc0luc2lkZVJlZ2lvbihmYWxzZSk7
Ci0KLSAgICBpZiAoIXNob3VsZENyZWF0ZVJlbmRlcmVyKCkgJiYgIWVsZW1lbnRJbnNpZGVSZWdp
b25OZWVkc1JlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9zdHlsZSkK
LSAgICAgICAgbV9zdHlsZSA9IGVsZW1lbnQtPnN0eWxlRm9yUmVuZGVyZXIoKTsKLSAgICBBU1NF
UlQobV9zdHlsZSk7Ci0KLSAgICBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKLQotICAgIGlm
ICghZWxlbWVudC0+cmVuZGVyZXJJc05lZWRlZCgqbV9zdHlsZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRSZW5kZXJl
cigpOwotICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyID0gdGhpcy0+bmV4dFJlbmRlcmVy
KCk7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwotICAg
IFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBlbGVtZW50LT5jcmVhdGVSZW5kZXJlcihkb2N1
bWVudC0+cmVuZGVyQXJlbmEoKSwgbV9zdHlsZS5nZXQoKSk7Ci0gICAgaWYgKCFuZXdSZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghcGFyZW50UmVuZGVyZXItPmlzQ2hpbGRBbGxv
d2VkKG5ld1JlbmRlcmVyLCBtX3N0eWxlLmdldCgpKSkgewotICAgICAgICBuZXdSZW5kZXJlci0+
ZGVzdHJveSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gTWFrZSBzdXJlIHRo
ZSBSZW5kZXJPYmplY3QgYWxyZWFkeSBrbm93cyBpdCBpcyBnb2luZyB0byBiZSBhZGRlZCB0byBh
IFJlbmRlckZsb3dUaHJlYWQgYmVmb3JlIHdlIHNldCB0aGUgc3R5bGUKLSAgICAvLyBmb3IgdGhl
IGZpcnN0IHRpbWUuIE90aGVyd2lzZSBjb2RlIHVzaW5nIGluUmVuZGVyRmxvd1RocmVhZCgpIGlu
IHRoZSBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlIHdpbGwgZmFpbC4KLSAgICBu
ZXdSZW5kZXJlci0+c2V0Rmxvd1RocmVhZFN0YXRlKHBhcmVudFJlbmRlcmVyLT5mbG93VGhyZWFk
U3RhdGUoKSk7Ci0KLSAgICBlbGVtZW50LT5zZXRSZW5kZXJlcihuZXdSZW5kZXJlcik7Ci0gICAg
bmV3UmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShtX3N0eWxlLnJlbGVhc2UoKSk7IC8vIHNl
dEFuaW1hdGFibGVTdHlsZSgpIGNhbiBkZXBlbmQgb24gcmVuZGVyZXIoKSBhbHJlYWR5IGJlaW5n
IHNldC4KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1lbnQtPndl
YmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQoKSA9PSBlbGVtZW50KSB7Ci0gICAgICAgIG5ld1JlbmRlcmVyID0gUmVuZGVyRnVsbFNj
cmVlbjo6d3JhcFJlbmRlcmVyKG5ld1JlbmRlcmVyLCBwYXJlbnRSZW5kZXJlciwgZG9jdW1lbnQp
OwotICAgICAgICBpZiAoIW5ld1JlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZgotICAgIC8vIE5vdGU6IEFkZGluZyBuZXdSZW5kZXJlciBpbnN0ZWFkIG9mIHJlbmRl
cmVyKCkuIHJlbmRlcmVyKCkgbWF5IGJlIGEgY2hpbGQgb2YgbmV3UmVuZGVyZXIuCi0gICAgcGFy
ZW50UmVuZGVyZXItPmFkZENoaWxkKG5ld1JlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOwotfQotCiBi
b29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdAog
ewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDE1
NDgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIE5vZGVSZW5kZXJpbmdDb250ZXh0
X2gKIAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlICJTdHls
ZVJlc29sdmVUcmVlLmgiCiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkBAIC0zNiwyMiArMzUsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGFpbmVyTm9kZTsKLWNsYXNzIERvY3VtZW50OwotY2xhc3MgSW5zZXJ0aW9u
UG9pbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIE5vZGVSZW5kZXJpbmdD
b250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
Kik7Ci0gICAgTm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSosIFJlbmRlclN0eWxlKik7Ci0gICAg
Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSosIGNvbnN0IFN0eWxlOjpBdHRhY2hDb250ZXh0Jik7
CiAgICAgfk5vZGVSZW5kZXJpbmdDb250ZXh0KCk7CiAKLSAgICB2b2lkIGNyZWF0ZVJlbmRlcmVy
Rm9yRWxlbWVudElmTmVlZGVkKCk7Ci0KICAgICBOb2RlKiBub2RlKCkgY29uc3Q7CiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsKQEAgLTU5LDE3ICs1MCw5IEBAIHB1
YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlcigpIGNvbnN0OwogICAgIFJlbmRl
ck9iamVjdCogcHJldmlvdXNSZW5kZXJlcigpIGNvbnN0OwogCi0gICAgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlKCkgY29uc3Q7Ci0KIHByaXZhdGU6Ci0gICAgYm9vbCBzaG91bGRDcmVhdGVSZW5k
ZXJlcigpIGNvbnN0OwotICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7Ci0gICAg
Ym9vbCBlbGVtZW50SW5zaWRlUmVnaW9uTmVlZHNSZW5kZXJlcigpOwotCiAgICAgTm9kZSogbV9u
b2RlOwogICAgIENvbnRhaW5lck5vZGUqIG1fcmVuZGVyaW5nUGFyZW50OwotICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gbV9zdHlsZTsKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50
Rmxvd1JlbmRlcmVyOwogfTsKIAogaW5saW5lIE5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpu
b2RlKCkgY29uc3QKQEAgLTgyLDExICs2NSw2IEBAIGlubGluZSBDb250YWluZXJOb2RlKiBOb2Rl
UmVuZGVyaW5nQ29udGUKICAgICByZXR1cm4gbV9yZW5kZXJpbmdQYXJlbnQ7CiB9CiAKLWlubGlu
ZSBjb25zdCBSZW5kZXJTdHlsZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnN0eWxlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdHlsZS5nZXQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAkocmV2aXNpb24g
MTU0ODA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXMgcGVyIGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jZmxvdy1pbnRvLCBwc2V1ZG8tZWxlbWVudHMgc3Vj
aCBhcyA6OmZpcnN0LWxpbmUsIDo6Zmlyc3QtbGV0dGVyLCA6OmJlZm9yZSBvciA6OmFmdGVyCiAg
ICAgLy8gY2Fubm90IGJlIGRpcmVjdGx5IGNvbGxlY3RlZCBpbnRvIGEgbmFtZWQgZmxvdy4KICNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVUb0Zsb3dU
aHJlYWQoUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBi
b29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCShyZXZpc2lv
biAxNTQ4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsMTIgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiRWxlbWVudFJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5o
IgorI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJO
b2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgorI2luY2x1ZGUg
IlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTEwNCwx
MSArMTA3LDYgQEAgQ2hhbmdlIGRldGVybWluZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZQogICAg
IHJldHVybiBOb0NoYW5nZTsKIH0KIAotc3RhdGljIHZvaWQgY3JlYXRlUmVuZGVyZXJJZk5lZWRl
ZChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdHRhY2hDb250ZXh0JiBjb250ZXh0KQotewotICAg
IE5vZGVSZW5kZXJpbmdDb250ZXh0KGVsZW1lbnQsIGNvbnRleHQpLmNyZWF0ZVJlbmRlcmVyRm9y
RWxlbWVudElmTmVlZGVkKCk7Ci19Ci0KIHN0YXRpYyBib29sIGlzUmVuZGVyZXJSZXBhcmVudGVk
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlci0+bm9k
ZSgpLT5pc0VsZW1lbnROb2RlKCkpCkBAIC0xMTgsNiArMTE2LDEzMyBAQCBzdGF0aWMgYm9vbCBp
c1JlbmRlcmVyUmVwYXJlbnRlZChjb25zdCBSCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0
aWMgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZ1JlbmRlcmVyKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IENvbnRhaW5lck5vZGUqIHJlbmRlcmluZ1BhcmVudE5vZGUpCit7CisgICAgLy8g
QXZvaWQgYW4gTyhOXjIpIHByb2JsZW0gd2l0aCB0aGlzIGZ1bmN0aW9uIGJ5IG5vdCBjaGVja2lu
ZyBmb3IKKyAgICAvLyBuZXh0UmVuZGVyZXIoKSB3aGVuIHRoZSBwYXJlbnQgZWxlbWVudCBoYXNu
J3QgYXR0YWNoZWQgeWV0LgorICAgIC8vIEZJWE1FOiBXaHkgd291bGQgd2UgZ2V0IGhlcmUgYW55
d2F5IGlmIHBhcmVudCBpcyBub3QgYXR0YWNoZWQ/CisgICAgaWYgKHJlbmRlcmluZ1BhcmVudE5v
ZGUgJiYgIXJlbmRlcmluZ1BhcmVudE5vZGUtPmF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybiAw
OworICAgIGZvciAoTm9kZSogc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRT
aWJsaW5nKCZlbGVtZW50KTsgc2libGluZzsgc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpOworICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVu
ZGVyZXJSZXBhcmVudGVkKHJlbmRlcmVyKSkKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENvbnRhaW5lck5vZGUqIHJlbmRlcmlu
Z1BhcmVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXJlbmRlcmluZ1BhcmVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVy
ZXIgPSByZW5kZXJpbmdQYXJlbnQtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFwYXJlbnRSZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcGFyZW50UmVuZGVyZXItPmNhbkhh
dmVDaGlsZHJlbigpICYmICEoZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSAmJiBwYXJlbnRSZW5k
ZXJlci0+Y2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFyZW5kZXJpbmdQYXJlbnQtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoJmVs
ZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8v
IENoZWNrIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGVsZW1lbnRzIHRoYXQgYXJlIGNoaWxkcmVuIG9m
IHJlZ2lvbnMgYnV0IGFyZSBmbG93ZWQgaW50byBhIGZsb3cgdGhyZWFkIHRoZW1zZWx2ZXMuCitz
dGF0aWMgYm9vbCBlbGVtZW50SW5zaWRlUmVnaW9uTmVlZHNSZW5kZXJlcihFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBDb250YWluZXJOb2RlKiByZW5kZXJpbmdQYXJlbnROb2RlLCBSZWZQdHI8UmVu
ZGVyU3R5bGU+JiBzdHlsZSkKK3sKKyNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCisgICAgY29uc3Qg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudE5vZGUgPyByZW5k
ZXJpbmdQYXJlbnROb2RlLT5yZW5kZXJlcigpIDogMDsKKworICAgIGJvb2wgcGFyZW50SXNSZWdp
b24gPSBwYXJlbnRSZW5kZXJlciAmJiAhcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigp
ICYmIHBhcmVudFJlbmRlcmVyLT5pc1JlbmRlclJlZ2lvbigpOworICAgIGJvb2wgcGFyZW50SXNO
b25SZW5kZXJlZEluc2lkZVJlZ2lvbiA9ICFwYXJlbnRSZW5kZXJlciAmJiBlbGVtZW50LnBhcmVu
dEVsZW1lbnQoKSAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+aXNJbnNpZGVSZWdpb24oKTsK
KyAgICBpZiAoIXBhcmVudElzUmVnaW9uICYmICFwYXJlbnRJc05vblJlbmRlcmVkSW5zaWRlUmVn
aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICBz
dHlsZSA9IGVsZW1lbnQuc3R5bGVGb3JSZW5kZXJlcigpOworCisgICAgLy8gQ2hpbGRyZW4gb2Yg
dGhpcyBlbGVtZW50IHdpbGwgb25seSBiZSBhbGxvd2VkIHRvIGJlIGZsb3dlZCBpbnRvIG90aGVy
IGZsb3ctdGhyZWFkcyBpZiBkaXNwbGF5IGlzIE5PVCBub25lLgorICAgIGlmIChlbGVtZW50LnJl
bmRlcmVySXNOZWVkZWQoKnN0eWxlKSkKKyAgICAgICAgZWxlbWVudC5zZXRJc0luc2lkZVJlZ2lv
bih0cnVlKTsKKworICAgIGlmIChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoKnN0eWxl
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgaWYgKCFl
bGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoc3R5bGUpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICBGbG93VGhyZWFkQ29udHJvbGxlciYgZmxvd1RocmVhZENvbnRyb2xsZXIgPSBlbGVtZW50
LmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKTsKKyAgICBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQmIHBhcmVudEZsb3dSZW5kZXJlciA9IGZsb3dUaHJlYWRDb250
cm9sbGVyLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZS5mbG93VGhyZWFkKCkp
OworICAgIGZsb3dUaHJlYWRDb250cm9sbGVyLnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUo
JmVsZW1lbnQsICZwYXJlbnRGbG93UmVuZGVyZXIpOworICAgIHJldHVybiAmcGFyZW50Rmxvd1Jl
bmRlcmVyOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0dGFjaENvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKCFl
bGVtZW50LnJlbmRlcmVyKCkpOworCisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKmVsZW1lbnQu
ZG9jdW1lbnQoKTsKKyAgICBDb250YWluZXJOb2RlKiByZW5kZXJpbmdQYXJlbnROb2RlID0gTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KCZlbGVtZW50KTsKKworICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUgPSBjb250ZXh0LnJlc29sdmVkU3R5bGU7CisKKyAgICBlbGVtZW50LnNl
dElzSW5zaWRlUmVnaW9uKGZhbHNlKTsKKworICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIo
ZWxlbWVudCwgcmVuZGVyaW5nUGFyZW50Tm9kZSkgJiYgIWVsZW1lbnRJbnNpZGVSZWdpb25OZWVk
c1JlbmRlcmVyKGVsZW1lbnQsIHJlbmRlcmluZ1BhcmVudE5vZGUsIHN0eWxlKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBlbGVtZW50LnN0eWxl
Rm9yUmVuZGVyZXIoKTsKKworICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSByZW5k
ZXJpbmdQYXJlbnROb2RlID8gcmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKSA6IDA7Cisg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSAwOworCisgICAgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiBwYXJlbnRGbG93UmVuZGVyZXIgPSAwOworI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
KyAgICBwYXJlbnRGbG93UmVuZGVyZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVu
dCwgKnN0eWxlKTsKKyNlbmRpZgorCisgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNOZWVkZWQo
KnN0eWxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhcmVudEZsb3dSZW5kZXJlcikg
eworICAgICAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVudEZsb3dSZW5kZXJlcjsKKyAgICAgICAg
bmV4dFJlbmRlcmVyID0gcGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2RlKCZl
bGVtZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXJlbnRSZW5kZXJlciA9IHJlbmRlcmlu
Z1BhcmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIG5leHRSZW5kZXJlciA9IG5leHRTaWJs
aW5nUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyaW5nUGFyZW50Tm9kZSk7CisgICAgfQorCisgICAg
UmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQuY3JlYXRlUmVuZGVyZXIoZG9jdW1l
bnQucmVuZGVyQXJlbmEoKSwgc3R5bGUuZ2V0KCkpOworICAgIGlmICghbmV3UmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIXBhcmVudFJlbmRlcmVyLT5pc0NoaWxkQWxsb3dlZChu
ZXdSZW5kZXJlciwgc3R5bGUuZ2V0KCkpKSB7CisgICAgICAgIG5ld1JlbmRlcmVyLT5kZXN0cm95
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFJlbmRl
ck9iamVjdCBhbHJlYWR5IGtub3dzIGl0IGlzIGdvaW5nIHRvIGJlIGFkZGVkIHRvIGEgUmVuZGVy
Rmxvd1RocmVhZCBiZWZvcmUgd2Ugc2V0IHRoZSBzdHlsZQorICAgIC8vIGZvciB0aGUgZmlyc3Qg
dGltZS4gT3RoZXJ3aXNlIGNvZGUgdXNpbmcgaW5SZW5kZXJGbG93VGhyZWFkKCkgaW4gdGhlIHN0
eWxlV2lsbENoYW5nZSBhbmQgc3R5bGVEaWRDaGFuZ2Ugd2lsbCBmYWlsLgorICAgIG5ld1JlbmRl
cmVyLT5zZXRGbG93VGhyZWFkU3RhdGUocGFyZW50UmVuZGVyZXItPmZsb3dUaHJlYWRTdGF0ZSgp
KTsKKworICAgIGVsZW1lbnQuc2V0UmVuZGVyZXIobmV3UmVuZGVyZXIpOworICAgIG5ld1JlbmRl
cmVyLT5zZXRBbmltYXRhYmxlU3R5bGUoc3R5bGUucmVsZWFzZSgpKTsgLy8gc2V0QW5pbWF0YWJs
ZVN0eWxlKCkgY2FuIGRlcGVuZCBvbiByZW5kZXJlcigpIGFscmVhZHkgYmVpbmcgc2V0LgorCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChkb2N1bWVudC53ZWJraXRJc0Z1bGxT
Y3JlZW4oKSAmJiBkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSAm
ZWxlbWVudCkgeworICAgICAgICBuZXdSZW5kZXJlciA9IFJlbmRlckZ1bGxTY3JlZW46OndyYXBS
ZW5kZXJlcihuZXdSZW5kZXJlciwgcGFyZW50UmVuZGVyZXIsICZkb2N1bWVudCk7CisgICAgICAg
IGlmICghbmV3UmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgLy8gTm90ZTogQWRkaW5nIG5ld1JlbmRlcmVyIGluc3RlYWQgb2YgcmVuZGVyZXIoKS4gcmVu
ZGVyZXIoKSBtYXkgYmUgYSBjaGlsZCBvZiBuZXdSZW5kZXJlci4KKyAgICBwYXJlbnRSZW5kZXJl
ci0+YWRkQ2hpbGQobmV3UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7Cit9CisKIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRleHQmIHRleHROb2RlKQog
ewogICAgIGlmICh0ZXh0Tm9kZS5yZW5kZXJlcigpKQpAQCAtMzQxLDcgKzQ2Niw3IEBAIHZvaWQg
YXR0YWNoUmVuZGVyVHJlZShFbGVtZW50KiBjdXJyZW50LCAKICAgICBpZiAoY3VycmVudC0+aGFz
Q3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgIGN1cnJlbnQtPndpbGxBdHRh
Y2hSZW5kZXJlcnMoKTsKIAotICAgIGNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoY3VycmVudCwgY29u
dGV4dCk7CisgICAgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgqY3VycmVudCwgY29udGV4dCk7CiAK
ICAgICBpZiAoY3VycmVudC0+cGFyZW50RWxlbWVudCgpICYmIGN1cnJlbnQtPnBhcmVudEVsZW1l
bnQoKS0+aXNJbkNhbnZhc1N1YnRyZWUoKSkKICAgICAgICAgY3VycmVudC0+c2V0SXNJbkNhbnZh
c1N1YnRyZWUodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNTQ4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2OSw3ICs1NjksNyBAQCBzdGF0aWMgYm9vbCBoYXNMb2FkTGlzdGVuZXIoRWxl
bWVudCogZWxlCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1ib29sIFNWR0VsZW1lbnQ6
OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UpIGNvbnN0Citi
b29sIFNWR0VsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlVG9Vc2UpIGNvbnN0CiB7CiAgICAgLy8gQWxsb3cgb25seSBzdmcgcm9vdCBlbGVtZW50
cyB0byBiZSBkaXJlY3RseSBjb2xsZWN0ZWQgYnkgYSByZW5kZXIgZmxvdyB0aHJlYWQuCiAgICAg
cmV0dXJuIHBhcmVudE5vZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiBo
YXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpICYmIEVsZW1lbnQ6OnNob3VsZE1vdmVUb0Zsb3dU
aHJlYWQoc3R5bGVUb1VzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9u
IDE1NDgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
LCBib29sIHVzZUNhcHR1cmUpIE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlVG9GbG93VGhyZWFkKFJlbmRlclN0eWxlKikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Cg==
</data>
<flag name="review"
          id="232041"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>