<?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>122802</bug_id>
          
          <creation_ts>2013-10-14 18:09:31 -0700</creation_ts>
          <short_desc>Don&apos;t generate a wasteful isObservable check in isReachableFromOpaqueRoots</short_desc>
          <delta_ts>2013-10-14 19:46:07 -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>WebCore JavaScript</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939771</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-14 18:09:31 -0700</bug_when>
    <thetext>Like here:

bool JSTestObjOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
{
    JSTestObj* jsTestObj = jsCast&lt;JSTestObj*&gt;(handle.get().asCell());
    if (!isObservable(jsTestObj))
        return false;
    UNUSED_PARAM(visitor);
    return false;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939775</commentid>
    <comment_count>1</comment_count>
      <attachid>214214</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-14 18:16:08 -0700</bug_when>
    <thetext>Created attachment 214214
proposed patch

The added UNUSED_PARAM is not always accurate, but neither was an existing one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939777</commentid>
    <comment_count>2</comment_count>
      <attachid>214214</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 18:18:59 -0700</bug_when>
    <thetext>Comment on attachment 214214
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939778</commentid>
    <comment_count>3</comment_count>
      <attachid>214215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-14 18:22:00 -0700</bug_when>
    <thetext>Created attachment 214215
a little better

Actually, can do a little better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939781</commentid>
    <comment_count>4</comment_count>
      <attachid>214215</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 18:28:07 -0700</bug_when>
    <thetext>Comment on attachment 214215
a little better

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

r=me

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2575
&gt; +            push(@implContent, &quot;    JS${interfaceName}* js${interfaceName} = jsCast&lt;JS${interfaceName}*&gt;(handle.get().asCell());\n&quot;);
&gt; +            $emittedJSCast = 1;

Might want to check if (!$emittedJSCast) for future people to pick up on the pattern if they add something. Up to you though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939799</commentid>
    <comment_count>5</comment_count>
      <attachid>214215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-14 19:22:15 -0700</bug_when>
    <thetext>Comment on attachment 214215
a little better

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2575
&gt;&gt; +            $emittedJSCast = 1;
&gt; 
&gt; Might want to check if (!$emittedJSCast) for future people to pick up on the pattern if they add something. Up to you though.

Yeah, I also had this thought cross my mind... I think that adding an unnecessary check would be confusing, and that does not overweigh the benefit of easier copy/pasting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939801</commentid>
    <comment_count>6</comment_count>
      <attachid>214215</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 19:46:04 -0700</bug_when>
    <thetext>Comment on attachment 214215
a little better

Clearing flags on attachment: 214215

Committed r157438: &lt;http://trac.webkit.org/changeset/157438&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939802</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 19:46:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214214</attachid>
            <date>2013-10-14 18:16:08 -0700</date>
            <delta_ts>2013-10-14 18:22:00 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>BadIsObservable.txt</filename>
            <type>text/plain</type>
            <size>15111</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTEwLTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGdlbmVyYXRlIGEg
d2FzdGVmdWwgaXNPYnNlcnZhYmxlIGNoZWNrIGluIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
IERvbid0LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwOgorICAgICAgICBVcGRhdGVkIHJlc3VsdHMuCisKIDIwMTMtMTAtMTQgIFNh
bXVlbCBXaGl0ZSAgPHNhbXVlbF93aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGZpZWxk
c2V0IHNob3VsZCBoYXZlIEdyb3VwUm9sZSBhbmQgbGVnZW5kIHNob3VsZCBiZSBkZXNjcmlwdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjU2Miw3ICsy
NTYyLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7
aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICAjIEFsbCBBY3RpdmVET01PYmplY3RzIGltcGxlbWVu
dCBoYXNQZW5kaW5nQWN0aXZpdHkoKSwgYnV0IG5vdCBhbGwgb2YgdGhlbQogICAgICAgICAjIGlu
Y3JlbWVudCB0aGVpciBDKysgcmVmZXJlbmNlIGNvdW50cyB3aGVuIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGJlY29tZXMKICAgICAgICAgIyB0cnVlLiBBcyBhIHJlc3VsdCwgQWN0aXZlRE9NT2JqZWN0
cyBjYW4gYmUgcHJlbWF0dXJlbHkgZGVzdHJveWVkIGJlZm9yZQpAQCAtMjU3MSwyMCArMjU3MCwy
NSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIEZJWE1FOiBGaXggdGhp
cyBsaWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgbW92ZSB0aGlzIGhhc1BlbmRpbmdBY3Rp
dml0eQogICAgICAgICAjIGNoZWNrIGJlbG93IHRoZSBpc09ic2VydmFibGUgY2hlY2suCiAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJm
YWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTJHtpbnRlcmZhY2VOYW1lfSoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpT
JHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwo
KS5oYXNQZW5kaW5nQWN0aXZpdHkoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJFdmVu
dFRhcmdldCIpKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW50
ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFt
ZX0qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuaXNGaXJpbmdFdmVu
dExpc3RlbmVycygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0
b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJOb2RlIikpIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTJHtpbnRlcmZhY2VOYW1lfSoganMke2ludGVyZmFj
ZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChKU05vZGVP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoaGFuZGxlLCAwLCB2aXNpdG9yKSlcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xu
Iik7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFpc09i
c2VydmFibGUoanMke2ludGVyZmFjZU5hbWV9KSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIGlmIChHZXRHZW5lcmF0
ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxK
UyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWlzT2JzZXJ2YWJsZShqcyR7aW50ZXJm
YWNlTmFtZX0pKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGZhbHNlO1xuIik7CisKICAgICAgICAgICAgIG15ICRyb290U3RyaW5nOwogICAgICAg
ICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGwiKSB7
CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2ltcGxUeXBlfSogcm9vdCA9
ICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKTtcbiI7CkBAIC0yNjE4LDYgKzI2MjIsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRyb290U3RyaW5nKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTtcbiIpOwogICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGhhbmRs
ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAxLDkgKzIwMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0
QWMKIAogYm9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGpzVGVzdEFjdGl2
ZURPTU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdEFjdGl2ZURPTU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBV
TlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsOSArMTgxLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RDdQogCiBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIqIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyID0ganNDYXN0PEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBpZiAoIWlzT2Jz
ZXJ2YWJsZShqc1Rlc3RDdXN0b21OYW1lZEdldHRlcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDcsOSArMjA3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RFdgog
CiBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdEV2ZW50Q29uc3RydWN0b3Ip
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjkzLDggKzI5Myw3IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNS
ZWFjaGFibGUKICAgICBKU1Rlc3RFdmVudFRhcmdldCoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nh
c3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIGlmIChq
c1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0RXZlbnRUYXJnZXQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUwLDkgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0
RXgKIAogYm9vbCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBKU1Rlc3RFeGNlcHRpb24qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2Fz
dDxKU1Rlc3RFeGNlcHRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNP
YnNlcnZhYmxlKGpzVGVzdEV4Y2VwdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBV
TlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDE1NzQx
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTIsOCArNzEyLDcgQEAgYm9vbCBKU1Rlc3RJ
bnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcgogICAgIEpTVGVzdEludGVyZmFjZSoganNUZXN0
SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CiAgICAgaWYgKGpzVGVzdEludGVyZmFjZS0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RJbnRl
cmZhY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9u
IDE1NzQxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDkgKzE2
NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0TWUKIAogYm9vbCBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcioganNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVOVVNF
RF9QQVJBTShoYW5kbGUpOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw4ICsxOTIs
NyBAQCBib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjCiAgICAgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvcioganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKICAgICBpZiAoanNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMTUsOSArMzMxNSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T2IKIAogYm9vbCBKU1Rl
c3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rl
c3RPYmoqIGpzVGVzdE9iaiA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE9iaikpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRv
cik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOSArMjEyLDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzT2JzZXJ2YWJsZShKU1Rlc3RPdgogCiBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkp
OwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShy
ZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ3LDkgKzI0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNU
ZXN0U2UKIAogYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihoYW5kbGUu
Z2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURf
UEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjgsOSArNTY4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
T2JzZXJ2YWJsZShKU1Rlc3RUeQogCiBib29sIEpTVGVzdFR5cGVkZWZzT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGpzVGVzdFR5
cGVkZWZzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
LSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RUeXBlZGVmcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRv
cik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAx
NTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRy
aWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOSArMTUwLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzT2JzZXJ2YWJsZShKU2F0dHJpYgogCiBib29sIEpTYXR0cmlidXRlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNhdHRyaWJ1dGUqIGpzYXR0
cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAg
ICBpZiAoIWlzT2JzZXJ2YWJsZShqc2F0dHJpYnV0ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAkocmV2aXNpb24gMTU3NDE3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsOSArMTM3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
T2JzZXJ2YWJsZShKU3JlYWRvbgogCiBib29sIEpTcmVhZG9ubHlPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU3JlYWRvbmx5KiBqc3JlYWRvbmx5ID0ganND
YXN0PEpTcmVhZG9ubHkqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNl
cnZhYmxlKGpzcmVhZG9ubHkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BB
UkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0K
</data>
<flag name="review"
          id="236742"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214215</attachid>
            <date>2013-10-14 18:22:00 -0700</date>
            <delta_ts>2013-10-14 19:46:04 -0700</delta_ts>
            <desc>a little better</desc>
            <filename>BadIsObservable.txt</filename>
            <type>text/plain</type>
            <size>15513</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzQzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTEwLTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGdlbmVyYXRlIGEg
d2FzdGVmdWwgaXNPYnNlcnZhYmxlIGNoZWNrIGluIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
IERvbid0LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwOgorICAgICAgICBVcGRhdGVkIHJlc3VsdHMuCisKIDIwMTMtMTAtMTQgIFNh
bXVlbCBXaGl0ZSAgPHNhbXVlbF93aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGZpZWxk
c2V0IHNob3VsZCBoYXZlIEdyb3VwUm9sZSBhbmQgbGVnZW5kIHNob3VsZCBiZSBkZXNjcmlwdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjU2Miw3ICsy
NTYyLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7
aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTtcbiIpOwogICAgICAgICAjIEFsbCBBY3RpdmVET01PYmplY3RzIGltcGxlbWVu
dCBoYXNQZW5kaW5nQWN0aXZpdHkoKSwgYnV0IG5vdCBhbGwgb2YgdGhlbQogICAgICAgICAjIGlu
Y3JlbWVudCB0aGVpciBDKysgcmVmZXJlbmNlIGNvdW50cyB3aGVuIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGJlY29tZXMKICAgICAgICAgIyB0cnVlLiBBcyBhIHJlc3VsdCwgQWN0aXZlRE9NT2JqZWN0
cyBjYW4gYmUgcHJlbWF0dXJlbHkgZGVzdHJveWVkIGJlZm9yZQpAQCAtMjU3MCwyMSArMjU2OSwz
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIHdyYXBwZXJzIHVuY29u
ZGl0aW9uYWxseSBrZWVwIEFjdGl2ZURPTU9iamVjdHMgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFs
aXZlLgogICAgICAgICAjIEZJWE1FOiBGaXggdGhpcyBsaWZldGltZSBpc3N1ZSBpbiB0aGUgRE9N
LCBhbmQgbW92ZSB0aGlzIGhhc1BlbmRpbmdBY3Rpdml0eQogICAgICAgICAjIGNoZWNrIGJlbG93
IHRoZSBpc09ic2VydmFibGUgY2hlY2suCisgICAgICAgIG15ICRlbWl0dGVkSlNDYXN0ID0gMDsK
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRp
bnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nh
c3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOworICAg
ICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0
eSgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsKKyAgICAg
ICAgICAgIGlmICghJGVtaXR0ZWRKU0Nhc3QpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpz
Q2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7Cisg
ICAgICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1w
bCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIp
KSB7CisgICAgICAgICAgICBpZiAoISRlbWl0dGVkSlNDYXN0KSB7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7aW50ZXJmYWNl
TmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgp
KTtcbiIpOworICAgICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0ID0gMTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChKU05vZGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoaGFuZGxlLCAwLCB2aXNpdG9yKSlcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFpc09ic2VydmFi
bGUoanMke2ludGVyZmFjZU5hbWV9KSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIGlmIChHZXRHZW5lcmF0ZUlzUmVh
Y2hhYmxlKCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBpZiAoISRlbWl0dGVkSlNDYXN0KSB7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5h
bWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFu
ZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICRlbWl0dGVkSlNDYXN0
ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghaXNPYnNlcnZhYmxlKGpzJHtpbnRlcmZhY2VOYW1lfSkpXG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKKwogICAgICAg
ICAgICAgbXkgJHJvb3RTdHJpbmc7CiAgICAgICAgICAgICBpZiAoR2V0R2VuZXJhdGVJc1JlYWNo
YWJsZSgkaW50ZXJmYWNlKSBlcSAiSW1wbCIpIHsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmlu
ZyAgPSAiICAgICR7aW1wbFR5cGV9KiByb290ID0gJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgp
O1xuIjsKQEAgLTI2MTgsNiArMjYzMyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJHJvb3RTdHJpbmcpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290
KHJvb3QpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoISRlbWl0dGVk
SlNDYXN0KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKGhhbmRsZSk7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDkgKzIwMSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0QWMKIAogYm9vbCBKU1Rlc3RBY3RpdmVET01PYmpl
Y3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RB
Y3RpdmVET01PYmplY3QqIGpzVGVzdEFjdGl2ZURPTU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3Rp
dmVET01PYmplY3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZh
YmxlKGpzVGVzdEFjdGl2ZURPTU9iamVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBV
TlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
OSArMTgxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RDdQogCiBi
b29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGpzVGVzdEN1c3RvbU5h
bWVkR2V0dGVyID0ganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RDdXN0b21OYW1lZEdldHRl
cikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAg
ICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RFdgogCiBib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKiBqc1Rlc3RFdmVudENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZh
YmxlKGpzVGVzdEV2ZW50Q29uc3RydWN0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
VU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24g
MTU3NDE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDggKzI5Myw2IEBAIGJvb2wg
SlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNSZWFjaGFibGUKICAgICBKU1Rlc3RFdmVudFRhcmdl
dCoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUu
Z2V0KCkuYXNDZWxsKCkpOwogICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLmlzRmly
aW5nRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFpc09i
c2VydmFibGUoanNUZXN0RXZlbnRUYXJnZXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUwLDkgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0
RXgKIAogYm9vbCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBKU1Rlc3RFeGNlcHRpb24qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2Fz
dDxKU1Rlc3RFeGNlcHRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNP
YnNlcnZhYmxlKGpzVGVzdEV4Y2VwdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBV
TlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDE1NzQx
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTIsOCArNzEyLDYgQEAgYm9vbCBKU1Rlc3RJ
bnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcgogICAgIEpTVGVzdEludGVyZmFjZSoganNUZXN0
SW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CiAgICAgaWYgKGpzVGVzdEludGVyZmFjZS0+aW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RJbnRl
cmZhY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3Ip
OwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDE1NzQxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDkgKzE2NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c09ic2VydmFibGUoSlNUZXN0TWUKIAogYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcioganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9IGpzQ2Fz
dDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
LSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAgIFVOVVNF
RF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Miw4ICsxOTIsNiBAQCBib29sIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JPd25lcjo6aXNSZWFjCiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcioganNUZXN0TmFt
ZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKICAgICBpZiAoanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLmhh
c1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzT2Jz
ZXJ2YWJsZShqc1Rlc3ROYW1lZENvbnN0cnVjdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMTUsOSArMzMx
NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0T2IKIAogYm9vbCBK
U1Rlc3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBK
U1Rlc3RPYmoqIGpzVGVzdE9iaiA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE9iaikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMTU3NDE3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOSArMjEyLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RPdgogCiBib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0g
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
CShyZXZpc2lvbiAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ3LDkgKzI0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUo
SlNUZXN0U2UKIAogYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNPYnNlcnZhYmxlKGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVT
RURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAxNTc0MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjgsOSArNTY4LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzT2JzZXJ2YWJsZShKU1Rlc3RUeQogCiBib29sIEpTVGVzdFR5cGVkZWZzT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNUZXN0VHlwZWRlZnMqIGpzVGVz
dFR5cGVkZWZzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgp
KTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RUeXBlZGVmcykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCShyZXZpc2lv
biAxNTc0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNh
dHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOSArMTUwLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzT2JzZXJ2YWJsZShKU2F0dHJpYgogCiBib29sIEpTYXR0cmlidXRlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNhdHRyaWJ1dGUqIGpz
YXR0cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
LSAgICBpZiAoIWlzT2JzZXJ2YWJsZShqc2F0dHJpYnV0ZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAkocmV2aXNpb24gMTU3NDE3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsOSArMTM3LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzT2JzZXJ2YWJsZShKU3JlYWRvbgogCiBib29sIEpTcmVhZG9ubHlPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU3JlYWRvbmx5KiBqc3JlYWRvbmx5ID0g
anNDYXN0PEpTcmVhZG9ubHkqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghaXNP
YnNlcnZhYmxlKGpzcmVhZG9ubHkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgVU5VU0VE
X1BBUkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBm
YWxzZTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>