<?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>42613</bug_id>
          
          <creation_ts>2010-07-19 21:06:52 -0700</creation_ts>
          <short_desc>WebScriptObject Should Allow Safely Checking For Key Existence</short_desc>
          <delta_ts>2010-07-20 12:25:05 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>joepeck</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>253539</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-19 21:06:52 -0700</bug_when>
    <thetext>This would be equivalent to JavaScript&apos;s `in` syntax.

For instance, the following cannot be done easily with WebScriptObject:

    var obj = {};
    var exists = (&quot;key&quot; in obj);

Methods include try/catch blocks with valueForKey, or overriding
undefinedKeySupport to return a value (not quite perfect):

    @implementation WebScriptObject(Info8_pCMUndefinedKeySupport)
    - (id)valueForUndefinedKey:(NSString *)key
    {
        NSLog(@&quot;called valueForUndefinedKey: %@&quot;, key);
        return nil;
    }
    @end

Neither are ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253540</commentid>
    <comment_count>1</comment_count>
      <attachid>62031</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-19 21:13:02 -0700</bug_when>
    <thetext>Created attachment 62031
[PATCH] Adds `hasWebScriptKey`

Wise words of Geoff Garen:

&gt; I agree that throwing an exception from valueForUndefinedKey: is
&gt; fragile. It&apos;s unfortunate that NSObject chose an exception as the
&gt; default implementation. Perhaps WebScriptObject should have overridden
&gt; this behavior from the beginning. On the other hand, maybe overriding
&gt; the default would have been confusing to authors used to the default.
&gt; [...]
&gt; 
&gt; I know that Safari, at least, depends on the exception throwing
&gt; behavior to detect properties that are not present. We could always
&gt; change Safari, but I&apos;m worried that other clients may have the same
&gt; dependency. So I don&apos;t think we should change valueForUndefinedKey:.
&gt; 
&gt; Joe: The hasKey: addition sounds fine, with one modification:
&gt; WebScriptObject is trying to conform to the key-value coding protocol,
&gt; and it takes care to call out its own additions to the protocol
&gt; using a special prefix. So, to match &quot;removeWebScriptKey:&quot;, which
&gt; is an addition to key-value coding, I would suggest &quot;hasWebScriptKey:&quot;.

That is the approach I took here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253541</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-19 21:14:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/8037314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253542</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-07-19 21:29:37 -0700</bug_when>
    <thetext>This new method should not be added to the public header until it has been through API review.  Until that time it should be added in the private header in a category on the class named to indicate that it’s pending API review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253543</commentid>
    <comment_count>4</comment_count>
      <attachid>62031</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-07-19 21:31:23 -0700</bug_when>
    <thetext>Comment on attachment 62031
[PATCH] Adds `hasWebScriptKey`

I’m also not keen on the location you chose for the test case.  The test has nothing to do with plugins as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253804</commentid>
    <comment_count>5</comment_count>
      <attachid>62090</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-20 10:33:40 -0700</bug_when>
    <thetext>Created attachment 62090
[PATCH] Addressed Comments

