<?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>58624</bug_id>
          
          <creation_ts>2011-04-14 18:32:26 -0700</creation_ts>
          <short_desc>Use opaque roots instead of direct marking for nodes in the DOM</short_desc>
          <delta_ts>2011-04-14 20:39:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386270</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-14 18:32:26 -0700</bug_when>
    <thetext>Use opaque roots instead of direct marking for nodes in the DOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386278</commentid>
    <comment_count>1</comment_count>
      <attachid>89715</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-14 18:44:19 -0700</bug_when>
    <thetext>Created attachment 89715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386282</commentid>
    <comment_count>2</comment_count>
      <attachid>89715</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-14 18:48:32 -0700</bug_when>
    <thetext>Comment on attachment 89715
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386332</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-14 20:39:53 -0700</bug_when>
    <thetext>Committed r83938: &lt;http://trac.webkit.org/changeset/83938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89715</attachid>
            <date>2011-04-14 18:44:19 -0700</date>
            <delta_ts>2011-04-14 18:48:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58624-20110414184418.patch</filename>
            <type>text/plain</type>
            <size>24558</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzOTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDQtMTQgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2Ugb3BhcXVlIHJvb3RzIGluc3RlYWQgb2YgZGlyZWN0IG1h
cmtpbmcgZm9yIG5vZGVzIGluIHRoZSBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4NjI0CisKKyAgICAgICAgTm9kZXMgdHJlYXQgdGhlIHJvb3Qg
b2YgdGhlaXIgdHJlZSAodXN1YWxseSB0aGUgZG9jdW1lbnQpIGFzIHRoZWlyCisgICAgICAgIG9w
YXF1ZSByb290IGR1cmluZyBHQy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZv
ciBjb3JyZWN0bmVzcyBpbiBhIGdlbmVyYXRpb25hbCBHQyB3b3JsZCwgYnV0IGl0IGFsc28KKyAg
ICAgICAgaGFwcGVucyB0byBiZSBhIDMuNVggc3BlZWR1cCBpbiBhIERPTS1oZWF2eSBHQyB0ZXN0
IChzY3JhdGNoLWdjLWRvbTIuaHRtbCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFw
cGVyV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNPYnNlcnZhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzUmVhY2hhYmxlRnJvbURPTSk6IE1vdmVkIGEgaGVscGVyIGZ1bmN0aW9uIGZy
b20gSlNET01CaW5kaW5nLgorICAgICAgICBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBkZXRlcm1p
bmUgd2hldGhlciBhIG5vZGUgaXMgb2JzZXJ2YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6SlNO
b2RlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogU3RhcnQgdXNpbmcK
KyAgICAgICAgb3VyIHdlYWsgaGFuZGxlIGNhbGxiYWNrIHRvIGRldGVybWluZSByZWFjaGFiaWxp
dHksIGluc3RlYWQgb2YgZGlyZWN0CisgICAgICAgIG1hcmtpbmcgdHJhdmVyc2FsIHRocm91Z2gg
dGhlIERPTS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0F0dHI6Om1hcmtDaGlsZHJlbik6IFVwZGF0ZWQgdG8gdXNlIHRoZSBv
cGFxdWUgcm9vdHMgbWVjaGFuaXNtCisgICAgICAgIGluc3RlYWQgb2YgZGlyZWN0IG1hcmtpbmcu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBNb3ZlZCBjb2RlIG1lbnRpb25lZCBhYm92ZS4gUmVt
b3ZlZAorICAgICAgICBtYXJrRE9NTm9kZVdyYXBwZXIgYmVjYXVzZSBpdCBpcyBub3cgdW51c2Vk
LiBUaGlzIGlzIGEgZ29vZCB0aGluZyBiZWNhdXNlCisgICAgICAgIG1hcmtET01Ob2RlV3JhcHBl
ciB1c2VkIGRlcHJlY2F0ZWRBcHBlbmQsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlCisgICAgICAg
IHdpdGggZ2VuZXJhdGlvbmFsIEdDLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JbXBs
ZW1lbnRhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUltcGxlbWVudGF0
aW9uOjptYXJrQ2hpbGRyZW4pOiBVcGRhdGVkIHRvIHVzZSBvcGFxdWUgcm9vdHMuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRG9jdW1lbnQ6Om1hcmtDaGlsZHJlbik6IE5vIG5lZWQgdG8gbWFyayBvdXIgY2hpbGQgbm9k
ZXMgZGlyZWN0bHksCisgICAgICAgIHNpbmNlIHRoZXkgd2lsbCB0YWtlIGNhcmUgb2YgdGhlbXNl
bHZlcyB0aHJvdWdoIHRoZSBvcGFxdWUgcm9vdHMgbWVjaGFuaXNtLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNO
YW1lZE5vZGVNYXA6Om1hcmtDaGlsZHJlbik6IFVwZGF0ZWQgdG8gdXNlIG9wYXF1ZSByb290cy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU05vZGU6Om1hcmtDaGlsZHJlbik6IE5vIG5lZWQgdG8gbWFyayBvdXIgdHJlZSBvciBv
dXIgZG9jdW1lbnQKKyAgICAgICAgZGlyZWN0bHksIHNpbmNlIHRoZXkgd2lsbCB0YWtlIGNhcmUg
b2YgdGhlbXNlbHZlcyB0aHJvdWdoIHRoZSBvcGFxdWUKKyAgICAgICAgcm9vdHMgbWVjaGFuaXNt
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpyb290KTogSGVscGVyIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIHJvb3Qgb2YgYSBu
b2RlIHRyZWUuCisgICAgICAgIFRoaXMgaXMgTygxKSB3aGlsZSB5b3UncmUgaW4gdGhlIGRvY3Vt
ZW50LCBPKGxvZyhOKSkgd2hlbiB5b3UncmUgaW4gYQorICAgICAgICByZWFzb25hYmx5IGJhbGFu
Y2VkIGRpc2Nvbm5lY3RlZCB0cmVlLCBhbmQgTyhOKSBpbiB0aGUgcGF0aG9sb2dpY2FsIGNhc2UK
KyAgICAgICAgb2YgYSBkaXNjb25uZWN0ZWQgdHJlZSB0aGF0J3Mgc2hhcGVkIGxpa2UgYSBsaW5r
ZWQgbGlzdC4gSWYgYXZlcmFnZSBjYXNlCisgICAgICAgIE8obG9uZyhOKSkgdHVybnMgb3V0IHRv
IGJlIHRvbyBzbG93LCB3ZSBjYW4gb3B0aW1pemUgdGhyb3VnaCB1c2Ugb2YKKyAgICAgICAgcmFy
ZSBkYXRhIG9yIGFuIGV4dGVybmFsIGhhc2ggdGFibGUsIGJ1dCBpdCBpcyBzbyB1bmNvbW1vbiB0
aGF0IEkgaGF2ZQorICAgICAgICBpZ25vcmVkIGl0IGZvciBub3cuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NWR0VsZW1lbnRJbnN0YW5jZTo6bWFya0NoaWxkcmVuKTogVXBkYXRlZCB0byB1c2Ugb3Bh
cXVlIHJvb3RzLgorCiAyMDExLTA0LTE0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24g
ODM4OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5ICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogCisjaW5jbHVkZSAiSFRNTEF1ZGlvRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTExpbmtFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TFNjcmlwdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CiAKQEAgLTMxLDYg
KzQyLDEwOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBib29sIGlzT2JzZXJ2YWJsZShK
U05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKK3sKKyAg
ICAvLyBDZXJ0YWluIGNvbmRpdGlvbnMgaW1wbGljaXRseSBtYWtlIGV4aXN0ZW5jZSBvZiBhIEpT
IERPTSBub2RlIHdyYXBwZXIgb2JzZXJ2YWJsZQorICAgIC8vIHRocm91Z2ggdGhlIERPTSwgZXZl
biBpZiBubyBleHBsaWNpdCByZWZlcmVuY2UgdG8gaXQgcmVtYWlucy4KKyAgICAKKyAgICAvLyBU
aGUgRE9NIGRvZXNuJ3Qga25vdyBob3cgdG8ga2VlcCBhIHRyZWUgb2Ygbm9kZXMgYWxpdmUgd2l0
aG91dCB0aGUgcm9vdAorICAgIC8vIGJlaW5nIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4gU28sIHdl
IGFydGlmaWNpYWxseSB0cmVhdCB0aGUgcm9vdCBvZgorICAgIC8vIGV2ZXJ5IHRyZWUgYXMgb2Jz
ZXJ2YWJsZS4KKyAgICAvLyBGSVhNRTogUmVzb2x2ZSB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRo
ZSBET00sIGFuZCByZW1vdmUgdGhpcyBpbmVmZmljaWVuY3kuCisgICAgaWYgKCFub2RlLT5wYXJl
bnROb2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgYSBub2RlIGlzIGlu
IHRoZSBkb2N1bWVudCwgYW5kIGl0cyB3cmFwcGVyIGhhcyBjdXN0b20gcHJvcGVydGllcywKKyAg
ICAvLyB0aGUgd3JhcHBlciBpcyBvYnNlcnZhYmxlIGJlY2F1c2UgZnV0dXJlIGFjY2VzcyB0byB0
aGUgbm9kZSB0aHJvdWdoIHRoZQorICAgIC8vIERPTSBtdXN0IHJlZmxlY3QgdGhvc2UgcHJvcGVy
dGllcy4KKyAgICBpZiAoanNOb2RlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgLy8gSWYgYSBub2RlIGlzIGluIHRoZSBkb2N1bWVudCwgYW5kIGhh
cyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVyIGlzCisgICAgLy8gb2JzZXJ2YWJsZSBiZWNh
dXNlIGl0cyB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxp
c3RlbmVycy4KKyAgICBpZiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBJZiBhIG5vZGUgb3ducyBhbm90aGVyIG9iamVjdCB3aXRoIGEg
d3JhcHBlciB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzLAorICAgIC8vIHRoZSB3cmFwcGVyIG11c3Qg
YmUgdHJlYXRlZCBhcyBvYnNlcnZhYmxlLCBiZWNhdXNlIGZ1dHVyZSBhY2Nlc3MgdG8KKyAgICAv
LyB0aG9zZSBvYmplY3RzIHRocm91Z2ggdGhlIERPTSBtdXN0IHJlZmxlY3QgdGhvc2UgcHJvcGVy
dGllcy4KKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoaXMgbG9naWMgY291
bGQgYmUgaW4gdGhlIG5vZGUgbmV4dCB0bworICAgIC8vIHRoZSBjdXN0b20gbWFya0NoaWxkcmVu
IGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBoZXJlLgorICAgIC8vIE5vdGUgdGhhdCBmb3Igc29tZSBj
b21wb3VuZCBvYmplY3RzIGxpa2Ugc3R5bGVzaGVldHMgYW5kIENTU1N0eWxlRGVjbGFyYXRpb25z
LAorICAgIC8vIHdlIGRvbid0IGRlc2NlbmQgdG8gY2hlY2sgY2hpbGRyZW4gZm9yIGN1c3RvbSBw
cm9wZXJ0aWVzLCBhbmQganVzdCBjb25zZXJ2YXRpdmVseQorICAgIC8vIGtlZXAgdGhlIG5vZGUg
d3JhcHBlcnMgcHJvdGVjdGluZyB0aGVtIGFsaXZlLgorICAgIGlmIChub2RlLT5pc0VsZW1lbnRO
b2RlKCkpIHsKKyAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihub2RlKS0+YXR0cmlidXRlTWFwKCkpIHsKKyAgICAgICAgICAgIGlmIChE
T01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+bV93cmFwcGVycy5nZXQoYXR0cmlidXRlcykuZ2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzZWVtcyBpbnN1ZmZp
Y2llbnQsIGJlY2F1c2UgTmFtZWROb2RlTWFwIGl0ZW1zIGNhbiBoYXZlIGN1c3RvbSBwcm9wZXJ0
aWVzIHRoZW1zZWx2ZXMuCisgICAgICAgICAgICAgICAgLy8gTWF5YmUgaXQgd291bGQgYmUgT0sg
dG8ganVzdCBrZWVwIHRoZSB3cmFwcGVyIGFsaXZlLCBhcyBpdCBpcyBkb25lIGZvciBDU1NPTSBv
YmplY3RzIGJlbG93LgorICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLT5oYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5pc1N0eWxlZEVsZW1lbnQoKSkgeworICAg
ICAgICAgICAgaWYgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihub2RlKS0+aW5saW5lU3R5bGVEZWNsKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHN0eWxlKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKSB7Cisg
ICAgICAgICAgICBpZiAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PEhUTUxDYW52YXNFbGVtZW50Kj4obm9kZSktPnJlbmRlcmluZ0NvbnRleHQoKSkgeworICAg
ICAgICAgICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+bV93cmFwcGVycy5n
ZXQoY29udGV4dCkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZXItPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmhhc1RhZ05hbWUobGlua1RhZykpIHsKKyAgICAg
ICAgICAgIGlmIChTdHlsZVNoZWV0KiBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVu
dCo+KG5vZGUpLT5zaGVldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBw
ZXJzLmdldChzaGVldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+
aGFzVGFnTmFtZShzdHlsZVRhZykpIHsKKyAgICAgICAgICAgIGlmIChTdHlsZVNoZWV0KiBzaGVl
dCA9IHN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihub2RlKS0+c2hlZXQoKSkgeworICAg
ICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVycy5nZXQoc2hlZXQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0g
ZWxzZSBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUpIHsKKyAgICAgICAgaWYgKFN0eWxlU2hlZXQqIHNoZWV0ID0gc3RhdGljX2Nhc3Q8UHJv
Y2Vzc2luZ0luc3RydWN0aW9uKj4obm9kZSktPnNoZWV0KCkpIHsKKyAgICAgICAgICAgIGlmICh3
b3JsZC0+bV93cmFwcGVycy5nZXQoc2hlZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9NKEpTTm9kZSoganNOb2RlLCBOb2RlKiBub2RlLCBE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAgICBpZiAo
bm9kZS0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGpzTm9kZSwg
bm9kZSwgd29ybGQpICYmIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChub2RlKSk7
CisKKyAgICAvLyBJZiBhIHdyYXBwZXIgaXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGFuIGltYWdl
IG9yIHNjcmlwdCBlbGVtZW50CisgICAgLy8gdGhhdCBpcyBsb2FkaW5nIGJ1dCBub3QgaW4gdGhl
IGRvY3VtZW50LCB0aGUgd3JhcHBlciBpcyBvYnNlcnZhYmxlCisgICAgLy8gYmVjYXVzZSBpdCBp
cyB0aGUgb25seSB0aGluZyBrZWVwaW5nIHRoZSBpbWFnZSBlbGVtZW50IGFsaXZlLCBhbmQgaWYK
KyAgICAvLyB0aGUgaW1hZ2UgZWxlbWVudCBpcyBkZXN0cm95ZWQsIGl0cyBsb2FkIGV2ZW50IHdp
bGwgbm90IGZpcmUuCisgICAgLy8gRklYTUU6IFRoZSBET00gc2hvdWxkIG1hbmFnZSB0aGlzIGlz
c3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlwdCB3cmFwcGVycy4KKyAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShpbWdUYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4o
bm9kZSktPmhhdmVGaXJlZExvYWRFdmVudCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MU2NyaXB0
RWxlbWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFn
KSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEF1ZGlvRWxlbWVudCo+KG5vZGUpLT5wYXVzZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKworICAgIC8vIElmIGEgbm9kZSBpcyBmaXJpbmcg
ZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyBvYnNlcnZhYmxlIGJlY2F1c2UKKyAgICAv
LyBpdHMgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0
ZW5lcnMuCisgICAgaWYgKG5vZGUtPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGpzTm9kZSwgbm9kZSwgd29y
bGQpICYmIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChub2RlKSk7Cit9CisKIERP
TVdyYXBwZXJXb3JsZDo6RE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBib29sIGlzTm9ybWFsKQogICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAg
LCBtX2lzTm9ybWFsKGlzTm9ybWFsKQpAQCAtODMsOSArMTk3LDEwIEBAIERPTVdyYXBwZXJXb3Js
ZCogbWFpblRocmVhZE5vcm1hbFdvcmxkKCkKICAgICByZXR1cm4gY2FjaGVkTm9ybWFsV29ybGQ7
CiB9CiAKLWJvb2wgSlNOb2RlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqLCBKU0M6Ok1hcmtTdGFjayYpCitib29s
IEpTTm9kZUhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIEpTQzo6TWFya1N0YWNrJiBtYXJrU3RhY2sp
CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIEpTTm9kZSoganNOb2RlID0gc3RhdGljX2Nhc3Q8
SlNOb2RlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICByZXR1cm4gaXNSZWFjaGFibGVG
cm9tRE9NKGpzTm9kZSwganNOb2RlLT5pbXBsKCksIG1fd29ybGQsIG1hcmtTdGFjayk7CiB9CiAK
IHZvaWQgSlNOb2RlSGFuZGxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0
ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dHRyQ3VzdG9tLmNwcAkocmV2aXNpb24gODM4OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F0dHJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAg
dm9pZCBKU0F0dHI6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcgogewogICAgIEJhc2U6Om1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOwogCi0gICAgLy8gTWFyayB0aGUgZWxlbWVudCBzbyB0aGF0
IHRoaXMgd2lsbCB3b3JrIHRvIGFjY2VzcyB0aGUgYXR0cmlidXRlIGV2ZW4gaWYgdGhlIGxhc3QK
LSAgICAvLyBvdGhlciByZWZlcmVuY2UgZ29lcyBhd2F5LgotICAgIGlmIChFbGVtZW50KiBlbGVt
ZW50ID0gaW1wbCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgbWFya0RPTU5vZGVXcmFwcGVy
KG1hcmtTdGFjaywgZWxlbWVudC0+ZG9jdW1lbnQoKSwgZWxlbWVudCk7CisgICAgRWxlbWVudCog
ZWxlbWVudCA9IGltcGwoKS0+b3duZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAg
ICAgICByZXR1cm47CisgICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gODM4OTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQs
MTEzICsxOTQsNiBAQCB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqCiAg
ICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlVGhyb3VnaERPTShKU05v
ZGUqIGpzTm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKLXsKLSAgICAvLyBDZXJ0YWluIGNv
bmRpdGlvbnMgaW1wbGljaXRseSBtYWtlIGV4aXN0ZW5jZSBvZiBhIEpTIERPTSBub2RlIHdyYXBw
ZXIgb2JzZXJ2YWJsZQotICAgIC8vIHRocm91Z2ggdGhlIERPTSwgZXZlbiBpZiBubyBleHBsaWNp
dCByZWZlcmVuY2UgdG8gaXQgcmVtYWlucy4KLQotICAgIE5vZGUqIG5vZGUgPSBqc05vZGUtPmlt
cGwoKTsKLQotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpIHsKLSAgICAgICAgLy8gSWYgYSBu
b2RlIGlzIGluIHRoZSBkb2N1bWVudCwgYW5kIGl0cyB3cmFwcGVyIGhhcyBjdXN0b20gcHJvcGVy
dGllcywKLSAgICAgICAgLy8gdGhlIHdyYXBwZXIgaXMgb2JzZXJ2YWJsZSBiZWNhdXNlIGZ1dHVy
ZSBhY2Nlc3MgdG8gdGhlIG5vZGUgdGhyb3VnaCB0aGUKLSAgICAgICAgLy8gRE9NIG11c3QgcmVm
bGVjdCB0aG9zZSBwcm9wZXJ0aWVzLgotICAgICAgICBpZiAoanNOb2RlLT5oYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAvLyBJZiBhIG5v
ZGUgaXMgaW4gdGhlIGRvY3VtZW50LCBhbmQgaGFzIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBw
ZXIgaXMKLSAgICAgICAgLy8gb2JzZXJ2YWJsZSBiZWNhdXNlIGl0cyB3cmFwcGVyIGlzIHJlc3Bv
bnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KLSAgICAgICAgaWYgKG5v
ZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gVGVj
aG5pY2FsbHksIHdlIG1heSBvdmVyemVhbG91c2x5IG1hcmsgYSB3cmFwcGVyIGZvciBhIG5vZGUg
dGhhdCBoYXMgb25seSBub24tSlMgZXZlbnQgbGlzdGVuZXJzLiBPaCB3ZWxsLgotCi0gICAgICAg
IC8vIElmIGEgbm9kZSBvd25zIGFub3RoZXIgb2JqZWN0IHdpdGggYSB3cmFwcGVyIHdpdGggY3Vz
dG9tIHByb3BlcnRpZXMsCi0gICAgICAgIC8vIHRoZSB3cmFwcGVyIG11c3QgYmUgdHJlYXRlZCBh
cyBvYnNlcnZhYmxlLCBiZWNhdXNlIGZ1dHVyZSBhY2Nlc3MgdG8KLSAgICAgICAgLy8gdGhvc2Ug
b2JqZWN0cyB0aHJvdWdoIHRoZSBET00gbXVzdCByZWZsZWN0IHRob3NlIHByb3BlcnRpZXMuCi0g
ICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgdGhpcyBsb2dpYyBjb3VsZCBi
ZSBpbiB0aGUgbm9kZSBuZXh0IHRvCi0gICAgICAgIC8vIHRoZSBjdXN0b20gbWFya0NoaWxkcmVu
IGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBoZXJlLgotICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIHNv
bWUgY29tcG91bmQgb2JqZWN0cyBsaWtlIHN0eWxlc2hlZXRzIGFuZCBDU1NTdHlsZURlY2xhcmF0
aW9ucywKLSAgICAgICAgLy8gd2UgZG9uJ3QgZGVzY2VuZCB0byBjaGVjayBjaGlsZHJlbiBmb3Ig
Y3VzdG9tIHByb3BlcnRpZXMsIGFuZCBqdXN0IGNvbnNlcnZhdGl2ZWx5Ci0gICAgICAgIC8vIGtl
ZXAgdGhlIG5vZGUgd3JhcHBlcnMgcHJvdGVjdGluZyB0aGVtIGFsaXZlLgotICAgICAgICBpZiAo
bm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBh
dHRyaWJ1dGVzID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5hdHRyaWJ1dGVNYXAoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+bV93cmFw
cGVycy5nZXQoYXR0cmlidXRlcykuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY2hlY2sgc2VlbXMgaW5zdWZmaWNpZW50LCBiZWNhdXNlIE5hbWVkTm9kZU1hcCBp
dGVtcyBjYW4gaGF2ZSBjdXN0b20gcHJvcGVydGllcyB0aGVtc2VsdmVzLgotICAgICAgICAgICAg
ICAgICAgICAvLyBNYXliZSBpdCB3b3VsZCBiZSBPSyB0byBqdXN0IGtlZXAgdGhlIHdyYXBwZXIg
YWxpdmUsIGFzIGl0IGlzIGRvbmUgZm9yIENTU09NIG9iamVjdHMgYmVsb3cuCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh3cmFwcGVyLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpLT5pbmxpbmVTdHlsZURlY2woKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHN0eWxlKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmhhc1RhZ05h
bWUoY2FudmFzVGFnKSkgewotICAgICAgICAgICAgICAgIGlmIChDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihub2RlKS0+cmVu
ZGVyaW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChET01PYmplY3QqIHdy
YXBwZXIgPSB3b3JsZC0+bV93cmFwcGVycy5nZXQoY29udGV4dCkuZ2V0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShsaW5rVGFnKSkgewotICAgICAgICAgICAgICAg
IGlmIChTdHlsZVNoZWV0KiBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KG5v
ZGUpLT5zaGVldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVy
cy5nZXQoc2hlZXQpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSktPmhhc1RhZ05hbWUoc3R5bGVUYWcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFN0
eWxlU2hlZXQqIHNoZWV0ID0gc3RhdGljX2Nhc3Q8SFRNTFN0eWxlRWxlbWVudCo+KG5vZGUpLT5z
aGVldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVycy5nZXQo
c2hlZXQpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7Ci0gICAgICAgICAgICBp
ZiAoU3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pihub2RlKS0+c2hlZXQoKSkgewotICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVy
cy5nZXQoc2hlZXQpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIGEgd3JhcHBlciBp
cyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYW4gaW1hZ2Ugb3Igc2NyaXB0IGVsZW1lbnQKLSAgICAg
ICAgLy8gdGhhdCBpcyBsb2FkaW5nIGJ1dCBub3QgaW4gdGhlIGRvY3VtZW50LCB0aGUgd3JhcHBl
ciBpcyBvYnNlcnZhYmxlCi0gICAgICAgIC8vIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgdGhpbmcg
a2VlcGluZyB0aGUgaW1hZ2UgZWxlbWVudCBhbGl2ZSwgYW5kIGlmCi0gICAgICAgIC8vIHRoZSBp
bWFnZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZlbnQgd2lsbCBub3QgZmlyZS4K
LSAgICAgICAgLy8gRklYTUU6IFRoZSBET00gc2hvdWxkIG1hbmFnZSB0aGlzIGlzc3VlIHdpdGhv
dXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlwdCB3cmFwcGVycy4KLSAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoaW1nVGFnKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUp
LT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBpZiAobm9kZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MU2Ny
aXB0RWxlbWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoYXVkaW9UYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MQXVkaW9FbGVtZW50Kj4obm9kZSktPnBh
dXNlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICAv
LyBJZiBhIG5vZGUgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIgaXMgb2Jz
ZXJ2YWJsZSBiZWNhdXNlCi0gICAgLy8gaXRzIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1h
cmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgotICAgIGlmIChub2RlLT5pc0ZpcmluZ0V2ZW50
TGlzdGVuZXJzKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KE1hcmtTdGFjayYgbWFya1N0YWNrLCBE
b2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdyYXBwZXJDYWNo
ZU1hcCA9IGRvY3VtZW50LT53cmFwcGVyQ2FjaGVNYXAoKTsKLSAgICBmb3IgKEpTV3JhcHBlckNh
Y2hlTWFwOjppdGVyYXRvciB3cmFwcGVyc0l0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsg
d3JhcHBlcnNJdGVyICE9IHdyYXBwZXJDYWNoZU1hcC5lbmQoKTsgKyt3cmFwcGVyc0l0ZXIpIHsK
LSAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHdyYXBwZXJzSXRlci0+Zmlyc3Q7Ci0g
ICAgICAgIEpTV3JhcHBlckNhY2hlKiBub2RlRGljdCA9IHdyYXBwZXJzSXRlci0+c2Vjb25kOwot
Ci0gICAgICAgIEpTV3JhcHBlckNhY2hlOjppdGVyYXRvciBub2RlRW5kID0gbm9kZURpY3QtPmVu
ZCgpOwotICAgICAgICBmb3IgKEpTV3JhcHBlckNhY2hlOjppdGVyYXRvciBub2RlSXQgPSBub2Rl
RGljdC0+YmVnaW4oKTsgbm9kZUl0ICE9IG5vZGVFbmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAg
ICBKU05vZGUqIG5vZGUgPSBub2RlSXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIGlmICgh
aXNPYnNlcnZhYmxlVGhyb3VnaERPTShub2RlLCB3b3JsZCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZChyZWludGVycHJl
dF9jYXN0PEpTQ2VsbCoqPigmbm9kZSkpOwotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIG1h
cmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQogewogICAgIC8vIElmIGFuIGVsZW1lbnQgaGFzIHBlbmRpbmcgYWN0aXZpdHkgdGhh
dCBtYXkgcmVzdWx0IGluIGV2ZW50IGxpc3RlbmVycyBiZWluZyBjYWxsZWQKQEAgLTM3NywyNSAr
MjcwLDYgQEAgdm9pZCBtYXJrRE9NT2JqZWN0V3JhcHBlcihNYXJrU3RhY2smIG1hcgogICAgIH0K
IH0KIAotdm9pZCBtYXJrRE9NTm9kZVdyYXBwZXIoTWFya1N0YWNrJiBtYXJrU3RhY2ssIERvY3Vt
ZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAg
ICAgSlNXcmFwcGVyQ2FjaGVNYXAmIHdyYXBwZXJDYWNoZU1hcCA9IGRvY3VtZW50LT53cmFwcGVy
Q2FjaGVNYXAoKTsKLSAgICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZU1hcDo6aXRlcmF0b3IgaXRl
ciA9IHdyYXBwZXJDYWNoZU1hcC5iZWdpbigpOyBpdGVyICE9IHdyYXBwZXJDYWNoZU1hcC5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBKU05vZGUqIHdyYXBwZXIgPSBpdGVyLT5zZWNvbmQt
PmdldChub2RlKS5nZXQoKTsKLSAgICAgICAgICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KCZ3cmFwcGVyKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGZvciAoSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3Js
ZEl0ZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsgd29ybGRJdGVyOyArK3dv
cmxkSXRlcikgewotICAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGRJdGVyLT5t
X3dyYXBwZXJzLmdldChub2RlKS5nZXQoKSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5kZXByZWNh
dGVkQXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KCZ3cmFwcGVyKSk7Ci0gICAgfQot
fQotCiBzdGF0aWMgdm9pZCBzdHJpbmdXcmFwcGVyRGVzdHJveWVkKEpTU3RyaW5nKiwgdm9pZCog
Y29udGV4dCkKIHsKICAgICBTdHJpbmdJbXBsKiBjYWNoZUtleSA9IHN0YXRpY19jYXN0PFN0cmlu
Z0ltcGwqPihjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCShyZXZpc2lvbiA4Mzg5NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMTAgKzEyMSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqLCBEb2N1bWVudCosIE5vZGUqLCBKU05vZGUqIHdyYXBwZXIpOwogICAgIHZvaWQgdXBkYXRl
RE9NTm9kZURvY3VtZW50KE5vZGUqLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBu
ZXdEb2N1bWVudCk7CiAKLSAgICB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KEpTQzo6TWFy
a1N0YWNrJiwgRG9jdW1lbnQqKTsKICAgICB2b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4
dChKU0M6Ok1hcmtTdGFjayYsIEpTQzo6SlNHbG9iYWxEYXRhJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNDOjpNYXJrU3RhY2smLCBK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KTsKLSAgICB2b2lkIG1h
cmtET01Ob2RlV3JhcHBlcihKU0M6Ok1hcmtTdGFjayYgbWFya1N0YWNrLCBEb2N1bWVudCogZG9j
dW1lbnQsIE5vZGUqIG5vZGUpOwogICAgIGJvb2wgaGFzQ2FjaGVkRE9NT2JqZWN0V3JhcHBlclVu
Y2hlY2tlZChKU0M6OkpTR2xvYmFsRGF0YSosIHZvaWQqIG9iamVjdEhhbmRsZSk7CiAgICAgYm9v
bCBoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZChEb2N1bWVudCosIE5vZGUqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBs
ZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDgzODk3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEwICszMywxMCBAQCB2b2lkIEpTRE9NSW1wbGVtZW50YXRpb246Om1hcmtDaGlsZHJl
bihNCiB7CiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKLSAgICBET01JbXBs
ZW1lbnRhdGlvbiogZG9tSW1wbGVtZW50YXRpb24gPSBpbXBsKCk7Ci0gICAgRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQgPSBkb21JbXBsZW1lbnRhdGlvbi0+b3duZXJEb2N1bWVudCgpOwotICAgIGlm
IChvd25lckRvY3VtZW50KQotICAgICAgICBtYXJrRE9NTm9kZVdyYXBwZXIobWFya1N0YWNrLCBv
d25lckRvY3VtZW50LCBvd25lckRvY3VtZW50KTsKKyAgICBEb2N1bWVudCogb3duZXJEb2N1bWVu
dCA9IGltcGwoKS0+b3duZXJEb2N1bWVudCgpOworICAgIGlmICghb3duZXJEb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1hcmtTdGFjay5hZGRPcGFxdWVSb290KG93bmVyRG9jdW1lbnQp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gODM4OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBA
QCB2b2lkIEpTRG9jdW1lbnQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gaW1wbCgpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpIZWFw
OjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBtYXJrRE9NTm9kZXNGb3JEb2N1bWVu
dChtYXJrU3RhY2ssIGRvY3VtZW50KTsKICAgICBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQo
bWFya1N0YWNrLCBnbG9iYWxEYXRhLCBkb2N1bWVudCk7CiAgICAgbWFya0RPTU9iamVjdFdyYXBw
ZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBkb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CiAg
ICAgbWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBkb2N1bWVudC0+
c3R5bGVTaGVldHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCShyZXZpc2lvbiA4Mzg5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTAgKzUwLDEwIEBAIHZvaWQgSlNOYW1lZE5vZGVNYXA6Om1hcmtDaGlsZHJlbihN
YXJrU3QKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIC8vIE1h
cmsgdGhlIGVsZW1lbnQgc28gdGhhdCB0aGlzIHdpbGwgd29yayB0byBhY2Nlc3MgdGhlIGF0dHJp
YnV0ZSBldmVuIGlmIHRoZSBsYXN0Ci0gICAgLy8gb3RoZXIgcmVmZXJlbmNlIGdvZXMgYXdheS4K
LSAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+ZWxlbWVudCgpKQotICAgICAgICBt
YXJrRE9NTm9kZVdyYXBwZXIobWFya1N0YWNrLCBlbGVtZW50LT5kb2N1bWVudCgpLCBlbGVtZW50
KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gaW1wbCgpLT5lbGVtZW50KCk7CisgICAgaWYgKCFl
bGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9v
dChlbGVtZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gODM4OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjQsNDEgKzEyNCw3IEBAIHZvaWQgSlNOb2RlOjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJiBtYXIKICAgICBOb2RlKiBub2RlID0gbV9pbXBsLmdldCgpOwogICAgIG5vZGUtPm1hcmtK
U0V2ZW50TGlzdGVuZXJzKG1hcmtTdGFjayk7CiAKLSAgICAvLyBOb2RlcyBpbiB0aGUgZG9jdW1l
bnQgYXJlIGtlcHQgYWxpdmUgYnkgSlNEb2N1bWVudDo6bWFyaywgc28sIGlmIHdlJ3JlIGluCi0g
ICAgLy8gdGhlIGRvY3VtZW50LCB3ZSBuZWVkIHRvIG1hcmsgdGhlIGRvY3VtZW50LCBidXQgd2Ug
ZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5Ci0gICAgLy8gbWFyayBhbnkgb3RoZXIgbm9kZXMuCi0g
ICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkgewotICAgICAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IHdhbnQgdG8gY2FsbCBhIHZpcnR1YWwgZnVuY3Rpb24sIG93bmVyRG9jdW1lbnQgaGVyZSwK
LSAgICAgICAgLy8gd2hlbiB0aGUgbm9uLXZpcnR1YWwgaW5saW5lIGZ1bmN0aW9uLCBkb2N1bWVu
dCwgaXMgc28gbXVjaCBmYXN0ZXI/IQotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IG5vZGUt
Pm93bmVyRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIG1hcmtET01Ob2RlV3JhcHBlcihtYXJrU3Rh
Y2ssIGRvYywgZG9jKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRoaXMgaXMg
YSBub2RlIG91dHNpZGUgdGhlIGRvY3VtZW50LgotICAgIC8vIEZpbmQgdGhlIHRoZSByb290LCBh
bmQgdGhlIGhpZ2hlc3QgYW5jZXN0b3Igd2l0aCBhIHdyYXBwZXIuCi0gICAgTm9kZSogcm9vdCA9
IG5vZGU7Ci0gICAgTm9kZSogb3V0ZXJtb3N0Tm9kZVdpdGhXcmFwcGVyID0gbm9kZTsKLSAgICBm
b3IgKE5vZGUqIGN1cnJlbnQgPSBtX2ltcGwuZ2V0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgcm9vdCA9IGN1cnJlbnQ7Ci0gICAgICAgIGlm
IChoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZChjdXJyZW50LT5kb2N1bWVudCgpLCBj
dXJyZW50KSkKLSAgICAgICAgICAgIG91dGVybW9zdE5vZGVXaXRoV3JhcHBlciA9IGN1cnJlbnQ7
Ci0gICAgfQotCi0gICAgLy8gT25seSBub2RlcyB0aGF0IGhhdmUgbm8gYW5jZXN0b3JzIHdpdGgg
d3JhcHBlcnMgbWFyayB0aGUgc3VidHJlZS4gSW4gdGhlIGNvbW1vbgotICAgIC8vIGNhc2UsIHRo
ZSByb290IG9mIHRoZSBkZXRhY2hlZCBzdWJ0cmVlIGhhcyBhIHdyYXBwZXIsIHNvIHRoZSB0cmVl
IHdpbGwgb25seQotICAgIC8vIGdldCBtYXJrZWQgb25jZS4gTm9kZXMgdGhhdCBhcmVuJ3Qgb3V0
ZXJtb3N0IG5lZWQgdG8gbWFyayB0aGUgb3V0ZXJtb3N0Ci0gICAgLy8gaW4gY2FzZSBpdCBpcyBv
dGhlcndpc2UgdW5yZWFjaGFibGUuCi0gICAgLy8gRklYTUU6IEluIHRoZSBub24tY29tbW9uIGNh
c2Ugb2Ygcm9vdCBub3QgaGF2aW5nIGEgd3JhcHBlciwgdGhpcyBpcyBzdGlsbCBhbiBPKG5eMikg
YWxnb3JpdGhtLAotICAgIC8vIGFzIHdlIHdpbGwgdHJhdmVyc2UgdGhlIHdob2xlIHRyZWUgYXMg
bWFueSB0aW1lcyBhcyB0aGVyZSBhcmUgbm9kZXMgd2l0aCB3cmFwcGVycyBpbiBpdC4KLSAgICBp
ZiAobm9kZSAhPSBvdXRlcm1vc3ROb2RlV2l0aFdyYXBwZXIpIHsKLSAgICAgICAgbWFya0RPTU5v
ZGVXcmFwcGVyKG1hcmtTdGFjaywgbV9pbXBsLT5kb2N1bWVudCgpLCBvdXRlcm1vc3ROb2RlV2l0
aFdyYXBwZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gTWFyayB0aGUgd2hv
bGUgdHJlZSBzdWJ0cmVlLgotICAgIGZvciAoTm9kZSogbm9kZVRvTWFyayA9IHJvb3Q7IG5vZGVU
b01hcms7IG5vZGVUb01hcmsgPSBub2RlVG9NYXJrLT50cmF2ZXJzZU5leHROb2RlKCkpCi0gICAg
ICAgIG1hcmtET01Ob2RlV3JhcHBlcihtYXJrU3RhY2ssIG1faW1wbC0+ZG9jdW1lbnQoKSwgbm9k
ZVRvTWFyayk7CisgICAgbWFya1N0YWNrLmFkZE9wYXF1ZVJvb3Qocm9vdChub2RlKSk7CiB9CiAK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY3JlYXRlV3JhcHBlcklubGluZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24g
ODM4OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMTYgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKgogICAgIHJldHVybiBjcmVhdGVXcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbm9kZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgTm9kZSogcm9vdChOb2RlKiBub2RlKQorewor
ICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBub2RlLT5kb2N1bWVu
dCgpOworCisgICAgd2hpbGUgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKwogfQogCiAjZW5kaWYgLy8g
SlNET01Ob2RlQ3VzdG9tX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
RWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHJldmlzaW9uIDgzODk3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNTVkdF
bGVtZW50SW5zdGFuY2UuaCIKIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiSlNOb2RlLmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM1LDkgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBKU1NWR0VsZW1lbnRJ
bnN0YW5jZTo6bWFya0NoaWxkcmVuKEpTQzo6TWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
QmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0KLSAgICAvLyBNYXJrIHRoZSB3cmFwcGVy
IGZvciBvdXIgY29ycmVzcG9uZGluZyBlbGVtZW50LCBzbyBpdCBjYW4gbWFyayBpdHMgZXZlbnQg
aGFuZGxlcnMuCi0gICAgbWFya0RPTU5vZGVXcmFwcGVyKG1hcmtTdGFjaywgaW1wbCgpLT5jb3Jy
ZXNwb25kaW5nRWxlbWVudCgpLT5kb2N1bWVudCgpLCBpbXBsKCktPmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkpOworICAgIG1hcmtTdGFjay5hZGRPcGFxdWVSb290KHJvb3QoaW1wbCgpLT5jb3JyZXNw
b25kaW5nRWxlbWVudCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="82437"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>