(In reply to comment #3)
&gt; This new method should not be added to the public header until it has been through API review.
&gt; Until that time it should be added in the private header in a category on the class named to
&gt; indicate that it’s pending API review.

Done. I put a &quot;forward declaring @interface&quot; in DRT, should I export the Private header instead?


(In reply to comment #4)
&gt; (From update of attachment 62031 [details])
&gt; I’m also not keen on the location you chose for the test case.  The test has nothing to do
&gt; with plugins as far as I can tell.

Ahh, you&apos;re correct. I moved it to &quot;LayoutTests/platform/mac/fast/objc/&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253811</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-20 10:40:00 -0700</bug_when>
    <thetext>Attachment 62090 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/bindings/objc/WebScriptObjectPrivate.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253842</commentid>
    <comment_count>7</comment_count>
      <attachid>62090</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-07-20 11:55:23 -0700</bug_when>
    <thetext>Comment on attachment 62090
[PATCH] Addressed Comments

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253857</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-20 12:25:05 -0700</bug_when>
    <thetext>Thanks Geoff!

Committed r63763
	M	WebCore/ChangeLog
	M	WebCore/bindings/objc/WebScriptObject.mm
	M	WebCore/bindings/objc/WebScriptObjectPrivate.h
	A	LayoutTests/platform/mac/fast/objc/webScriptObject-hasWebScriptKey.html
	A	LayoutTests/platform/mac/fast/objc/script-tests/webScriptObject-hasWebScriptKey.js
	A	LayoutTests/platform/mac/fast/objc/script-tests/TEMPLATE.html
	A	LayoutTests/platform/mac/fast/objc/webScriptObject-hasWebScriptKey-expected.txt
	M	LayoutTests/ChangeLog
	M	WebKitTools/DumpRenderTree/mac/ObjCController.m
	M	WebKitTools/ChangeLog
r63763 = 7d5f4421d7f37dd7503c6bbe688a3a3b81e09e62 (refs/remotes/trunk)
http://trac.webkit.org/changeset/63763</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62031</attachid>
            <date>2010-07-19 21:13:02 -0700</date>
            <delta_ts>2010-07-20 10:33:40 -0700</delta_ts>
            <desc>[PATCH] Adds `hasWebScriptKey`</desc>
            <filename>hasWebScriptKey-withChangeLogs.patch</filename>
            <type>text/plain</type>
            <size>10710</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhN2YxZWE1Li5jYWJiMGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDct
MTkgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTY3JpcHRPYmplY3QgU2hvdWxk
IEFsbG93IFNhZmVseSBDaGVja2luZyBGb3IgS2V5IEV4aXN0ZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2MTMKKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9wbGF0Zm9ybS9tYWMvcGx1Z2lucy93ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0
S2V5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3BsdWdpbnMv
c2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9wbHVnaW5zL3NjcmlwdC10ZXN0cy93ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHJ1blRlc3RzT25PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9wbHVnaW5zL3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXkuaHRtbDogQWRkZWQu
CisKIDIwMTAtMDctMTkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsYXRm
b3JtL21hYy9wbHVnaW5zL3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsYXRmb3JtL21hYy9wbHVnaW5zL3dlYlNj
cmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjA3OTVlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvd2ViU2NyaXB0T2JqZWN0LWhhc1dl
YlNjcmlwdEtleS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAorVGhpcyB0ZXN0cyAtW1dl
YlNjcmlwdE9iamVjdCBoYXNXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopa2V5XS4gSXQgaXMgdGhl
IGVxdWl2YWxlbnQgb2YgSmF2YVNjcmlwdCdzIGBpbmAsIHRvIGNoZWNrIGZvciB0aGUgZXhpc3Rl
bmNlIG9mIGEgSmF2YVNjcmlwdCBrZXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitUZXN0IHdpdGggYSBuZXdseSBjcmVhdGVkLCBsb2NhbCwgb2JqZWN0ID0+IHt9CitQQVNTIChr
ZXkgaW4gb2JqZWN0KSBpcyBmYWxzZQorUEFTUyBvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2Ny
aXB0S2V5KGtleSkgaXMgMAorUEFTUyAoa2V5IGluIG9iamVjdCkgaXMgdHJ1ZQorUEFTUyBvYmpD
Q29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtleSkgaXMgMQorUEFTUyAoa2V5IGluIG9i
amVjdCkgaXMgdHJ1ZQorUEFTUyBvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtl
eSkgaXMgMQorUEFTUyAoa2V5IGluIG9iamVjdCkgaXMgZmFsc2UKK1BBU1Mgb2JqQ0NvbnRyb2xs
ZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkpIGlzIDAKKworVGVzdCB3aXRoIGFuIGV4aXN0aW5n
LCBnbG9iYWwsIG9iamVjdCA9PiB3aW5kb3cKK1BBU1MgKGtleSBpbiBvYmplY3QpIGlzIGZhbHNl
CitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAwCitQQVNT
IChrZXkgaW4gb2JqZWN0KSBpcyB0cnVlCitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJT
Y3JpcHRLZXkoa2V5KSBpcyAxCitQQVNTIChrZXkgaW4gb2JqZWN0KSBpcyB0cnVlCitQQVNTIG9i
akNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAxCitQQVNTIChrZXkgaW4g
b2JqZWN0KSBpcyBmYWxzZQorUEFTUyBvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5
KGtleSkgaXMgMAorCitUZXN0IHdpdGggYSBET00gT2JqZWN0ID0+IGRvY3VtZW50LmJvZHkKK1BB
U1MgKGtleSBpbiBvYmplY3QpIGlzIGZhbHNlCitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNX
ZWJTY3JpcHRLZXkoa2V5KSBpcyAwCitQQVNTIChrZXkgaW4gb2JqZWN0KSBpcyB0cnVlCitQQVNT
IG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAxCitQQVNTIChrZXkg
aW4gb2JqZWN0KSBpcyB0cnVlCitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRL
ZXkoa2V5KSBpcyAxCitQQVNTIChrZXkgaW4gb2JqZWN0KSBpcyBmYWxzZQorUEFTUyBvYmpDQ29u
dHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtleSkgaXMgMAorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvcGx1Z2lucy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjQxYmE4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvc2NyaXB0LXRlc3RzL1RFTVBM
QVRFLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9wbHVnaW5zL3NjcmlwdC10ZXN0cy93ZWJTY3JpcHRPYmplY3QtaGFzV2Vi
U2NyaXB0S2V5LmpzIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvc2NyaXB0LXRl
c3RzL3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWZiYmRiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9wbHVnaW5zL3NjcmlwdC10ZXN0cy93ZWJTY3JpcHRPYmplY3QtaGFzV2Vi
U2NyaXB0S2V5LmpzCkBAIC0wLDAgKzEsNDkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIC1b
V2ViU2NyaXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTooTlNTdHJpbmcgKilrZXldLiBJdCBpcyB0
aGUgZXF1aXZhbGVudCBcCisgICAgb2YgSmF2YVNjcmlwdCdzIGBpbmAsIHRvIGNoZWNrIGZvciB0
aGUgZXhpc3RlbmNlIG9mIGEgSmF2YVNjcmlwdCBrZXkuIik7CisKKy8vIEdsb2JhbCBvYmplY3Rz
IGZvciBidWlsdC1pbiB0ZXN0IGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGtleQorLy8gd2UgZG9uJ3Qg
ZXhwZWN0IHRvIGJlIG9uIGB3aW5kb3dgLiBUaGVyZWZvcmUgd2UgY2FuIGFkZCB0aGUKKy8vIGtl
eSwgYW5kIHRlc3QgcmVtb3ZpbmcgaXQuCit2YXIga2V5ID0gIm1hZ2ljLWtleSI7Cit2YXIgb2Jq
ZWN0OworCitmdW5jdGlvbiBydW5UZXN0c09uT2JqZWN0KG9iamVjdFBhcmFtKSB7CisgICAgb2Jq
ZWN0ID0gb2JqZWN0UGFyYW07CisgICAgb2JqQ0NvbnRyb2xsZXIuc3RvcmVXZWJTY3JpcHRPYmpl
Y3Qob2JqZWN0KTsKKworICAgIC8vIFRlc3QgZm9yIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdC4i
CisgICAgc2hvdWxkQmUoIihrZXkgaW4gb2JqZWN0KSIsICJmYWxzZSIpOworICAgIHNob3VsZEJl
KCJvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtleSkiLCAiMCIpOworCisgICAg
Ly8gVGVzdCBmb3IgYSBrZXkgdGhhdCBleGlzdHMgd2l0aCBhIHRydXRoeSB2YWx1ZS4iCisgICAg
b2JqZWN0W2tleV0gPSB0cnVlOworICAgIHNob3VsZEJlKCIoa2V5IGluIG9iamVjdCkiLCAidHJ1
ZSIpOworICAgIHNob3VsZEJlKCJvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtl
eSkiLCAiMSIpOworCisgICAgLy8gIlRlc3QgZm9yIGEga2V5IHRoYXQgZXhpc3RzIHdpdGggYSBm
YWxzeSB2YWx1ZS4iCisgICAgb2JqZWN0W2tleV0gPSBmYWxzZTsKKyAgICBzaG91bGRCZSgiKGtl
eSBpbiBvYmplY3QpIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgib2JqQ0NvbnRyb2xsZXIudGVz
dEhhc1dlYlNjcmlwdEtleShrZXkpIiwgIjEiKTsKKworICAgIC8vIFRlc3QgZm9yIGEgZGVsZXRl
ZCBrZXkuIgorICAgIGRlbGV0ZSBvYmplY3Rba2V5XTsKKyAgICBzaG91bGRCZSgiKGtleSBpbiBv
YmplY3QpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoIm9iakNDb250cm9sbGVyLnRlc3RIYXNX
ZWJTY3JpcHRLZXkoa2V5KSIsICIwIik7CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIGEgbmV3bHkgY3JlYXRlZCwgbG9jYWws
IG9iamVjdCA9PiB7fSIpOworICAgIHJ1blRlc3RzT25PYmplY3Qoe30pOworCisgICAgZGVidWco
IlRlc3Qgd2l0aCBhbiBleGlzdGluZywgZ2xvYmFsLCBvYmplY3QgPT4gd2luZG93Iik7CisgICAg
cnVuVGVzdHNPbk9iamVjdCh3aW5kb3cpOworCisgICAgZGVidWcoIlRlc3Qgd2l0aCBhIERPTSBP
YmplY3QgPT4gZG9jdW1lbnQuYm9keSIpOworICAgIHJ1blRlc3RzT25PYmplY3QoZG9jdW1lbnQu
Ym9keSk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvd2ViU2NyaXB0T2JqZWN0LWhhc1dlYlNj
cmlwdEtleS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3BsdWdpbnMvd2ViU2NyaXB0
T2JqZWN0LWhhc1dlYlNjcmlwdEtleS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZhZWNkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvcGx1Z2lucy93ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5Lmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvd2ViU2NyaXB0T2JqZWN0LWhhc1dlYlNjcmlwdEtl
eS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBkMjA3ZS4uMjUw
ZjRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMC0wNy0xOSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVj
a0B3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYlNjcmlwdE9iamVjdCBTaG91bGQgQWxsb3cgU2FmZWx5IENoZWNraW5nIEZvciBL
ZXkgRXhpc3RlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjYxMworCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy9wbHVnaW5zL3dlYlNjcmlw
dE9iamVjdC1oYXNXZWJTY3JpcHRLZXkuaHRtbAorCisgICAgICAgIEFkZCBwdWJsaWMgQVBJICJo
YXNXZWJTY3JpcHRLZXkiIHRvIGNoZWNrIGZvciBrZXkgZXhpc3RlbmNlIGluCisgICAgICAgIGEg
V2ViU2NyaXB0T2JqZWN0LiBMaWtlIEphdmFTY3JpcHQncyBgaW5gIHN5bnRheC4KKworICAgICAg
ICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBoYXNX
ZWJTY3JpcHRLZXk6XSk6CisKKzIwMTAtMDctMTkgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tA
d2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogRG8gTm90IENvcHkgKi5yZTJqcyBJbnNwZWN0b3IgUmVzb3VyY2VzIGlu
IFhDb2RlIEJ1aWxkIFBoYXNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0LmggYi9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0LmgK
aW5kZXggZjc1ZjQ1OC4uYWMyYmNjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QuaApAQCAtMjY1LDYgKzI2NSwxNCBAQAogLSAodm9pZClyZW1vdmVXZWJTY3JpcHRLZXk6
KE5TU3RyaW5nICopbmFtZTsKIAogLyohCisgICAgQG1ldGhvZCBoYXNXZWJTY3JpcHRLZXk6Cisg
ICAgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGNoZWNrIGZvci4KKyAg
ICBAZGlzY3Vzc2lvbiBDaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHByb3BlcnR5IG9u
IHRoZSBvYmplY3QgaW4gdGhlIHNjcmlwdCBlbnZpcm9ubWVudC4KKyAgICBAcmVzdWx0IFJldHVy
bnMgWUVTIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMsIE5PIG90aGVyd2lzZS4KKyovCistIChCT09M
KWhhc1dlYlNjcmlwdEtleTooTlNTdHJpbmcgKiluYW1lOworCisvKiEKICAgICBAbWV0aG9kIHN0
cmluZ1JlcHJlc2VudGF0aW9uCiAgICAgQGRpc2N1c3Npb24gQ29udmVydHMgdGhlIHRhcmdldCBv
YmplY3QgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFRoZSBjb2VyY2lvbgogICAgIG9mIG5v
biBzdHJpbmcgb2JqZWN0cyB0eXBlIGlzIGRlcGVuZGVudCBvbiB0aGUgc2NyaXB0IGVudmlyb25t
ZW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bSBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggM2YyMjRm
MS4uMzc4NzRhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBA
IC00MzMsNiArNDMzLDI3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3Rh
dGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0KiByb290CiAgICAgX2RpZEV4ZWN1
dGUoc2VsZik7CiB9CiAKKy0gKEJPT0wpaGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQor
eworICAgIGlmICghW3NlbGYgX2lzU2FmZVNjcmlwdF0pCisgICAgICAgIHJldHVybiBOTzsKKwor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IFtzZWxmIF9yb290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKworICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgQk9PTCByZXN1bHQgPSBb
c2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VT
dHJpbmcoU3RyaW5nKGtleSkpKSk7CisKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOworICAgICAgICBleGVjLT5jbGVh
ckV4Y2VwdGlvbigpOworICAgIH0KKworICAgIF9kaWRFeGVjdXRlKHNlbGYpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogLSAoTlNTdHJpbmcgKilzdHJpbmdSZXByZXNlbnRhdGlvbgogewog
ICAgIGlmICghW3NlbGYgX2lzU2FmZVNjcmlwdF0pIHsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBiOGUwOGMyLi41NjA1ZTQ5
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMTkgIEpvc2VwaCBQZWNvcmFybyAgPGpv
ZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJTY3JpcHRPYmplY3QgU2hvdWxkIEFsbG93IFNhZmVseSBDaGVja2luZyBG
b3IgS2V5IEV4aXN0ZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI2MTMKKworICAgICAgICBOb3JtYWwgT2JqQ0NvbnRyb2xsZXIgd29ya2Zsb3cg
Zm9yIGEgV2ViU2NyaXB0T2JqZWN0IHRlc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvT2JqQ0NvbnRyb2xsZXIubToKKyAgICAgICAgKCtbT2JqQ0NvbnRyb2xsZXIgaXNTZWxlY3Rv
ckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbT2JqQ0NvbnRyb2xsZXIgd2Vi
U2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAoLVtPYmpDQ29udHJvbGxlciB0ZXN0
SGFzV2ViU2NyaXB0S2V5Ol0pOgorCiAyMDEwLTA3LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakNDb250cm9sbGVyLm0gYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubQppbmRleCBhYTllZTQ5Li4y
YTVmMDIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0Nv
bnRyb2xsZXIubQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRy
b2xsZXIubQpAQCAtNjYsNiArNjYsNyBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21X
ZWJTY3JpcHQ6KFNFTClhU2VsZWN0b3IKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoYWNjZXNzU3RvcmVkV2ViU2NyaXB0T2JqZWN0KQogICAgICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3RvcihzdG9yZVdlYlNjcmlwdE9iamVjdDopCiAgICAgICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKHRlc3RWYWx1ZUZvcktleSkKKyAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IodGVzdEhhc1dlYlNjcmlwdEtleTopCiAgICAgICAgICAgICB8
fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHRlc3RBcnJheSkKICAgICAgICAgKQogICAgICAgICBy
ZXR1cm4gTk87CkBAIC05Miw2ICs5Myw4IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZv
clNlbGVjdG9yOihTRUwpYVNlbGVjdG9yCiAgICAgICAgIHJldHVybiBAInN0b3JlV2ViU2NyaXB0
T2JqZWN0IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxlY3Rvcih0ZXN0VmFsdWVGb3JLZXkp
KQogICAgICAgICByZXR1cm4gQCJ0ZXN0VmFsdWVGb3JLZXkiOworICAgIGlmIChhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKHRlc3RIYXNXZWJTY3JpcHRLZXk6KSkKKyAgICAgICAgcmV0dXJuIEAidGVz
dEhhc1dlYlNjcmlwdEtleSI7CiAgICAgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodGVzdEFy
cmF5KSkKICAgICAgICAgcmV0dXJuIEAidGVzdEFycmF5IjsKIApAQCAtMTY2LDYgKzE2OSwxMiBA
QCAtICh2b2lkKXRlc3RWYWx1ZUZvcktleQogICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCAwKTsK
IH0KIAorLSAoQk9PTCl0ZXN0SGFzV2ViU2NyaXB0S2V5OihOU1N0cmluZyAqKWtleQoreworICAg
IEFTU0VSVChzdG9yZWRXZWJTY3JpcHRPYmplY3QpOworICAgIHJldHVybiBbc3RvcmVkV2ViU2Ny
aXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTprZXldOworfQorCiAtIChCT09MKXRlc3RXcmFwcGVy
Um91bmRUcmlwcGluZzooV2ViU2NyaXB0T2JqZWN0ICopd2ViU2NyaXB0T2JqZWN0CiB7CiAgICAg
SlNPYmplY3RSZWYganNPYmplY3QgPSBbd2ViU2NyaXB0T2JqZWN0IEpTT2JqZWN0XTsK
</data>
<flag name="review"
          id="50148"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62090</attachid>
            <date>2010-07-20 10:33:40 -0700</date>
            <delta_ts>2010-07-20 11:55:23 -0700</delta_ts>
            <desc>[PATCH] Addressed Comments</desc>
            <filename>hasWebScriptKey-2.patch</filename>
            <type>text/plain</type>
            <size>10949</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhN2YxZWE1Li45MzlmYTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDct
MjAgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTY3JpcHRPYmplY3QgU2hvdWxk
IEFsbG93IFNhZmVseSBDaGVja2luZyBGb3IgS2V5IEV4aXN0ZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2MTMKKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9mYXN0L29iamMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L29iamMvc2NyaXB0LXRlc3RzL3dlYlNjcmlwdE9iamVj
dC1oYXNXZWJTY3JpcHRLZXkuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0
L29iamMvd2ViU2NyaXB0T2JqZWN0LWhhc1dlYlNjcmlwdEtleS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L29iamMvd2ViU2NyaXB0T2JqZWN0LWhhc1dl
YlNjcmlwdEtleS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNy0xOSAgT2phbiBWYWZhaSAgPG9qYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9vYmpjL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy9zY3JpcHQtdGVzdHMvVEVNUExBVEUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDMxZWQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy9zY3JpcHQtdGVz
dHMvVEVNUExBVEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklM
RV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy9zY3JpcHQtdGVzdHMvd2Vi
U2NyaXB0T2JqZWN0LWhhc1dlYlNjcmlwdEtleS5qcyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L29iamMvc2NyaXB0LXRlc3RzL3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiYmRiMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L29iamMvc2NyaXB0LXRlc3Rz
L3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXkuanMKQEAgLTAsMCArMSw0OSBAQAorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgLVtXZWJTY3JpcHRPYmplY3QgaGFzV2ViU2NyaXB0S2V5OihO
U1N0cmluZyAqKWtleV0uIEl0IGlzIHRoZSBlcXVpdmFsZW50IFwKKyAgICBvZiBKYXZhU2NyaXB0
J3MgYGluYCwgdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBKYXZhU2NyaXB0IGtleS4i
KTsKKworLy8gR2xvYmFsIG9iamVjdHMgZm9yIGJ1aWx0LWluIHRlc3QgZnVuY3Rpb25zLiBUaGlz
IGlzIGEga2V5CisvLyB3ZSBkb24ndCBleHBlY3QgdG8gYmUgb24gYHdpbmRvd2AuIFRoZXJlZm9y
ZSB3ZSBjYW4gYWRkIHRoZQorLy8ga2V5LCBhbmQgdGVzdCByZW1vdmluZyBpdC4KK3ZhciBrZXkg
PSAibWFnaWMta2V5IjsKK3ZhciBvYmplY3Q7CisKK2Z1bmN0aW9uIHJ1blRlc3RzT25PYmplY3Qo
b2JqZWN0UGFyYW0pIHsKKyAgICBvYmplY3QgPSBvYmplY3RQYXJhbTsKKyAgICBvYmpDQ29udHJv
bGxlci5zdG9yZVdlYlNjcmlwdE9iamVjdChvYmplY3QpOworCisgICAgLy8gVGVzdCBmb3IgYSBr
ZXkgdGhhdCBkb2Vzbid0IGV4aXN0LiIKKyAgICBzaG91bGRCZSgiKGtleSBpbiBvYmplY3QpIiwg
ImZhbHNlIik7CisgICAgc2hvdWxkQmUoIm9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRL
ZXkoa2V5KSIsICIwIik7CisKKyAgICAvLyBUZXN0IGZvciBhIGtleSB0aGF0IGV4aXN0cyB3aXRo
IGEgdHJ1dGh5IHZhbHVlLiIKKyAgICBvYmplY3Rba2V5XSA9IHRydWU7CisgICAgc2hvdWxkQmUo
IihrZXkgaW4gb2JqZWN0KSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoIm9iakNDb250cm9sbGVy
LnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSIsICIxIik7CisKKyAgICAvLyAiVGVzdCBmb3IgYSBr
ZXkgdGhhdCBleGlzdHMgd2l0aCBhIGZhbHN5IHZhbHVlLiIKKyAgICBvYmplY3Rba2V5XSA9IGZh
bHNlOworICAgIHNob3VsZEJlKCIoa2V5IGluIG9iamVjdCkiLCAidHJ1ZSIpOworICAgIHNob3Vs
ZEJlKCJvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtleSkiLCAiMSIpOworCisg
ICAgLy8gVGVzdCBmb3IgYSBkZWxldGVkIGtleS4iCisgICAgZGVsZXRlIG9iamVjdFtrZXldOwor
ICAgIHNob3VsZEJlKCIoa2V5IGluIG9iamVjdCkiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgi
b2JqQ0NvbnRyb2xsZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkpIiwgIjAiKTsKKworICAgIGRl
YnVnKCIiKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGRlYnVnKCJUZXN0IHdpdGgg
YSBuZXdseSBjcmVhdGVkLCBsb2NhbCwgb2JqZWN0ID0+IHt9Iik7CisgICAgcnVuVGVzdHNPbk9i
amVjdCh7fSk7CisKKyAgICBkZWJ1ZygiVGVzdCB3aXRoIGFuIGV4aXN0aW5nLCBnbG9iYWwsIG9i
amVjdCA9PiB3aW5kb3ciKTsKKyAgICBydW5UZXN0c09uT2JqZWN0KHdpbmRvdyk7CisKKyAgICBk
ZWJ1ZygiVGVzdCB3aXRoIGEgRE9NIE9iamVjdCA9PiBkb2N1bWVudC5ib2R5Iik7CisgICAgcnVu
VGVzdHNPbk9iamVjdChkb2N1bWVudC5ib2R5KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9vYmpj
L3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy93ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzk1ZTI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qvb2JqYy93
ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5
IEBACitUaGlzIHRlc3RzIC1bV2ViU2NyaXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTooTlNTdHJp
bmcgKilrZXldLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZiBKYXZhU2NyaXB0J3MgYGluYCwgdG8g
Y2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBKYXZhU2NyaXB0IGtleS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3Qgd2l0aCBhIG5ld2x5IGNyZWF0ZWQsIGxvY2FsLCBv
YmplY3QgPT4ge30KK1BBU1MgKGtleSBpbiBvYmplY3QpIGlzIGZhbHNlCitQQVNTIG9iakNDb250
cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAwCitQQVNTIChrZXkgaW4gb2JqZWN0
KSBpcyB0cnVlCitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBp
cyAxCitQQVNTIChrZXkgaW4gb2JqZWN0KSBpcyB0cnVlCitQQVNTIG9iakNDb250cm9sbGVyLnRl
c3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAxCitQQVNTIChrZXkgaW4gb2JqZWN0KSBpcyBmYWxz
ZQorUEFTUyBvYmpDQ29udHJvbGxlci50ZXN0SGFzV2ViU2NyaXB0S2V5KGtleSkgaXMgMAorCitU
ZXN0IHdpdGggYW4gZXhpc3RpbmcsIGdsb2JhbCwgb2JqZWN0ID0+IHdpbmRvdworUEFTUyAoa2V5
IGluIG9iamVjdCkgaXMgZmFsc2UKK1BBU1Mgb2JqQ0NvbnRyb2xsZXIudGVzdEhhc1dlYlNjcmlw
dEtleShrZXkpIGlzIDAKK1BBU1MgKGtleSBpbiBvYmplY3QpIGlzIHRydWUKK1BBU1Mgb2JqQ0Nv
bnRyb2xsZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkpIGlzIDEKK1BBU1MgKGtleSBpbiBvYmpl
Y3QpIGlzIHRydWUKK1BBU1Mgb2JqQ0NvbnRyb2xsZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkp
IGlzIDEKK1BBU1MgKGtleSBpbiBvYmplY3QpIGlzIGZhbHNlCitQQVNTIG9iakNDb250cm9sbGVy
LnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAwCisKK1Rlc3Qgd2l0aCBhIERPTSBPYmplY3Qg
PT4gZG9jdW1lbnQuYm9keQorUEFTUyAoa2V5IGluIG9iamVjdCkgaXMgZmFsc2UKK1BBU1Mgb2Jq
Q0NvbnRyb2xsZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkpIGlzIDAKK1BBU1MgKGtleSBpbiBv
YmplY3QpIGlzIHRydWUKK1BBU1Mgb2JqQ0NvbnRyb2xsZXIudGVzdEhhc1dlYlNjcmlwdEtleShr
ZXkpIGlzIDEKK1BBU1MgKGtleSBpbiBvYmplY3QpIGlzIHRydWUKK1BBU1Mgb2JqQ0NvbnRyb2xs
ZXIudGVzdEhhc1dlYlNjcmlwdEtleShrZXkpIGlzIDEKK1BBU1MgKGtleSBpbiBvYmplY3QpIGlz
IGZhbHNlCitQQVNTIG9iakNDb250cm9sbGVyLnRlc3RIYXNXZWJTY3JpcHRLZXkoa2V5KSBpcyAw
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9vYmpjL3dlYlNjcmlwdE9i
amVjdC1oYXNXZWJTY3JpcHRLZXkuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L29iamMvd2ViU2NyaXB0T2JqZWN0LWhhc1dlYlNjcmlwdEtleS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYTA0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9vYmpjL3dlYlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRL
ZXkuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy93ZWJTY3Jp
cHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MGQyMDdlLi4yNjc4Yzk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA3LTIw
ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU2NyaXB0T2JqZWN0IFNob3VsZCBB
bGxvdyBTYWZlbHkgQ2hlY2tpbmcgRm9yIEtleSBFeGlzdGVuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNjEzCisKKyAgICAgICAgVGVzdDogcGxh
dGZvcm0vbWFjL2Zhc3Qvb2JqYy93ZWJTY3JpcHRPYmplY3QtaGFzV2ViU2NyaXB0S2V5Lmh0bWwK
KworICAgICAgICBBZGQgcHJpdmF0ZSBBUEkgImhhc1dlYlNjcmlwdEtleSIgdG8gY2hlY2sgZm9y
IGtleSBleGlzdGVuY2UgaW4KKyAgICAgICAgYSBXZWJTY3JpcHRPYmplY3QuIExpa2UgSmF2YVNj
cmlwdCdzIGBpbmAgc3ludGF4LiBUaGlzIGlzIGludGVuZGVkCisgICAgICAgIHRvIGJlIG1hZGUg
cHVibGljIGV2ZW50dWFsbHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IGhhc1dlYlNjcmlwdEtleTpdKToK
KyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaDoKKwogMjAx
MC0wNy0xOSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0gYi9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCmluZGV4IDNmMjI0ZjEuLjM3ODc0YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQpAQCAtNDMzLDYgKzQzMywyNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0
RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCog
cm9vdAogICAgIF9kaWRFeGVjdXRlKHNlbGYpOwogfQogCistIChCT09MKWhhc1dlYlNjcmlwdEtl
eTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBpZiAoIVtzZWxmIF9pc1NhZmVTY3JpcHRdKQorICAg
ICAgICByZXR1cm4gTk87CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBbc2VsZiBfcm9vdE9iamVj
dF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgQVNTRVJUKCFleGVjLT5oYWRF
eGNlcHRpb24oKSk7CisKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwor
ICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKFN0cmluZyhrZXkpKSkpOworCisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsK
KyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBfZGlkRXhlY3V0
ZShzZWxmKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC0gKE5TU3RyaW5nICopc3RyaW5n
UmVwcmVzZW50YXRpb24KIHsKICAgICBpZiAoIVtzZWxmIF9pc1NhZmVTY3JpcHRdKSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGIv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaAppbmRleCAzYTQy
NGNlLi41ZGExZGRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmgKQEAgLTU5LDYgKzU5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC0gKEpT
Qzo6QmluZGluZ3M6OlJvb3RPYmplY3QqKV9vcmlnaW5Sb290T2JqZWN0OwogQGVuZAogCitAaW50
ZXJmYWNlIFdlYlNjcmlwdE9iamVjdCAoU3RhZ2VkRm9yUHVibGljKQorLyohCisgQG1ldGhvZCBo
YXNXZWJTY3JpcHRLZXk6CisgQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRv
IGNoZWNrIGZvci4KKyBAZGlzY3Vzc2lvbiBDaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhl
IHByb3BlcnR5IG9uIHRoZSBvYmplY3QgaW4gdGhlIHNjcmlwdCBlbnZpcm9ubWVudC4KKyBAcmVz
dWx0IFJldHVybnMgWUVTIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMsIE5PIG90aGVyd2lzZS4KKyAq
LworLSAoQk9PTCloYXNXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICopbmFtZTsKK0BlbmQKKwogQGlu
dGVyZmFjZSBXZWJTY3JpcHRPYmplY3RQcml2YXRlIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpp
bmRleCBiOGUwOGMyLi4yNDY2NWQ4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMjAg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTY3JpcHRPYmplY3QgU2hvdWxkIEFs
bG93IFNhZmVseSBDaGVja2luZyBGb3IgS2V5IEV4aXN0ZW5jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2MTMKKworICAgICAgICBOb3JtYWwgT2Jq
Q0NvbnRyb2xsZXIgd29ya2Zsb3cgZm9yIGEgV2ViU2NyaXB0T2JqZWN0IHRlc3QuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubToKKyAgICAgICAgKCtbT2Jq
Q0NvbnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAg
KCtbT2JqQ0NvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorICAgICAgICAo
LVtPYmpDQ29udHJvbGxlciB0ZXN0SGFzV2ViU2NyaXB0S2V5Ol0pOgorCiAyMDEwLTA3LTE5ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL09iakND
b250cm9sbGVyLm0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xs
ZXIubQppbmRleCBhYTllZTQ5Li4yZWE2NzgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubQpAQCAtMzYsNiArMzYsMTIgQEAKICNpbXBvcnQg
PHB0aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKy8vIFJlbW92ZSB0aGlz
IG9uY2UgaGFzV2ViU2NyaXB0S2V5IGhhcyBiZWVuIG1hZGUgcHVibGljLgorQGludGVyZmFjZSBX
ZWJTY3JpcHRPYmplY3QgKFN0YWdlZEZvclB1YmxpYykKKy0gKEJPT0wpaGFzV2ViU2NyaXB0S2V5
OihOU1N0cmluZyAqKW5hbWU7CitAZW5kCisKKwogc3RhdGljIHZvaWQqIHJ1bkphdmFTY3JpcHRU
aHJlYWQodm9pZCogYXJnKQogewogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2Jh
bENvbnRleHRDcmVhdGUoMCk7CkBAIC02Niw2ICs3Miw3IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4
Y2x1ZGVkRnJvbVdlYlNjcmlwdDooU0VMKWFTZWxlY3RvcgogICAgICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3RvcihhY2Nlc3NTdG9yZWRXZWJTY3JpcHRPYmplY3QpCiAgICAgICAgICAg
ICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHN0b3JlV2ViU2NyaXB0T2JqZWN0OikKICAgICAg
ICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodGVzdFZhbHVlRm9yS2V5KQorICAgICAg
ICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcih0ZXN0SGFzV2ViU2NyaXB0S2V5OikKICAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodGVzdEFycmF5KQogICAgICAgICAp
CiAgICAgICAgIHJldHVybiBOTzsKQEAgLTkyLDYgKzk5LDggQEAgKyAoTlNTdHJpbmcgKil3ZWJT
Y3JpcHROYW1lRm9yU2VsZWN0b3I6KFNFTClhU2VsZWN0b3IKICAgICAgICAgcmV0dXJuIEAic3Rv
cmVXZWJTY3JpcHRPYmplY3QiOwogICAgIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHRlc3RW
YWx1ZUZvcktleSkpCiAgICAgICAgIHJldHVybiBAInRlc3RWYWx1ZUZvcktleSI7CisgICAgaWYg
KGFTZWxlY3RvciA9PSBAc2VsZWN0b3IodGVzdEhhc1dlYlNjcmlwdEtleTopKQorICAgICAgICBy
ZXR1cm4gQCJ0ZXN0SGFzV2ViU2NyaXB0S2V5IjsKICAgICBpZiAoYVNlbGVjdG9yID09IEBzZWxl
Y3Rvcih0ZXN0QXJyYXkpKQogICAgICAgICByZXR1cm4gQCJ0ZXN0QXJyYXkiOwogCkBAIC0xNjYs
NiArMTc1LDEyIEBAIC0gKHZvaWQpdGVzdFZhbHVlRm9yS2V5CiAgICAgcHRocmVhZF9qb2luKHB0
aHJlYWQsIDApOwogfQogCistIChCT09MKXRlc3RIYXNXZWJTY3JpcHRLZXk6KE5TU3RyaW5nICop
a2V5Cit7CisgICAgQVNTRVJUKHN0b3JlZFdlYlNjcmlwdE9iamVjdCk7CisgICAgcmV0dXJuIFtz
dG9yZWRXZWJTY3JpcHRPYmplY3QgaGFzV2ViU2NyaXB0S2V5OmtleV07Cit9CisKIC0gKEJPT0wp
dGVzdFdyYXBwZXJSb3VuZFRyaXBwaW5nOihXZWJTY3JpcHRPYmplY3QgKil3ZWJTY3JpcHRPYmpl
Y3QKIHsKICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IFt3ZWJTY3JpcHRPYmplY3QgSlNPYmpl
Y3RdOwo=
</data>
<flag name="review"
          id="50219"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>