<?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>22365</bug_id>
          
          <creation_ts>2008-11-19 14:49:42 -0800</creation_ts>
          <short_desc>Add a test to verify the results of DOM constructors</short_desc>
          <delta_ts>2008-12-01 13:03:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Pam Greene (IRC:pamg)">pam</reporter>
          <assigned_to name="Pam Greene (IRC:pamg)">pam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99378</commentid>
    <comment_count>0</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-19 14:49:42 -0800</bug_when>
    <thetext>Most DOM nodes&apos; constructors throw an exception when called, some have a working constructor, and some node types have no constructor at all.  Add a test to track that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99379</commentid>
    <comment_count>1</comment_count>
      <attachid>25288</attachid>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-19 14:52:15 -0800</bug_when>
    <thetext>Created attachment 25288
New test + result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99491</commentid>
    <comment_count>2</comment_count>
      <attachid>25288</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-11-20 09:44:25 -0800</bug_when>
    <thetext>Comment on attachment 25288
New test + result

&gt; +
&gt; +// These nodes have a working constructor.
&gt; +var nodes_constructor = [
&gt; +  &apos;DOMParser&apos;,
&gt; +  &apos;XMLHttpRequest&apos;, &apos;XMLSerializer&apos;,
&gt; +  &apos;XPathEvaluator&apos;,
&gt; +  &apos;XSLTProcessor&apos;
&gt; +];

You are missing Audio, Option, Image, Worker, and MessageChannel here.

&gt; +
&gt; +// These nodes have no constructor.
&gt; +var nodes_no_constructor = [
&gt; +  &apos;EventTargetNode&apos;,
&gt; +  &apos;BarInfo&apos;, &apos;CanvasGradient&apos;,
&gt; +  &apos;CanvasPattern&apos;, &apos;Console&apos;,
&gt; +  &apos;DOMSelection&apos;, &apos;DOMWindow&apos;, &apos;History&apos;,
&gt; +  &apos;UndetectableHTMLCollection&apos;,
I don&apos;t think this is a real class in WebCore.  We do have class called HTMLAllCollection which is undetectable though.  Perhaps that is what you were thinking of.


&gt; +  &apos;HTMLOptionsCollection&apos;, &apos;InspectorController&apos;,
&gt; +  &apos;Location&apos;,
&gt; +  &apos;Navigator&apos;,
&gt; +  &apos;NodeIterator&apos;,
&gt; +  &apos;RGBColor&apos;, &apos;Screen&apos;,
&gt; +  &apos;TreeWalker&apos;,
&gt; +  &apos;XPathExpression&apos;, &apos;XPathNSResolver&apos;,
&gt; +  &apos;EventTarget&apos;, &apos;EventListener&apos;,
&gt; +  &apos;NPObject&apos;
&gt; +];

Some of these should probably have constructors (of the non-constructible variety), but I guess it is good to test our current behavior.

&gt; +
&gt; +function TryAllocate(node) {
&gt; +  var Cons = this[node];
&gt; +  if (!Cons) return &apos;no constructor&apos;;
&gt; +  try { return new Cons(); }
&gt; +  catch (e) { return &apos;exception&apos;; }
&gt; +}
&gt; +
&gt; +function check(name, expected) {
&gt; +  actual = TryAllocate(node);
&gt; +  if (actual == expected)
&gt; +    document.write(&quot;PASS: &quot; + name + &quot; &apos;&quot; + expected + &quot;&apos;&lt;br&gt;&quot;);
&gt; +  else
&gt; +    document.write(&quot;FAIL: &quot; + name + &quot; wanted &apos;&quot; + expected + &quot;&apos;, got &apos;&quot; + actual + &quot;&apos;&lt;br&gt;&quot;);
&gt; +}
&gt; +
&gt; +
&gt; +for (var i = 0; i &lt; nodes_exception.length; i++) {
&gt; +  var node = nodes_exception[i];
&gt; +  check(node, &apos;exception&apos;);
&gt; +}
&gt; +
&gt; +for (var i = 0; i &lt; nodes_no_constructor.length; i++) {
&gt; +  var node = nodes_no_constructor[i];
&gt; +  check(node, &apos;no constructor&apos;);
&gt; +}
&gt; +
&gt; +for (var i = 0; i &lt; nodes_constructor.length; i++) {
&gt; +  var node = nodes_constructor[i];
&gt; +  check(node, &apos;[object &apos; + node + &apos;]&apos;);
&gt; +}
In general, we like to keep all code in the WebKit style guidelines, even tests, which mean 4 space indentation.

r=me with those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99493</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-20 09:50:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Some of these should probably have constructors (of the non-constructible
&gt; variety), but I guess it is good to test our current behavior.

While it&apos;s good to have test results that reflect our current behavior, it&apos;s not necessary to have those results say &quot;test passed&quot;. Instead the current behavior can be defined as &quot;expected failure&quot;. That approach is worth considering in a test like this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99503</commentid>
    <comment_count>4</comment_count>
      <attachid>25317</attachid>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-20 10:44:57 -0800</bug_when>
    <thetext>Created attachment 25317
Patch addressing Sam&apos;s comments

(In reply to comment #2)

&gt; &gt; +// These nodes have a working constructor.
&gt; &gt; +var nodes_constructor = [
&gt; &gt; +  &apos;DOMParser&apos;,
&gt; &gt; +  &apos;XMLHttpRequest&apos;, &apos;XMLSerializer&apos;,
&gt; &gt; +  &apos;XPathEvaluator&apos;,
&gt; &gt; +  &apos;XSLTProcessor&apos;
&gt; &gt; +];
&gt; 
&gt; You are missing Audio, Option, Image, Worker, and MessageChannel here.
 
Audio, Option, and Image all have constructors, although with slightly nonstandard object names; Worker throws an exception; and MessageChannel has no constructor.  I&apos;ve added them to the appropriate lists.

&gt; &gt; +  &apos;UndetectableHTMLCollection&apos;,
&gt; I don&apos;t think this is a real class in WebCore.  We do have class called
&gt; HTMLAllCollection which is undetectable though.  Perhaps that is what you were
&gt; thinking of.

Looks like UndetectableHTMLCollection is a V8ism. It&apos;s not causing any problems to test it in JSC too, but if you object I&apos;ll take it out. (I wouldn&apos;t propose testing lots of V8isms in the layout tests, but as one of ~150 items in a list it seems both reasonable and harmless.)

HTMLAllCollection is in the nodes_no_constructor list.

&gt; Some of these should probably have constructors (of the non-constructible
&gt; variety), but I guess it is good to test our current behavior.

Let me know which nodes are in the wrong lists, and I&apos;ll gladly move them.

&gt; In general, we like to keep all code in the WebKit style guidelines, even
&gt; tests, which mean 4 space indentation.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99518</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-20 11:38:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Looks like UndetectableHTMLCollection is a V8ism. It&apos;s not causing any problems
&gt; to test it in JSC too, but if you object I&apos;ll take it out. (I wouldn&apos;t propose
&gt; testing lots of V8isms in the layout tests, but as one of ~150 items in a list
&gt; it seems both reasonable and harmless.)

It&apos;s a bug to have that constructor visible from JavaScript. It&apos;s fine for V8 to have a different way of handling this internally, but that implementation detail should be invisible to scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99527</commentid>
    <comment_count>6</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-20 12:34:08 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Looks like UndetectableHTMLCollection is a V8ism.
 
&gt; It&apos;s a bug to have that constructor visible from JavaScript. It&apos;s fine for V8
&gt; to have a different way of handling this internally, but that implementation
&gt; detail should be invisible to scripts.

Unless I&apos;m misunderstanding the test, it&apos;s verifying that the constructor is not visible. The &apos;no constructor&apos; result for UndetectableHTMLCollection is the same one given if you check a node named &apos;ThisDoesNotExist&apos;.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100066</commentid>
    <comment_count>7</comment_count>
      <attachid>25317</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-11-24 14:30:50 -0800</bug_when>
    <thetext>Comment on attachment 25317
Patch addressing Sam&apos;s comments

&gt; +
&gt; +// These nodes throw an exception.
&gt; +var nodes_exception = [

Many of the objects tested here are not Nodes, they are just objects exposed by the DOM. 

&gt; +    &apos;Attr&apos;, &apos;CharacterData&apos;, &apos;CDATASection&apos;, &apos;Comment&apos;, &apos;Document&apos;,
&gt; +    &apos;DocumentFragment&apos;, &apos;DocumentType&apos;, &apos;Element&apos;, &apos;Entity&apos;,
&gt; +    &apos;EntityReference&apos;, &apos;HTMLDocument&apos;, &apos;Node&apos;, &apos;Notation&apos;,
&gt; +    &apos;ProcessingInstruction&apos;, &apos;Text&apos;, &apos;HTMLAnchorElement&apos;,
&gt; +    &apos;HTMLAppletElement&apos;, &apos;HTMLAreaElement&apos;, &apos;HTMLBaseElement&apos;,
&gt; +    &apos;HTMLBaseFontElement&apos;, &apos;HTMLBlockquoteElement&apos;, &apos;HTMLBodyElement&apos;,
&gt; +    &apos;HTMLBRElement&apos;, &apos;HTMLButtonElement&apos;, &apos;HTMLCanvasElement&apos;,
&gt; +    &apos;HTMLDirectoryElement&apos;, &apos;HTMLDivElement&apos;, &apos;HTMLDListElement&apos;,
&gt; +    &apos;HTMLEmbedElement&apos;, &apos;HTMLFieldSetElement&apos;, &apos;HTMLFontElement&apos;,
&gt; +    &apos;HTMLFormElement&apos;, &apos;HTMLFrameElement&apos;, &apos;HTMLFrameSetElement&apos;,
&gt; +    &apos;HTMLHeadingElement&apos;, &apos;HTMLHeadElement&apos;, &apos;HTMLHRElement&apos;,
&gt; +    &apos;HTMLHtmlElement&apos;, &apos;HTMLIFrameElement&apos;, &apos;HTMLImageElement&apos;,
&gt; +    &apos;HTMLInputElement&apos;, &apos;HTMLIsIndexElement&apos;, &apos;HTMLLabelElement&apos;,
&gt; +    &apos;HTMLLegendElement&apos;, &apos;HTMLLIElement&apos;, &apos;HTMLLinkElement&apos;,
&gt; +    &apos;HTMLMapElement&apos;, &apos;HTMLMarqueeElement&apos;, &apos;HTMLMenuElement&apos;,
&gt; +    &apos;HTMLMetaElement&apos;, &apos;HTMLModElement&apos;, &apos;HTMLObjectElement&apos;,
&gt; +    &apos;HTMLOListElement&apos;, &apos;HTMLOptGroupElement&apos;, &apos;HTMLOptionElement&apos;,
&gt; +    &apos;HTMLParagraphElement&apos;, &apos;HTMLParamElement&apos;, &apos;HTMLPreElement&apos;,
&gt; +    &apos;HTMLQuoteElement&apos;, &apos;HTMLScriptElement&apos;, &apos;HTMLSelectElement&apos;,
&gt; +    &apos;HTMLStyleElement&apos;, &apos;HTMLTableCaptionElement&apos;,
&gt; +    &apos;HTMLTableColElement&apos;, &apos;HTMLTableElement&apos;,
&gt; +    &apos;HTMLTableSectionElement&apos;, &apos;HTMLTableCellElement&apos;,
&gt; +    &apos;HTMLTableRowElement&apos;, &apos;HTMLTextAreaElement&apos;, &apos;HTMLTitleElement&apos;,
&gt; +    &apos;HTMLUListElement&apos;, &apos;HTMLElement&apos;, &apos;CanvasRenderingContext2D&apos;,
&gt; +    &apos;Clipboard&apos;, &apos;Counter&apos;, &apos;CSSCharsetRule&apos;, &apos;CSSFontFaceRule&apos;,
&gt; +    &apos;CSSImportRule&apos;, &apos;CSSMediaRule&apos;, &apos;CSSPageRule&apos;,
&gt; +    &apos;CSSPrimitiveValue&apos;, &apos;CSSRule&apos;, &apos;CSSRuleList&apos;,
&gt; +    &apos;CSSStyleDeclaration&apos;, &apos;CSSStyleRule&apos;, &apos;CSSStyleSheet&apos;,
&gt; +    &apos;CSSValue&apos;, &apos;CSSValueList&apos;, &apos;DOMImplementation&apos;, &apos;Event&apos;,
&gt; +    &apos;HTMLCollection&apos;, &apos;KeyboardEvent&apos;, &apos;MediaList&apos;, &apos;MimeType&apos;,
&gt; +    &apos;MimeTypeArray&apos;, &apos;MouseEvent&apos;, &apos;MutationEvent&apos;, &apos;NamedNodeMap&apos;,
&gt; +    &apos;NodeFilter&apos;, &apos;NodeList&apos;, &apos;OverflowEvent&apos;, &apos;Plugin&apos;,
&gt; +    &apos;PluginArray&apos;, &apos;Range&apos;, &apos;Rect&apos;, &apos;StyleSheet&apos;, &apos;StyleSheetList&apos;,
&gt; +    &apos;TextEvent&apos;, &apos;UIEvent&apos;, &apos;WheelEvent&apos;, &apos;XPathResult&apos;, &apos;Worker&apos;

Worker should not throw an exception, it should be in the list of types with working constructors, even if it is not currently.  How did you make this list?  Is it derived from the list in DOMWindow.idl?

&gt; +];
&gt; +
&gt; +// These nodes have a working constructor.
&gt; +var nodes_constructor = [
&gt; +    &apos;DOMParser&apos;, &apos;XMLHttpRequest&apos;, &apos;XMLSerializer&apos;, &apos;XPathEvaluator&apos;,
&gt; +    &apos;XSLTProcessor&apos;
&gt; +];
&gt; +
&gt; +// These nodes have no constructor.
&gt; +var nodes_no_constructor = [
&gt; +    &apos;EventTargetNode&apos;, &apos;BarInfo&apos;, &apos;CanvasGradient&apos;, &apos;CanvasPattern&apos;,
&gt; +    &apos;Console&apos;, &apos;DOMSelection&apos;, &apos;DOMWindow&apos;, &apos;History&apos;,
&gt; +    &apos;UndetectableHTMLCollection&apos;, &apos;HTMLOptionsCollection&apos;,
&gt; +    &apos;InspectorController&apos;, &apos;Location&apos;, &apos;Navigator&apos;, &apos;NodeIterator&apos;,
&gt; +    &apos;RGBColor&apos;, &apos;Screen&apos;, &apos;TreeWalker&apos;, &apos;XPathExpression&apos;,
&gt; +    &apos;XPathNSResolver&apos;, &apos;EventTarget&apos;, &apos;EventListener&apos;, &apos;NPObject&apos;,
&gt; +    &apos;HTMLAllCollection&apos;, &apos;MessageChannel&apos;
&gt; +];

BarInfo, CanvasGradient, CanvasPattern, Console, DOMSelection, DOMWindowm, History, HTMLOptionsCollection, Location, Navigator, NodeIterator, RGBColor, Screen, TreeWalker and XPathExpression should all have non-constructible constructors, and therefore should go in the first list.

MessageChannel should have a working constructor, so should go in the second list.

&gt; +
&gt; +// These nodes have a working constructor, but their object names differ.
&gt; +// This is therefore a map from node to constructor.
&gt; +var nodes_different_constructor = {
&gt; +    &apos;Audio&apos;: &apos;HTMLAudioElement&apos;,
&gt; +    &apos;Option&apos;: &apos;HTMLOptionElement&apos;,
&gt; +    &apos;Image&apos;: &apos;HTMLImageElement&apos;
&gt; +}
&gt; +
&gt; +function TryAllocate(node) {
&gt; +    var Cons = this[node];
&gt; +    if (!Cons) return &apos;no constructor&apos;;
&gt; +    try { return new Cons(); }
&gt; +    catch (e) { return &apos;exception&apos;; }
&gt; +}
&gt; +
&gt; +function check(name, expected) {
&gt; +    actual = TryAllocate(node);
&gt; +    if (actual == expected) {
&gt; +      document.write(&quot;PASS: &quot; + name + &quot; &apos;&quot; + expected + &quot;&apos;&lt;br&gt;&quot;);
&gt; +    } else {
&gt; +      document.write(&quot;FAIL: &quot; + name + &quot; wanted &apos;&quot; + expected + &quot;&apos;, got &apos;&quot; +
&gt; +          actual + &quot;&apos;&lt;br&gt;&quot;);
&gt; +    }
&gt; +}
&gt; +
&gt; +
&gt; +for (var i = 0; i &lt; nodes_exception.length; i++) {
&gt; +    var node = nodes_exception[i];
&gt; +    check(node, &apos;exception&apos;);
&gt; +}
&gt; +
&gt; +for (var i = 0; i &lt; nodes_no_constructor.length; i++) {
&gt; +    var node = nodes_no_constructor[i];
&gt; +    check(node, &apos;no constructor&apos;);
&gt; +}
&gt; +
&gt; +for (var i = 0; i &lt; nodes_constructor.length; i++) {
&gt; +    var node = nodes_constructor[i];
&gt; +    check(node, &apos;[object &apos; + node + &apos;]&apos;);
&gt; +}
&gt; +
&gt; +for (var node in nodes_different_constructor) {
&gt; +    check(node, &apos;[object &apos; + nodes_different_constructor[node] + &apos;]&apos;);
&gt; +}

It would be nice if this test used the shouldBe() style tests. 

r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100092</commentid>
    <comment_count>8</comment_count>
      <attachid>25457</attachid>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-24 15:58:01 -0800</bug_when>
    <thetext>Created attachment 25457
Shuffled objects and switched to standard JS wrapper

(In reply to comment #7)

&gt; Many of the objects tested here are not Nodes, they are just objects exposed by
&gt; the DOM. 

Renamed the variables for clarity.

Shuffled objects as indicated.

&gt; It would be nice if this test used the shouldBe() style tests.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100211</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-25 06:57:00 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Worker should not throw an exception, it should be in the list of types with
&gt; working constructors, even if it is not currently. 

This is not true - the Worker constructor requires an URL argument.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100865</commentid>
    <comment_count>10</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-12-01 13:03:43 -0800</bug_when>
    <thetext>Moved &apos;Worker&apos; into the exceptions section, expanded the comment there to explain that some of the objects may have otherwise working constructors that aren&apos;t valid without arguments, updated results, and landed as r38865.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25288</attachid>
            <date>2008-11-19 14:52:15 -0800</date>
            <delta_ts>2008-11-20 10:45:16 -0800</delta_ts>
            <desc>New test + result</desc>
            <filename>33265a.txt</filename>
            <type>text/plain</type>
            <size>9849</size>
            <attacher name="Pam Greene (IRC:pamg)">pam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4NjA1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTEt
MTkgIFBhbWVsYSBHcmVlbmUgIDxwYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM2NQorICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSBiZWhhdmlv
ciBvZiBET00gbm9kZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9kb20tY29u
c3RydWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZG9tLWNv
bnN0cnVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAwOC0xMS0xOSAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBm
YXN0L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNDEgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhbGwgYnV0IGEgaGFuZGZ1bCBvZiBk
b20gY29uc3RydWN0b3JzIHRocm93IGV4Y2VwdGlvbnMsIGFuZCB0aGUgcmVzdCByZXR1cm4gcmVh
c29uYWJsZSBvYmplY3RzCisKK1BBU1M6IEF0dHIgJ2V4Y2VwdGlvbicKK1BBU1M6IENoYXJhY3Rl
ckRhdGEgJ2V4Y2VwdGlvbicKK1BBU1M6IENEQVRBU2VjdGlvbiAnZXhjZXB0aW9uJworUEFTUzog
Q29tbWVudCAnZXhjZXB0aW9uJworUEFTUzogRG9jdW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IERv
Y3VtZW50RnJhZ21lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IERvY3VtZW50VHlwZSAnZXhjZXB0aW9u
JworUEFTUzogRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogRW50aXR5ICdleGNlcHRpb24nCitQ
QVNTOiBFbnRpdHlSZWZlcmVuY2UgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxEb2N1bWVudCAnZXhj
ZXB0aW9uJworUEFTUzogTm9kZSAnZXhjZXB0aW9uJworUEFTUzogTm90YXRpb24gJ2V4Y2VwdGlv
bicKK1BBU1M6IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAnZXhjZXB0aW9uJworUEFTUzogVGV4dCAn
ZXhjZXB0aW9uJworUEFTUzogSFRNTEFuY2hvckVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhU
TUxBcHBsZXRFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MQXJlYUVsZW1lbnQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IEhUTUxCYXNlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEJhc2VG
b250RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEJsb2NrcXVvdGVFbGVtZW50ICdleGNl
cHRpb24nCitQQVNTOiBIVE1MQm9keUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxCUkVs
ZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxCdXR0b25FbGVtZW50ICdleGNlcHRpb24nCitQ
QVNTOiBIVE1MQ2FudmFzRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTERpcmVjdG9yeUVs
ZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxEaXZFbGVtZW50ICdleGNlcHRpb24nCitQQVNT
OiBIVE1MRExpc3RFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MRW1iZWRFbGVtZW50ICdl
eGNlcHRpb24nCitQQVNTOiBIVE1MRmllbGRTZXRFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBI
VE1MRm9udEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxGb3JtRWxlbWVudCAnZXhjZXB0
aW9uJworUEFTUzogSFRNTEZyYW1lRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEZyYW1l
U2V0RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEhlYWRpbmdFbGVtZW50ICdleGNlcHRp
b24nCitQQVNTOiBIVE1MSGVhZEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxIUkVsZW1l
bnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxIdG1sRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzog
SFRNTElGcmFtZUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxJbWFnZUVsZW1lbnQgJ2V4
Y2VwdGlvbicKK1BBU1M6IEhUTUxJbnB1dEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxJ
c0luZGV4RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTExhYmVsRWxlbWVudCAnZXhjZXB0
aW9uJworUEFTUzogSFRNTExlZ2VuZEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxMSUVs
ZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxMaW5rRWxlbWVudCAnZXhjZXB0aW9uJworUEFT
UzogSFRNTE1hcEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxNYXJxdWVlRWxlbWVudCAn
ZXhjZXB0aW9uJworUEFTUzogSFRNTE1lbnVFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1M
TWV0YUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxNb2RFbGVtZW50ICdleGNlcHRpb24n
CitQQVNTOiBIVE1MT2JqZWN0RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTE9MaXN0RWxl
bWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTE9wdEdyb3VwRWxlbWVudCAnZXhjZXB0aW9uJwor
UEFTUzogSFRNTE9wdGlvbkVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxQYXJhZ3JhcGhF
bGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MUGFyYW1FbGVtZW50ICdleGNlcHRpb24nCitQ
QVNTOiBIVE1MUHJlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTFF1b3RlRWxlbWVudCAn
ZXhjZXB0aW9uJworUEFTUzogSFRNTFNjcmlwdEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhU
TUxTZWxlY3RFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MU3R5bGVFbGVtZW50ICdleGNl
cHRpb24nCitQQVNTOiBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzog
SFRNTFRhYmxlQ29sRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTFRhYmxlRWxlbWVudCAn
ZXhjZXB0aW9uJworUEFTUzogSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BB
U1M6IEhUTUxUYWJsZUNlbGxFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVGFibGVSb3dF
bGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVGV4dEFyZWFFbGVtZW50ICdleGNlcHRpb24n
CitQQVNTOiBIVE1MVGl0bGVFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVUxpc3RFbGVt
ZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEICdleGNlcHRpb24nCitQQVNTOiBDbGlwYm9hcmQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IENvdW50ZXIgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU0NoYXJzZXRSdWxlICdl
eGNlcHRpb24nCitQQVNTOiBDU1NGb250RmFjZVJ1bGUgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU0lt
cG9ydFJ1bGUgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU01lZGlhUnVsZSAnZXhjZXB0aW9uJworUEFT
UzogQ1NTUGFnZVJ1bGUgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU1ByaW1pdGl2ZVZhbHVlICdleGNl
cHRpb24nCitQQVNTOiBDU1NSdWxlICdleGNlcHRpb24nCitQQVNTOiBDU1NSdWxlTGlzdCAnZXhj
ZXB0aW9uJworUEFTUzogQ1NTU3R5bGVEZWNsYXJhdGlvbiAnZXhjZXB0aW9uJworUEFTUzogQ1NT
U3R5bGVSdWxlICdleGNlcHRpb24nCitQQVNTOiBDU1NTdHlsZVNoZWV0ICdleGNlcHRpb24nCitQ
QVNTOiBDU1NWYWx1ZSAnZXhjZXB0aW9uJworUEFTUzogQ1NTVmFsdWVMaXN0ICdleGNlcHRpb24n
CitQQVNTOiBET01JbXBsZW1lbnRhdGlvbiAnZXhjZXB0aW9uJworUEFTUzogRXZlbnQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IEhUTUxDb2xsZWN0aW9uICdleGNlcHRpb24nCitQQVNTOiBLZXlib2FyZEV2
ZW50ICdleGNlcHRpb24nCitQQVNTOiBNZWRpYUxpc3QgJ2V4Y2VwdGlvbicKK1BBU1M6IE1pbWVU
eXBlICdleGNlcHRpb24nCitQQVNTOiBNaW1lVHlwZUFycmF5ICdleGNlcHRpb24nCitQQVNTOiBN
b3VzZUV2ZW50ICdleGNlcHRpb24nCitQQVNTOiBNdXRhdGlvbkV2ZW50ICdleGNlcHRpb24nCitQ
QVNTOiBOYW1lZE5vZGVNYXAgJ2V4Y2VwdGlvbicKK1BBU1M6IE5vZGVGaWx0ZXIgJ2V4Y2VwdGlv
bicKK1BBU1M6IE5vZGVMaXN0ICdleGNlcHRpb24nCitQQVNTOiBPdmVyZmxvd0V2ZW50ICdleGNl
cHRpb24nCitQQVNTOiBQbHVnaW4gJ2V4Y2VwdGlvbicKK1BBU1M6IFBsdWdpbkFycmF5ICdleGNl
cHRpb24nCitQQVNTOiBSYW5nZSAnZXhjZXB0aW9uJworUEFTUzogUmVjdCAnZXhjZXB0aW9uJwor
UEFTUzogU3R5bGVTaGVldCAnZXhjZXB0aW9uJworUEFTUzogU3R5bGVTaGVldExpc3QgJ2V4Y2Vw
dGlvbicKK1BBU1M6IFRleHRFdmVudCAnZXhjZXB0aW9uJworUEFTUzogVUlFdmVudCAnZXhjZXB0
aW9uJworUEFTUzogV2hlZWxFdmVudCAnZXhjZXB0aW9uJworUEFTUzogWFBhdGhSZXN1bHQgJ2V4
Y2VwdGlvbicKK1BBU1M6IEV2ZW50VGFyZ2V0Tm9kZSAnbm8gY29uc3RydWN0b3InCitQQVNTOiBC
YXJJbmZvICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IENhbnZhc0dyYWRpZW50ICdubyBjb25zdHJ1
Y3RvcicKK1BBU1M6IENhbnZhc1BhdHRlcm4gJ25vIGNvbnN0cnVjdG9yJworUEFTUzogQ29uc29s
ZSAnbm8gY29uc3RydWN0b3InCitQQVNTOiBET01TZWxlY3Rpb24gJ25vIGNvbnN0cnVjdG9yJwor
UEFTUzogRE9NV2luZG93ICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IEhpc3RvcnkgJ25vIGNvbnN0
cnVjdG9yJworUEFTUzogVW5kZXRlY3RhYmxlSFRNTENvbGxlY3Rpb24gJ25vIGNvbnN0cnVjdG9y
JworUEFTUzogSFRNTE9wdGlvbnNDb2xsZWN0aW9uICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IElu
c3BlY3RvckNvbnRyb2xsZXIgJ25vIGNvbnN0cnVjdG9yJworUEFTUzogTG9jYXRpb24gJ25vIGNv
bnN0cnVjdG9yJworUEFTUzogTmF2aWdhdG9yICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IE5vZGVJ
dGVyYXRvciAnbm8gY29uc3RydWN0b3InCitQQVNTOiBSR0JDb2xvciAnbm8gY29uc3RydWN0b3In
CitQQVNTOiBTY3JlZW4gJ25vIGNvbnN0cnVjdG9yJworUEFTUzogVHJlZVdhbGtlciAnbm8gY29u
c3RydWN0b3InCitQQVNTOiBYUGF0aEV4cHJlc3Npb24gJ25vIGNvbnN0cnVjdG9yJworUEFTUzog
WFBhdGhOU1Jlc29sdmVyICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IEV2ZW50VGFyZ2V0ICdubyBj
b25zdHJ1Y3RvcicKK1BBU1M6IEV2ZW50TGlzdGVuZXIgJ25vIGNvbnN0cnVjdG9yJworUEFTUzog
TlBPYmplY3QgJ25vIGNvbnN0cnVjdG9yJworUEFTUzogRE9NUGFyc2VyICdbb2JqZWN0IERPTVBh
cnNlcl0nCitQQVNTOiBYTUxIdHRwUmVxdWVzdCAnW29iamVjdCBYTUxIdHRwUmVxdWVzdF0nCitQ
QVNTOiBYTUxTZXJpYWxpemVyICdbb2JqZWN0IFhNTFNlcmlhbGl6ZXJdJworUEFTUzogWFBhdGhF
dmFsdWF0b3IgJ1tvYmplY3QgWFBhdGhFdmFsdWF0b3JdJworUEFTUzogWFNMVFByb2Nlc3NvciAn
W29iamVjdCBYU0xUUHJvY2Vzc29yXScKKwpJbmRleDogZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9y
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMuaHRtbAkocmV2
aXNpb24gMCkKKysrIGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTIgQEAKKzxodG1sPgorICA8aGVhZD48L2hlYWQ+CisgIDxib2R5PgorCis8
cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgYWxsIGJ1dCBhIGhhbmRmdWwgb2YgZG9tIGNvbnN0cnVj
dG9ycyB0aHJvdworZXhjZXB0aW9ucywgYW5kIHRoZSByZXN0IHJldHVybiByZWFzb25hYmxlIG9i
amVjdHM8L3A+CisKKyAgPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworLy8gVGhlc2Ugbm9kZXMgdGhy
b3cgYW4gZXhjZXB0aW9uLgordmFyIG5vZGVzX2V4Y2VwdGlvbiA9IFsKKyAgJ0F0dHInLCAnQ2hh
cmFjdGVyRGF0YScsICdDREFUQVNlY3Rpb24nLCAnQ29tbWVudCcsICdEb2N1bWVudCcsCisgICdE
b2N1bWVudEZyYWdtZW50JywgJ0RvY3VtZW50VHlwZScsICdFbGVtZW50JywgJ0VudGl0eScsCisg
ICdFbnRpdHlSZWZlcmVuY2UnLCAnSFRNTERvY3VtZW50JywgJ05vZGUnLAorICAnTm90YXRpb24n
LCAnUHJvY2Vzc2luZ0luc3RydWN0aW9uJywgJ1RleHQnLCAnSFRNTEFuY2hvckVsZW1lbnQnLAor
ICAnSFRNTEFwcGxldEVsZW1lbnQnLCAnSFRNTEFyZWFFbGVtZW50JywgJ0hUTUxCYXNlRWxlbWVu
dCcsCisgICdIVE1MQmFzZUZvbnRFbGVtZW50JywgJ0hUTUxCbG9ja3F1b3RlRWxlbWVudCcsICdI
VE1MQm9keUVsZW1lbnQnLAorICAnSFRNTEJSRWxlbWVudCcsICdIVE1MQnV0dG9uRWxlbWVudCcs
ICdIVE1MQ2FudmFzRWxlbWVudCcsCisgICdIVE1MRGlyZWN0b3J5RWxlbWVudCcsICdIVE1MRGl2
RWxlbWVudCcsICdIVE1MRExpc3RFbGVtZW50JywKKyAgJ0hUTUxFbWJlZEVsZW1lbnQnLCAnSFRN
TEZpZWxkU2V0RWxlbWVudCcsICdIVE1MRm9udEVsZW1lbnQnLAorICAnSFRNTEZvcm1FbGVtZW50
JywgJ0hUTUxGcmFtZUVsZW1lbnQnLCAnSFRNTEZyYW1lU2V0RWxlbWVudCcsCisgICdIVE1MSGVh
ZGluZ0VsZW1lbnQnLCAnSFRNTEhlYWRFbGVtZW50JywgJ0hUTUxIUkVsZW1lbnQnLAorICAnSFRN
TEh0bWxFbGVtZW50JywgJ0hUTUxJRnJhbWVFbGVtZW50JywgJ0hUTUxJbWFnZUVsZW1lbnQnLAor
ICAnSFRNTElucHV0RWxlbWVudCcsICdIVE1MSXNJbmRleEVsZW1lbnQnLCAnSFRNTExhYmVsRWxl
bWVudCcsCisgICdIVE1MTGVnZW5kRWxlbWVudCcsICdIVE1MTElFbGVtZW50JywgJ0hUTUxMaW5r
RWxlbWVudCcsCisgICdIVE1MTWFwRWxlbWVudCcsICdIVE1MTWFycXVlZUVsZW1lbnQnLCAnSFRN
TE1lbnVFbGVtZW50JywKKyAgJ0hUTUxNZXRhRWxlbWVudCcsICdIVE1MTW9kRWxlbWVudCcsICdI
VE1MT2JqZWN0RWxlbWVudCcsCisgICdIVE1MT0xpc3RFbGVtZW50JywgJ0hUTUxPcHRHcm91cEVs
ZW1lbnQnLCAnSFRNTE9wdGlvbkVsZW1lbnQnLAorICAnSFRNTFBhcmFncmFwaEVsZW1lbnQnLCAn
SFRNTFBhcmFtRWxlbWVudCcsICdIVE1MUHJlRWxlbWVudCcsCisgICdIVE1MUXVvdGVFbGVtZW50
JywgJ0hUTUxTY3JpcHRFbGVtZW50JywgJ0hUTUxTZWxlY3RFbGVtZW50JywKKyAgJ0hUTUxTdHls
ZUVsZW1lbnQnLCAnSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQnLAorICAnSFRNTFRhYmxlQ29sRWxl
bWVudCcsICdIVE1MVGFibGVFbGVtZW50JywKKyAgJ0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Jywg
J0hUTUxUYWJsZUNlbGxFbGVtZW50JywKKyAgJ0hUTUxUYWJsZVJvd0VsZW1lbnQnLCAnSFRNTFRl
eHRBcmVhRWxlbWVudCcsICdIVE1MVGl0bGVFbGVtZW50JywKKyAgJ0hUTUxVTGlzdEVsZW1lbnQn
LCAnSFRNTEVsZW1lbnQnLCAnQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJywKKyAgJ0NsaXBib2Fy
ZCcsCisgICdDb3VudGVyJywgJ0NTU0NoYXJzZXRSdWxlJywgJ0NTU0ZvbnRGYWNlUnVsZScsICdD
U1NJbXBvcnRSdWxlJywKKyAgJ0NTU01lZGlhUnVsZScsICdDU1NQYWdlUnVsZScsICdDU1NQcmlt
aXRpdmVWYWx1ZScsICdDU1NSdWxlJywKKyAgJ0NTU1J1bGVMaXN0JywgJ0NTU1N0eWxlRGVjbGFy
YXRpb24nLCAnQ1NTU3R5bGVSdWxlJywKKyAgJ0NTU1N0eWxlU2hlZXQnLCAnQ1NTVmFsdWUnLCAn
Q1NTVmFsdWVMaXN0JywgJ0RPTUltcGxlbWVudGF0aW9uJywKKyAgJ0V2ZW50JywgJ0hUTUxDb2xs
ZWN0aW9uJywgJ0tleWJvYXJkRXZlbnQnLAorICAnTWVkaWFMaXN0JywgJ01pbWVUeXBlJywgJ01p
bWVUeXBlQXJyYXknLCAnTW91c2VFdmVudCcsCisgICdNdXRhdGlvbkV2ZW50JywgJ05hbWVkTm9k
ZU1hcCcsICdOb2RlRmlsdGVyJywKKyAgJ05vZGVMaXN0JywgJ092ZXJmbG93RXZlbnQnLCAnUGx1
Z2luJywgJ1BsdWdpbkFycmF5JywKKyAgJ1JhbmdlJywgJ1JlY3QnLCAnU3R5bGVTaGVldCcsCisg
ICdTdHlsZVNoZWV0TGlzdCcsICdUZXh0RXZlbnQnLCAnVUlFdmVudCcsCisgICdXaGVlbEV2ZW50
JywKKyAgJ1hQYXRoUmVzdWx0JworXTsKKworLy8gVGhlc2Ugbm9kZXMgaGF2ZSBhIHdvcmtpbmcg
Y29uc3RydWN0b3IuCit2YXIgbm9kZXNfY29uc3RydWN0b3IgPSBbCisgICdET01QYXJzZXInLAor
ICAnWE1MSHR0cFJlcXVlc3QnLCAnWE1MU2VyaWFsaXplcicsCisgICdYUGF0aEV2YWx1YXRvcics
CisgICdYU0xUUHJvY2Vzc29yJworXTsKKworLy8gVGhlc2Ugbm9kZXMgaGF2ZSBubyBjb25zdHJ1
Y3Rvci4KK3ZhciBub2Rlc19ub19jb25zdHJ1Y3RvciA9IFsKKyAgJ0V2ZW50VGFyZ2V0Tm9kZScs
CisgICdCYXJJbmZvJywgJ0NhbnZhc0dyYWRpZW50JywKKyAgJ0NhbnZhc1BhdHRlcm4nLCAnQ29u
c29sZScsCisgICdET01TZWxlY3Rpb24nLCAnRE9NV2luZG93JywgJ0hpc3RvcnknLAorICAnVW5k
ZXRlY3RhYmxlSFRNTENvbGxlY3Rpb24nLAorICAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uJywgJ0lu
c3BlY3RvckNvbnRyb2xsZXInLAorICAnTG9jYXRpb24nLAorICAnTmF2aWdhdG9yJywKKyAgJ05v
ZGVJdGVyYXRvcicsCisgICdSR0JDb2xvcicsICdTY3JlZW4nLAorICAnVHJlZVdhbGtlcicsCisg
ICdYUGF0aEV4cHJlc3Npb24nLCAnWFBhdGhOU1Jlc29sdmVyJywKKyAgJ0V2ZW50VGFyZ2V0Jywg
J0V2ZW50TGlzdGVuZXInLAorICAnTlBPYmplY3QnCitdOworCitmdW5jdGlvbiBUcnlBbGxvY2F0
ZShub2RlKSB7CisgIHZhciBDb25zID0gdGhpc1tub2RlXTsKKyAgaWYgKCFDb25zKSByZXR1cm4g
J25vIGNvbnN0cnVjdG9yJzsKKyAgdHJ5IHsgcmV0dXJuIG5ldyBDb25zKCk7IH0KKyAgY2F0Y2gg
KGUpIHsgcmV0dXJuICdleGNlcHRpb24nOyB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrKG5hbWUsIGV4
cGVjdGVkKSB7CisgIGFjdHVhbCA9IFRyeUFsbG9jYXRlKG5vZGUpOworICBpZiAoYWN0dWFsID09
IGV4cGVjdGVkKQorICAgIGRvY3VtZW50LndyaXRlKCJQQVNTOiAiICsgbmFtZSArICIgJyIgKyBl
eHBlY3RlZCArICInPGJyPiIpOworICBlbHNlCisgICAgZG9jdW1lbnQud3JpdGUoIkZBSUw6ICIg
KyBuYW1lICsgIiB3YW50ZWQgJyIgKyBleHBlY3RlZCArICInLCBnb3QgJyIgKyBhY3R1YWwgKyAi
Jzxicj4iKTsKK30KKworCitmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzX2V4Y2VwdGlvbi5sZW5n
dGg7IGkrKykgeworICB2YXIgbm9kZSA9IG5vZGVzX2V4Y2VwdGlvbltpXTsKKyAgY2hlY2sobm9k
ZSwgJ2V4Y2VwdGlvbicpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzX25vX2NvbnN0
cnVjdG9yLmxlbmd0aDsgaSsrKSB7CisgIHZhciBub2RlID0gbm9kZXNfbm9fY29uc3RydWN0b3Jb
aV07CisgIGNoZWNrKG5vZGUsICdubyBjb25zdHJ1Y3RvcicpOworfQorCitmb3IgKHZhciBpID0g
MDsgaSA8IG5vZGVzX2NvbnN0cnVjdG9yLmxlbmd0aDsgaSsrKSB7CisgIHZhciBub2RlID0gbm9k
ZXNfY29uc3RydWN0b3JbaV07CisgIGNoZWNrKG5vZGUsICdbb2JqZWN0ICcgKyBub2RlICsgJ10n
KTsKK30KKworCisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25317</attachid>
            <date>2008-11-20 10:44:57 -0800</date>
            <delta_ts>2008-11-24 15:58:01 -0800</delta_ts>
            <desc>Patch addressing Sam&apos;s comments</desc>
            <filename>22365b.txt</filename>
            <type>text/plain</type>
            <size>10647</size>
            <attacher name="Pam Greene (IRC:pamg)">pam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4NjIz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTEt
MjAgIFBhbWVsYSBHcmVlbmUgIDxwYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzY1CisgICAgICAgIEFkZCBhIHRlc3QgdG8gdmVyaWZ5
IGJlaGF2aW9yIG9mIERPTSBub2RlIGNvbnN0cnVjdG9ycy4KKworICAgICAgICAqIGZhc3QvZG9t
L2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9kb20tY29uc3RydWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDA4LTExLTE5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxl
IFBldGVyc29uLgpJbmRleDogZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBmYXN0L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNDcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhbGwgYnV0
IGEgaGFuZGZ1bCBvZiBkb20gY29uc3RydWN0b3JzIHRocm93IGV4Y2VwdGlvbnMsIGFuZCB0aGUg
cmVzdCByZXR1cm4gcmVhc29uYWJsZSBvYmplY3RzCisKK1BBU1M6IEF0dHIgJ2V4Y2VwdGlvbicK
K1BBU1M6IENoYXJhY3RlckRhdGEgJ2V4Y2VwdGlvbicKK1BBU1M6IENEQVRBU2VjdGlvbiAnZXhj
ZXB0aW9uJworUEFTUzogQ29tbWVudCAnZXhjZXB0aW9uJworUEFTUzogRG9jdW1lbnQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IERvY3VtZW50RnJhZ21lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IERvY3VtZW50
VHlwZSAnZXhjZXB0aW9uJworUEFTUzogRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogRW50aXR5
ICdleGNlcHRpb24nCitQQVNTOiBFbnRpdHlSZWZlcmVuY2UgJ2V4Y2VwdGlvbicKK1BBU1M6IEhU
TUxEb2N1bWVudCAnZXhjZXB0aW9uJworUEFTUzogTm9kZSAnZXhjZXB0aW9uJworUEFTUzogTm90
YXRpb24gJ2V4Y2VwdGlvbicKK1BBU1M6IFByb2Nlc3NpbmdJbnN0cnVjdGlvbiAnZXhjZXB0aW9u
JworUEFTUzogVGV4dCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEFuY2hvckVsZW1lbnQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IEhUTUxBcHBsZXRFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MQXJl
YUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxCYXNlRWxlbWVudCAnZXhjZXB0aW9uJwor
UEFTUzogSFRNTEJhc2VGb250RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEJsb2NrcXVv
dGVFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MQm9keUVsZW1lbnQgJ2V4Y2VwdGlvbicK
K1BBU1M6IEhUTUxCUkVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxCdXR0b25FbGVtZW50
ICdleGNlcHRpb24nCitQQVNTOiBIVE1MQ2FudmFzRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzog
SFRNTERpcmVjdG9yeUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxEaXZFbGVtZW50ICdl
eGNlcHRpb24nCitQQVNTOiBIVE1MRExpc3RFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1M
RW1iZWRFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MRmllbGRTZXRFbGVtZW50ICdleGNl
cHRpb24nCitQQVNTOiBIVE1MRm9udEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxGb3Jt
RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEZyYW1lRWxlbWVudCAnZXhjZXB0aW9uJwor
UEFTUzogSFRNTEZyYW1lU2V0RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTEhlYWRpbmdF
bGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MSGVhZEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BB
U1M6IEhUTUxIUkVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxIdG1sRWxlbWVudCAnZXhj
ZXB0aW9uJworUEFTUzogSFRNTElGcmFtZUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxJ
bWFnZUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxJbnB1dEVsZW1lbnQgJ2V4Y2VwdGlv
bicKK1BBU1M6IEhUTUxJc0luZGV4RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTExhYmVs
RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTExlZ2VuZEVsZW1lbnQgJ2V4Y2VwdGlvbicK
K1BBU1M6IEhUTUxMSUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxMaW5rRWxlbWVudCAn
ZXhjZXB0aW9uJworUEFTUzogSFRNTE1hcEVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxN
YXJxdWVlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTE1lbnVFbGVtZW50ICdleGNlcHRp
b24nCitQQVNTOiBIVE1MTWV0YUVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxNb2RFbGVt
ZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MT2JqZWN0RWxlbWVudCAnZXhjZXB0aW9uJworUEFT
UzogSFRNTE9MaXN0RWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTE9wdEdyb3VwRWxlbWVu
dCAnZXhjZXB0aW9uJworUEFTUzogSFRNTE9wdGlvbkVsZW1lbnQgJ2V4Y2VwdGlvbicKK1BBU1M6
IEhUTUxQYXJhZ3JhcGhFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MUGFyYW1FbGVtZW50
ICdleGNlcHRpb24nCitQQVNTOiBIVE1MUHJlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRN
TFF1b3RlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTFNjcmlwdEVsZW1lbnQgJ2V4Y2Vw
dGlvbicKK1BBU1M6IEhUTUxTZWxlY3RFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MU3R5
bGVFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCAnZXhj
ZXB0aW9uJworUEFTUzogSFRNTFRhYmxlQ29sRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRN
TFRhYmxlRWxlbWVudCAnZXhjZXB0aW9uJworUEFTUzogSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQg
J2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxUYWJsZUNlbGxFbGVtZW50ICdleGNlcHRpb24nCitQQVNT
OiBIVE1MVGFibGVSb3dFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVGV4dEFyZWFFbGVt
ZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MVGl0bGVFbGVtZW50ICdleGNlcHRpb24nCitQQVNT
OiBIVE1MVUxpc3RFbGVtZW50ICdleGNlcHRpb24nCitQQVNTOiBIVE1MRWxlbWVudCAnZXhjZXB0
aW9uJworUEFTUzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEICdleGNlcHRpb24nCitQQVNTOiBD
bGlwYm9hcmQgJ2V4Y2VwdGlvbicKK1BBU1M6IENvdW50ZXIgJ2V4Y2VwdGlvbicKK1BBU1M6IENT
U0NoYXJzZXRSdWxlICdleGNlcHRpb24nCitQQVNTOiBDU1NGb250RmFjZVJ1bGUgJ2V4Y2VwdGlv
bicKK1BBU1M6IENTU0ltcG9ydFJ1bGUgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU01lZGlhUnVsZSAn
ZXhjZXB0aW9uJworUEFTUzogQ1NTUGFnZVJ1bGUgJ2V4Y2VwdGlvbicKK1BBU1M6IENTU1ByaW1p
dGl2ZVZhbHVlICdleGNlcHRpb24nCitQQVNTOiBDU1NSdWxlICdleGNlcHRpb24nCitQQVNTOiBD
U1NSdWxlTGlzdCAnZXhjZXB0aW9uJworUEFTUzogQ1NTU3R5bGVEZWNsYXJhdGlvbiAnZXhjZXB0
aW9uJworUEFTUzogQ1NTU3R5bGVSdWxlICdleGNlcHRpb24nCitQQVNTOiBDU1NTdHlsZVNoZWV0
ICdleGNlcHRpb24nCitQQVNTOiBDU1NWYWx1ZSAnZXhjZXB0aW9uJworUEFTUzogQ1NTVmFsdWVM
aXN0ICdleGNlcHRpb24nCitQQVNTOiBET01JbXBsZW1lbnRhdGlvbiAnZXhjZXB0aW9uJworUEFT
UzogRXZlbnQgJ2V4Y2VwdGlvbicKK1BBU1M6IEhUTUxDb2xsZWN0aW9uICdleGNlcHRpb24nCitQ
QVNTOiBLZXlib2FyZEV2ZW50ICdleGNlcHRpb24nCitQQVNTOiBNZWRpYUxpc3QgJ2V4Y2VwdGlv
bicKK1BBU1M6IE1pbWVUeXBlICdleGNlcHRpb24nCitQQVNTOiBNaW1lVHlwZUFycmF5ICdleGNl
cHRpb24nCitQQVNTOiBNb3VzZUV2ZW50ICdleGNlcHRpb24nCitQQVNTOiBNdXRhdGlvbkV2ZW50
ICdleGNlcHRpb24nCitQQVNTOiBOYW1lZE5vZGVNYXAgJ2V4Y2VwdGlvbicKK1BBU1M6IE5vZGVG
aWx0ZXIgJ2V4Y2VwdGlvbicKK1BBU1M6IE5vZGVMaXN0ICdleGNlcHRpb24nCitQQVNTOiBPdmVy
Zmxvd0V2ZW50ICdleGNlcHRpb24nCitQQVNTOiBQbHVnaW4gJ2V4Y2VwdGlvbicKK1BBU1M6IFBs
dWdpbkFycmF5ICdleGNlcHRpb24nCitQQVNTOiBSYW5nZSAnZXhjZXB0aW9uJworUEFTUzogUmVj
dCAnZXhjZXB0aW9uJworUEFTUzogU3R5bGVTaGVldCAnZXhjZXB0aW9uJworUEFTUzogU3R5bGVT
aGVldExpc3QgJ2V4Y2VwdGlvbicKK1BBU1M6IFRleHRFdmVudCAnZXhjZXB0aW9uJworUEFTUzog
VUlFdmVudCAnZXhjZXB0aW9uJworUEFTUzogV2hlZWxFdmVudCAnZXhjZXB0aW9uJworUEFTUzog
WFBhdGhSZXN1bHQgJ2V4Y2VwdGlvbicKK1BBU1M6IFdvcmtlciAnZXhjZXB0aW9uJworUEFTUzog
RXZlbnRUYXJnZXROb2RlICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IEJhckluZm8gJ25vIGNvbnN0
cnVjdG9yJworUEFTUzogQ2FudmFzR3JhZGllbnQgJ25vIGNvbnN0cnVjdG9yJworUEFTUzogQ2Fu
dmFzUGF0dGVybiAnbm8gY29uc3RydWN0b3InCitQQVNTOiBDb25zb2xlICdubyBjb25zdHJ1Y3Rv
cicKK1BBU1M6IERPTVNlbGVjdGlvbiAnbm8gY29uc3RydWN0b3InCitQQVNTOiBET01XaW5kb3cg
J25vIGNvbnN0cnVjdG9yJworUEFTUzogSGlzdG9yeSAnbm8gY29uc3RydWN0b3InCitQQVNTOiBV
bmRldGVjdGFibGVIVE1MQ29sbGVjdGlvbiAnbm8gY29uc3RydWN0b3InCitQQVNTOiBIVE1MT3B0
aW9uc0NvbGxlY3Rpb24gJ25vIGNvbnN0cnVjdG9yJworUEFTUzogSW5zcGVjdG9yQ29udHJvbGxl
ciAnbm8gY29uc3RydWN0b3InCitQQVNTOiBMb2NhdGlvbiAnbm8gY29uc3RydWN0b3InCitQQVNT
OiBOYXZpZ2F0b3IgJ25vIGNvbnN0cnVjdG9yJworUEFTUzogTm9kZUl0ZXJhdG9yICdubyBjb25z
dHJ1Y3RvcicKK1BBU1M6IFJHQkNvbG9yICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6IFNjcmVlbiAn
bm8gY29uc3RydWN0b3InCitQQVNTOiBUcmVlV2Fsa2VyICdubyBjb25zdHJ1Y3RvcicKK1BBU1M6
IFhQYXRoRXhwcmVzc2lvbiAnbm8gY29uc3RydWN0b3InCitQQVNTOiBYUGF0aE5TUmVzb2x2ZXIg
J25vIGNvbnN0cnVjdG9yJworUEFTUzogRXZlbnRUYXJnZXQgJ25vIGNvbnN0cnVjdG9yJworUEFT
UzogRXZlbnRMaXN0ZW5lciAnbm8gY29uc3RydWN0b3InCitQQVNTOiBOUE9iamVjdCAnbm8gY29u
c3RydWN0b3InCitQQVNTOiBIVE1MQWxsQ29sbGVjdGlvbiAnbm8gY29uc3RydWN0b3InCitQQVNT
OiBNZXNzYWdlQ2hhbm5lbCAnbm8gY29uc3RydWN0b3InCitQQVNTOiBET01QYXJzZXIgJ1tvYmpl
Y3QgRE9NUGFyc2VyXScKK1BBU1M6IFhNTEh0dHBSZXF1ZXN0ICdbb2JqZWN0IFhNTEh0dHBSZXF1
ZXN0XScKK1BBU1M6IFhNTFNlcmlhbGl6ZXIgJ1tvYmplY3QgWE1MU2VyaWFsaXplcl0nCitQQVNT
OiBYUGF0aEV2YWx1YXRvciAnW29iamVjdCBYUGF0aEV2YWx1YXRvcl0nCitQQVNTOiBYU0xUUHJv
Y2Vzc29yICdbb2JqZWN0IFhTTFRQcm9jZXNzb3JdJworUEFTUzogQXVkaW8gJ1tvYmplY3QgSFRN
TEF1ZGlvRWxlbWVudF0nCitQQVNTOiBPcHRpb24gJ1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRd
JworUEFTUzogSW1hZ2UgJ1tvYmplY3QgSFRNTEltYWdlRWxlbWVudF0nCisKSW5kZXg6IGZhc3Qv
ZG9tL2RvbS1jb25zdHJ1Y3RvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmYXN0L2RvbS9kb20tY29u
c3RydWN0b3JzLmh0bWwJKHJldmlzaW9uIDApCisrKyBmYXN0L2RvbS9kb20tY29uc3RydWN0b3Jz
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACis8aHRtbD4KKyAgPGhlYWQ+PC9o
ZWFkPgorICA8Ym9keT4KKworPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFsbCBidXQgYSBoYW5k
ZnVsIG9mIGRvbSBjb25zdHJ1Y3RvcnMgdGhyb3cKK2V4Y2VwdGlvbnMsIGFuZCB0aGUgcmVzdCBy
ZXR1cm4gcmVhc29uYWJsZSBvYmplY3RzPC9wPgorCisgIDxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
Ky8vIFRoZXNlIG5vZGVzIHRocm93IGFuIGV4Y2VwdGlvbi4KK3ZhciBub2Rlc19leGNlcHRpb24g
PSBbCisgICAgJ0F0dHInLCAnQ2hhcmFjdGVyRGF0YScsICdDREFUQVNlY3Rpb24nLCAnQ29tbWVu
dCcsICdEb2N1bWVudCcsCisgICAgJ0RvY3VtZW50RnJhZ21lbnQnLCAnRG9jdW1lbnRUeXBlJywg
J0VsZW1lbnQnLCAnRW50aXR5JywKKyAgICAnRW50aXR5UmVmZXJlbmNlJywgJ0hUTUxEb2N1bWVu
dCcsICdOb2RlJywgJ05vdGF0aW9uJywKKyAgICAnUHJvY2Vzc2luZ0luc3RydWN0aW9uJywgJ1Rl
eHQnLCAnSFRNTEFuY2hvckVsZW1lbnQnLAorICAgICdIVE1MQXBwbGV0RWxlbWVudCcsICdIVE1M
QXJlYUVsZW1lbnQnLCAnSFRNTEJhc2VFbGVtZW50JywKKyAgICAnSFRNTEJhc2VGb250RWxlbWVu
dCcsICdIVE1MQmxvY2txdW90ZUVsZW1lbnQnLCAnSFRNTEJvZHlFbGVtZW50JywKKyAgICAnSFRN
TEJSRWxlbWVudCcsICdIVE1MQnV0dG9uRWxlbWVudCcsICdIVE1MQ2FudmFzRWxlbWVudCcsCisg
ICAgJ0hUTUxEaXJlY3RvcnlFbGVtZW50JywgJ0hUTUxEaXZFbGVtZW50JywgJ0hUTUxETGlzdEVs
ZW1lbnQnLAorICAgICdIVE1MRW1iZWRFbGVtZW50JywgJ0hUTUxGaWVsZFNldEVsZW1lbnQnLCAn
SFRNTEZvbnRFbGVtZW50JywKKyAgICAnSFRNTEZvcm1FbGVtZW50JywgJ0hUTUxGcmFtZUVsZW1l
bnQnLCAnSFRNTEZyYW1lU2V0RWxlbWVudCcsCisgICAgJ0hUTUxIZWFkaW5nRWxlbWVudCcsICdI
VE1MSGVhZEVsZW1lbnQnLCAnSFRNTEhSRWxlbWVudCcsCisgICAgJ0hUTUxIdG1sRWxlbWVudCcs
ICdIVE1MSUZyYW1lRWxlbWVudCcsICdIVE1MSW1hZ2VFbGVtZW50JywKKyAgICAnSFRNTElucHV0
RWxlbWVudCcsICdIVE1MSXNJbmRleEVsZW1lbnQnLCAnSFRNTExhYmVsRWxlbWVudCcsCisgICAg
J0hUTUxMZWdlbmRFbGVtZW50JywgJ0hUTUxMSUVsZW1lbnQnLCAnSFRNTExpbmtFbGVtZW50JywK
KyAgICAnSFRNTE1hcEVsZW1lbnQnLCAnSFRNTE1hcnF1ZWVFbGVtZW50JywgJ0hUTUxNZW51RWxl
bWVudCcsCisgICAgJ0hUTUxNZXRhRWxlbWVudCcsICdIVE1MTW9kRWxlbWVudCcsICdIVE1MT2Jq
ZWN0RWxlbWVudCcsCisgICAgJ0hUTUxPTGlzdEVsZW1lbnQnLCAnSFRNTE9wdEdyb3VwRWxlbWVu
dCcsICdIVE1MT3B0aW9uRWxlbWVudCcsCisgICAgJ0hUTUxQYXJhZ3JhcGhFbGVtZW50JywgJ0hU
TUxQYXJhbUVsZW1lbnQnLCAnSFRNTFByZUVsZW1lbnQnLAorICAgICdIVE1MUXVvdGVFbGVtZW50
JywgJ0hUTUxTY3JpcHRFbGVtZW50JywgJ0hUTUxTZWxlY3RFbGVtZW50JywKKyAgICAnSFRNTFN0
eWxlRWxlbWVudCcsICdIVE1MVGFibGVDYXB0aW9uRWxlbWVudCcsCisgICAgJ0hUTUxUYWJsZUNv
bEVsZW1lbnQnLCAnSFRNTFRhYmxlRWxlbWVudCcsCisgICAgJ0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50JywgJ0hUTUxUYWJsZUNlbGxFbGVtZW50JywKKyAgICAnSFRNTFRhYmxlUm93RWxlbWVudCcs
ICdIVE1MVGV4dEFyZWFFbGVtZW50JywgJ0hUTUxUaXRsZUVsZW1lbnQnLAorICAgICdIVE1MVUxp
c3RFbGVtZW50JywgJ0hUTUxFbGVtZW50JywgJ0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCcsCisg
ICAgJ0NsaXBib2FyZCcsICdDb3VudGVyJywgJ0NTU0NoYXJzZXRSdWxlJywgJ0NTU0ZvbnRGYWNl
UnVsZScsCisgICAgJ0NTU0ltcG9ydFJ1bGUnLCAnQ1NTTWVkaWFSdWxlJywgJ0NTU1BhZ2VSdWxl
JywKKyAgICAnQ1NTUHJpbWl0aXZlVmFsdWUnLCAnQ1NTUnVsZScsICdDU1NSdWxlTGlzdCcsCisg
ICAgJ0NTU1N0eWxlRGVjbGFyYXRpb24nLCAnQ1NTU3R5bGVSdWxlJywgJ0NTU1N0eWxlU2hlZXQn
LAorICAgICdDU1NWYWx1ZScsICdDU1NWYWx1ZUxpc3QnLCAnRE9NSW1wbGVtZW50YXRpb24nLCAn
RXZlbnQnLAorICAgICdIVE1MQ29sbGVjdGlvbicsICdLZXlib2FyZEV2ZW50JywgJ01lZGlhTGlz
dCcsICdNaW1lVHlwZScsCisgICAgJ01pbWVUeXBlQXJyYXknLCAnTW91c2VFdmVudCcsICdNdXRh
dGlvbkV2ZW50JywgJ05hbWVkTm9kZU1hcCcsCisgICAgJ05vZGVGaWx0ZXInLCAnTm9kZUxpc3Qn
LCAnT3ZlcmZsb3dFdmVudCcsICdQbHVnaW4nLAorICAgICdQbHVnaW5BcnJheScsICdSYW5nZScs
ICdSZWN0JywgJ1N0eWxlU2hlZXQnLCAnU3R5bGVTaGVldExpc3QnLAorICAgICdUZXh0RXZlbnQn
LCAnVUlFdmVudCcsICdXaGVlbEV2ZW50JywgJ1hQYXRoUmVzdWx0JywgJ1dvcmtlcicKK107CisK
Ky8vIFRoZXNlIG5vZGVzIGhhdmUgYSB3b3JraW5nIGNvbnN0cnVjdG9yLgordmFyIG5vZGVzX2Nv
bnN0cnVjdG9yID0gWworICAgICdET01QYXJzZXInLCAnWE1MSHR0cFJlcXVlc3QnLCAnWE1MU2Vy
aWFsaXplcicsICdYUGF0aEV2YWx1YXRvcicsCisgICAgJ1hTTFRQcm9jZXNzb3InCitdOworCisv
LyBUaGVzZSBub2RlcyBoYXZlIG5vIGNvbnN0cnVjdG9yLgordmFyIG5vZGVzX25vX2NvbnN0cnVj
dG9yID0gWworICAgICdFdmVudFRhcmdldE5vZGUnLCAnQmFySW5mbycsICdDYW52YXNHcmFkaWVu
dCcsICdDYW52YXNQYXR0ZXJuJywKKyAgICAnQ29uc29sZScsICdET01TZWxlY3Rpb24nLCAnRE9N
V2luZG93JywgJ0hpc3RvcnknLAorICAgICdVbmRldGVjdGFibGVIVE1MQ29sbGVjdGlvbicsICdI
VE1MT3B0aW9uc0NvbGxlY3Rpb24nLAorICAgICdJbnNwZWN0b3JDb250cm9sbGVyJywgJ0xvY2F0
aW9uJywgJ05hdmlnYXRvcicsICdOb2RlSXRlcmF0b3InLAorICAgICdSR0JDb2xvcicsICdTY3Jl
ZW4nLCAnVHJlZVdhbGtlcicsICdYUGF0aEV4cHJlc3Npb24nLAorICAgICdYUGF0aE5TUmVzb2x2
ZXInLCAnRXZlbnRUYXJnZXQnLCAnRXZlbnRMaXN0ZW5lcicsICdOUE9iamVjdCcsCisgICAgJ0hU
TUxBbGxDb2xsZWN0aW9uJywgJ01lc3NhZ2VDaGFubmVsJworXTsKKworLy8gVGhlc2Ugbm9kZXMg
aGF2ZSBhIHdvcmtpbmcgY29uc3RydWN0b3IsIGJ1dCB0aGVpciBvYmplY3QgbmFtZXMgZGlmZmVy
LgorLy8gVGhpcyBpcyB0aGVyZWZvcmUgYSBtYXAgZnJvbSBub2RlIHRvIGNvbnN0cnVjdG9yLgor
dmFyIG5vZGVzX2RpZmZlcmVudF9jb25zdHJ1Y3RvciA9IHsKKyAgICAnQXVkaW8nOiAnSFRNTEF1
ZGlvRWxlbWVudCcsCisgICAgJ09wdGlvbic6ICdIVE1MT3B0aW9uRWxlbWVudCcsCisgICAgJ0lt
YWdlJzogJ0hUTUxJbWFnZUVsZW1lbnQnCit9CisKK2Z1bmN0aW9uIFRyeUFsbG9jYXRlKG5vZGUp
IHsKKyAgICB2YXIgQ29ucyA9IHRoaXNbbm9kZV07CisgICAgaWYgKCFDb25zKSByZXR1cm4gJ25v
IGNvbnN0cnVjdG9yJzsKKyAgICB0cnkgeyByZXR1cm4gbmV3IENvbnMoKTsgfQorICAgIGNhdGNo
IChlKSB7IHJldHVybiAnZXhjZXB0aW9uJzsgfQorfQorCitmdW5jdGlvbiBjaGVjayhuYW1lLCBl
eHBlY3RlZCkgeworICAgIGFjdHVhbCA9IFRyeUFsbG9jYXRlKG5vZGUpOworICAgIGlmIChhY3R1
YWwgPT0gZXhwZWN0ZWQpIHsKKyAgICAgIGRvY3VtZW50LndyaXRlKCJQQVNTOiAiICsgbmFtZSAr
ICIgJyIgKyBleHBlY3RlZCArICInPGJyPiIpOworICAgIH0gZWxzZSB7CisgICAgICBkb2N1bWVu
dC53cml0ZSgiRkFJTDogIiArIG5hbWUgKyAiIHdhbnRlZCAnIiArIGV4cGVjdGVkICsgIicsIGdv
dCAnIiArCisgICAgICAgICAgYWN0dWFsICsgIic8YnI+Iik7CisgICAgfQorfQorCisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgbm9kZXNfZXhjZXB0aW9uLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIG5v
ZGUgPSBub2Rlc19leGNlcHRpb25baV07CisgICAgY2hlY2sobm9kZSwgJ2V4Y2VwdGlvbicpOwor
fQorCitmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzX25vX2NvbnN0cnVjdG9yLmxlbmd0aDsgaSsr
KSB7CisgICAgdmFyIG5vZGUgPSBub2Rlc19ub19jb25zdHJ1Y3RvcltpXTsKKyAgICBjaGVjayhu
b2RlLCAnbm8gY29uc3RydWN0b3InKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlc19j
b25zdHJ1Y3Rvci5sZW5ndGg7IGkrKykgeworICAgIHZhciBub2RlID0gbm9kZXNfY29uc3RydWN0
b3JbaV07CisgICAgY2hlY2sobm9kZSwgJ1tvYmplY3QgJyArIG5vZGUgKyAnXScpOworfQorCitm
b3IgKHZhciBub2RlIGluIG5vZGVzX2RpZmZlcmVudF9jb25zdHJ1Y3RvcikgeworICAgIGNoZWNr
KG5vZGUsICdbb2JqZWN0ICcgKyBub2Rlc19kaWZmZXJlbnRfY29uc3RydWN0b3Jbbm9kZV0gKyAn
XScpOworfQorCisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="11716"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25457</attachid>
            <date>2008-11-24 15:58:01 -0800</date>
            <delta_ts>2008-11-24 16:07:08 -0800</delta_ts>
            <desc>Shuffled objects and switched to standard JS wrapper</desc>
            <filename>22365c.txt</filename>
            <type>text/plain</type>
            <size>13927</size>
            <attacher name="Pam Greene (IRC:pamg)">pam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4NzMy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTEt
MjQgIFBhbWVsYSBHcmVlbmUgIDxwYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM2NQorICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSBiZWhhdmlv
ciBvZiBET00gbm9kZSBjb25zdHJ1Y3RvcnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9kb20tY29u
c3RydWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZG9tLWNv
bnN0cnVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAwOC0xMS0yNCAgR2xlbm4gV2lsc29uICA8Z3dp
bHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBmYXN0L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBmYXN0L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE1MiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFsbCBidXQgYSBoYW5kZnVsIG9m
IGRvbSBjb25zdHJ1Y3RvcnMgdGhyb3cgZXhjZXB0aW9ucywgYW5kIHRoZSByZXN0IHJldHVybiBy
ZWFzb25hYmxlIG9iamVjdHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IFRyeUFsbG9jYXRlKCdBdHRyJykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0No
YXJhY3RlckRhdGEnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnQ0RBVEFTZWN0
aW9uJykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0NvbW1lbnQnKSBpcyAnZXhj
ZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnRG9jdW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFT
UyBUcnlBbGxvY2F0ZSgnRG9jdW1lbnRGcmFnbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRy
eUFsbG9jYXRlKCdEb2N1bWVudFR5cGUnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0
ZSgnRWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdFbnRpdHknKSBp
cyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnRW50aXR5UmVmZXJlbmNlJykgaXMgJ2V4
Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxEb2N1bWVudCcpIGlzICdleGNlcHRpb24n
CitQQVNTIFRyeUFsbG9jYXRlKCdOb2RlJykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2Nh
dGUoJ05vdGF0aW9uJykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbicpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdUZXh0Jykg
aXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxBbmNob3JFbGVtZW50JykgaXMg
J2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxBcHBsZXRFbGVtZW50JykgaXMgJ2V4
Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxBcmVhRWxlbWVudCcpIGlzICdleGNlcHRp
b24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MQmFzZUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJwor
UEFTUyBUcnlBbGxvY2F0ZSgnSFRNTEJhc2VGb250RWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQ
QVNTIFRyeUFsbG9jYXRlKCdIVE1MQmxvY2txdW90ZUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJwor
UEFTUyBUcnlBbGxvY2F0ZSgnSFRNTEJvZHlFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1Mg
VHJ5QWxsb2NhdGUoJ0hUTUxCUkVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxv
Y2F0ZSgnSFRNTEJ1dHRvbkVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0
ZSgnSFRNTENhbnZhc0VsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgn
SFRNTERpcmVjdG9yeUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgn
SFRNTERpdkVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTERM
aXN0RWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MRW1iZWRF
bGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxGaWVsZFNldEVs
ZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTEZvbnRFbGVtZW50
JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxGb3JtRWxlbWVudCcpIGlz
ICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MRnJhbWVFbGVtZW50JykgaXMgJ2V4
Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxGcmFtZVNldEVsZW1lbnQnKSBpcyAnZXhj
ZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTEhlYWRpbmdFbGVtZW50JykgaXMgJ2V4Y2Vw
dGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxIZWFkRWxlbWVudCcpIGlzICdleGNlcHRpb24n
CitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MSFJFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1Mg
VHJ5QWxsb2NhdGUoJ0hUTUxIdG1sRWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFs
bG9jYXRlKCdIVE1MSUZyYW1lRWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9j
YXRlKCdIVE1MSW1hZ2VFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUo
J0hUTUxJbnB1dEVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRN
TElzSW5kZXhFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxM
YWJlbEVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTExlZ2Vu
ZEVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTExJRWxlbWVu
dCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MTGlua0VsZW1lbnQnKSBp
cyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTE1hcEVsZW1lbnQnKSBpcyAnZXhj
ZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTE1hcnF1ZWVFbGVtZW50JykgaXMgJ2V4Y2Vw
dGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxNZW51RWxlbWVudCcpIGlzICdleGNlcHRpb24n
CitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MTWV0YUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFT
UyBUcnlBbGxvY2F0ZSgnSFRNTE1vZEVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlB
bGxvY2F0ZSgnSFRNTE9iamVjdEVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxv
Y2F0ZSgnSFRNTE9MaXN0RWxlbWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRl
KCdIVE1MT3B0R3JvdXBFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUo
J0hUTUxPcHRpb25FbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hU
TUxQYXJhZ3JhcGhFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hU
TUxQYXJhbUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTFBy
ZUVsZW1lbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTFF1b3RlRWxl
bWVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MU2NyaXB0RWxlbWVu
dCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MU2VsZWN0RWxlbWVudCcp
IGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MU3R5bGVFbGVtZW50JykgaXMg
J2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Jykg
aXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxUYWJsZUNvbEVsZW1lbnQnKSBp
cyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTFRhYmxlRWxlbWVudCcpIGlzICdl
eGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MVGFibGVTZWN0aW9uRWxlbWVudCcpIGlz
ICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MVGFibGVDZWxsRWxlbWVudCcpIGlz
ICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MVGFibGVSb3dFbGVtZW50JykgaXMg
J2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxUZXh0QXJlYUVsZW1lbnQnKSBpcyAn
ZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTFRpdGxlRWxlbWVudCcpIGlzICdleGNl
cHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MVUxpc3RFbGVtZW50JykgaXMgJ2V4Y2VwdGlv
bicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0hUTUxFbGVtZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1Mg
VHJ5QWxsb2NhdGUoJ0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCcpIGlzICdleGNlcHRpb24nCitQ
QVNTIFRyeUFsbG9jYXRlKCdDbGlwYm9hcmQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxv
Y2F0ZSgnQ291bnRlcicpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdDU1NDaGFy
c2V0UnVsZScpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdDU1NGb250RmFjZVJ1
bGUnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnQ1NTSW1wb3J0UnVsZScpIGlz
ICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdDU1NNZWRpYVJ1bGUnKSBpcyAnZXhjZXB0
aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnQ1NTUGFnZVJ1bGUnKSBpcyAnZXhjZXB0aW9uJworUEFT
UyBUcnlBbGxvY2F0ZSgnQ1NTUHJpbWl0aXZlVmFsdWUnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBU
cnlBbGxvY2F0ZSgnQ1NTUnVsZScpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdD
U1NSdWxlTGlzdCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdDU1NTdHlsZURl
Y2xhcmF0aW9uJykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0NTU1N0eWxlUnVs
ZScpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdDU1NTdHlsZVNoZWV0JykgaXMg
J2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0NTU1ZhbHVlJykgaXMgJ2V4Y2VwdGlvbicK
K1BBU1MgVHJ5QWxsb2NhdGUoJ0NTU1ZhbHVlTGlzdCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRy
eUFsbG9jYXRlKCdET01JbXBsZW1lbnRhdGlvbicpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFs
bG9jYXRlKCdFdmVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MQ29s
bGVjdGlvbicpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdLZXlib2FyZEV2ZW50
JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ01lZGlhTGlzdCcpIGlzICdleGNl
cHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdNaW1lVHlwZScpIGlzICdleGNlcHRpb24nCitQQVNT
IFRyeUFsbG9jYXRlKCdNaW1lVHlwZUFycmF5JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxs
b2NhdGUoJ01vdXNlRXZlbnQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnTXV0
YXRpb25FdmVudCcpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdOYW1lZE5vZGVN
YXAnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnTm9kZUZpbHRlcicpIGlzICdl
eGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdOb2RlTGlzdCcpIGlzICdleGNlcHRpb24nCitQ
QVNTIFRyeUFsbG9jYXRlKCdPdmVyZmxvd0V2ZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5
QWxsb2NhdGUoJ1BsdWdpbicpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdQbHVn
aW5BcnJheScpIGlzICdleGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdSYW5nZScpIGlzICdl
eGNlcHRpb24nCitQQVNTIFRyeUFsbG9jYXRlKCdSZWN0JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1Mg
VHJ5QWxsb2NhdGUoJ1N0eWxlU2hlZXQnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0
ZSgnU3R5bGVTaGVldExpc3QnKSBpcyAnZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnVGV4
dEV2ZW50JykgaXMgJ2V4Y2VwdGlvbicKK1BBU1MgVHJ5QWxsb2NhdGUoJ1VJRXZlbnQnKSBpcyAn
ZXhjZXB0aW9uJworUEFTUyBUcnlBbGxvY2F0ZSgnV2hlZWxFdmVudCcpIGlzICdleGNlcHRpb24n
CitQQVNTIFRyeUFsbG9jYXRlKCdYUGF0aFJlc3VsdCcpIGlzICdleGNlcHRpb24nCitGQUlMIFRy
eUFsbG9jYXRlKCdCYXJJbmZvJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVj
dG9yLgorRkFJTCBUcnlBbGxvY2F0ZSgnQ2FudmFzR3JhZGllbnQnKSBzaG91bGQgYmUgZXhjZXB0
aW9uLiBXYXMgbm8gY29uc3RydWN0b3IuCitGQUlMIFRyeUFsbG9jYXRlKCdDYW52YXNQYXR0ZXJu
Jykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgorRkFJTCBUcnlBbGxv
Y2F0ZSgnQ29uc29sZScpIHNob3VsZCBiZSBleGNlcHRpb24uIFdhcyBubyBjb25zdHJ1Y3Rvci4K
K0ZBSUwgVHJ5QWxsb2NhdGUoJ0RPTVNlbGVjdGlvbicpIHNob3VsZCBiZSBleGNlcHRpb24uIFdh
cyBubyBjb25zdHJ1Y3Rvci4KK0ZBSUwgVHJ5QWxsb2NhdGUoJ0RPTVdpbmRvdycpIHNob3VsZCBi
ZSBleGNlcHRpb24uIFdhcyBubyBjb25zdHJ1Y3Rvci4KK0ZBSUwgVHJ5QWxsb2NhdGUoJ0hpc3Rv
cnknKSBzaG91bGQgYmUgZXhjZXB0aW9uLiBXYXMgbm8gY29uc3RydWN0b3IuCitGQUlMIFRyeUFs
bG9jYXRlKCdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nKSBzaG91bGQgYmUgZXhjZXB0aW9uLiBXYXMg
bm8gY29uc3RydWN0b3IuCitGQUlMIFRyeUFsbG9jYXRlKCdMb2NhdGlvbicpIHNob3VsZCBiZSBl
eGNlcHRpb24uIFdhcyBubyBjb25zdHJ1Y3Rvci4KK0ZBSUwgVHJ5QWxsb2NhdGUoJ05hdmlnYXRv
cicpIHNob3VsZCBiZSBleGNlcHRpb24uIFdhcyBubyBjb25zdHJ1Y3Rvci4KK0ZBSUwgVHJ5QWxs
b2NhdGUoJ05vZGVJdGVyYXRvcicpIHNob3VsZCBiZSBleGNlcHRpb24uIFdhcyBubyBjb25zdHJ1
Y3Rvci4KK0ZBSUwgVHJ5QWxsb2NhdGUoJ1JHQkNvbG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4g
V2FzIG5vIGNvbnN0cnVjdG9yLgorRkFJTCBUcnlBbGxvY2F0ZSgnU2NyZWVuJykgc2hvdWxkIGJl
IGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgorRkFJTCBUcnlBbGxvY2F0ZSgnVHJlZVdh
bGtlcicpIHNob3VsZCBiZSBleGNlcHRpb24uIFdhcyBubyBjb25zdHJ1Y3Rvci4KK0ZBSUwgVHJ5
QWxsb2NhdGUoJ1hQYXRoRXhwcmVzc2lvbicpIHNob3VsZCBiZSBleGNlcHRpb24uIFdhcyBubyBj
b25zdHJ1Y3Rvci4KK1BBU1MgVHJ5QWxsb2NhdGUoJ0V2ZW50VGFyZ2V0Tm9kZScpIGlzICdubyBj
b25zdHJ1Y3RvcicKK1BBU1MgVHJ5QWxsb2NhdGUoJ1VuZGV0ZWN0YWJsZUhUTUxDb2xsZWN0aW9u
JykgaXMgJ25vIGNvbnN0cnVjdG9yJworUEFTUyBUcnlBbGxvY2F0ZSgnWFBhdGhOU1Jlc29sdmVy
JykgaXMgJ25vIGNvbnN0cnVjdG9yJworUEFTUyBUcnlBbGxvY2F0ZSgnRXZlbnRUYXJnZXQnKSBp
cyAnbm8gY29uc3RydWN0b3InCitQQVNTIFRyeUFsbG9jYXRlKCdFdmVudExpc3RlbmVyJykgaXMg
J25vIGNvbnN0cnVjdG9yJworUEFTUyBUcnlBbGxvY2F0ZSgnTlBPYmplY3QnKSBpcyAnbm8gY29u
c3RydWN0b3InCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MQWxsQ29sbGVjdGlvbicpIGlzICdubyBj
b25zdHJ1Y3RvcicKK1BBU1MgVHJ5QWxsb2NhdGUoJ0RPTVBhcnNlcicpIGlzICdbb2JqZWN0IERP
TVBhcnNlcl0nCitQQVNTIFRyeUFsbG9jYXRlKCdYTUxIdHRwUmVxdWVzdCcpIGlzICdbb2JqZWN0
IFhNTEh0dHBSZXF1ZXN0XScKK1BBU1MgVHJ5QWxsb2NhdGUoJ1hNTFNlcmlhbGl6ZXInKSBpcyAn
W29iamVjdCBYTUxTZXJpYWxpemVyXScKK1BBU1MgVHJ5QWxsb2NhdGUoJ1hQYXRoRXZhbHVhdG9y
JykgaXMgJ1tvYmplY3QgWFBhdGhFdmFsdWF0b3JdJworUEFTUyBUcnlBbGxvY2F0ZSgnWFNMVFBy
b2Nlc3NvcicpIGlzICdbb2JqZWN0IFhTTFRQcm9jZXNzb3JdJworRkFJTCBUcnlBbGxvY2F0ZSgn
V29ya2VyJykgc2hvdWxkIGJlIFtvYmplY3QgV29ya2VyXS4gV2FzIGV4Y2VwdGlvbi4KK0ZBSUwg
VHJ5QWxsb2NhdGUoJ01lc3NhZ2VDaGFubmVsJykgc2hvdWxkIGJlIFtvYmplY3QgTWVzc2FnZUNo
YW5uZWxdLiBXYXMgbm8gY29uc3RydWN0b3IuCitQQVNTIFRyeUFsbG9jYXRlKCdBdWRpbycpIGlz
ICdbb2JqZWN0IEhUTUxBdWRpb0VsZW1lbnRdJworUEFTUyBUcnlBbGxvY2F0ZSgnT3B0aW9uJykg
aXMgJ1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRdJworUEFTUyBUcnlBbGxvY2F0ZSgnSW1hZ2Un
KSBpcyAnW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBmYXN0L2RvbS9kb20tY29uc3RydWN0
b3JzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy5odG1sCShy
ZXZpc2lvbiAwKQorKysgZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhbGwgYnV0IGEg
aGFuZGZ1bCBvZiBkb20gY29uc3RydWN0b3JzIHRocm93IGV4Y2VwdGlvbnMsIGFuZCB0aGUgcmVz
dCByZXR1cm4gcmVhc29uYWJsZSBvYmplY3RzLicpOworCisvLyBUaGVzZSBvYmplY3RzIHNob3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24uCit2YXIgb2JqZWN0c19leGNlcHRpb24gPSBbCisgICAgJ0F0
dHInLCAnQ2hhcmFjdGVyRGF0YScsICdDREFUQVNlY3Rpb24nLCAnQ29tbWVudCcsICdEb2N1bWVu
dCcsCisgICAgJ0RvY3VtZW50RnJhZ21lbnQnLCAnRG9jdW1lbnRUeXBlJywgJ0VsZW1lbnQnLCAn
RW50aXR5JywKKyAgICAnRW50aXR5UmVmZXJlbmNlJywgJ0hUTUxEb2N1bWVudCcsICdOb2RlJywg
J05vdGF0aW9uJywKKyAgICAnUHJvY2Vzc2luZ0luc3RydWN0aW9uJywgJ1RleHQnLCAnSFRNTEFu
Y2hvckVsZW1lbnQnLAorICAgICdIVE1MQXBwbGV0RWxlbWVudCcsICdIVE1MQXJlYUVsZW1lbnQn
LCAnSFRNTEJhc2VFbGVtZW50JywKKyAgICAnSFRNTEJhc2VGb250RWxlbWVudCcsICdIVE1MQmxv
Y2txdW90ZUVsZW1lbnQnLCAnSFRNTEJvZHlFbGVtZW50JywKKyAgICAnSFRNTEJSRWxlbWVudCcs
ICdIVE1MQnV0dG9uRWxlbWVudCcsICdIVE1MQ2FudmFzRWxlbWVudCcsCisgICAgJ0hUTUxEaXJl
Y3RvcnlFbGVtZW50JywgJ0hUTUxEaXZFbGVtZW50JywgJ0hUTUxETGlzdEVsZW1lbnQnLAorICAg
ICdIVE1MRW1iZWRFbGVtZW50JywgJ0hUTUxGaWVsZFNldEVsZW1lbnQnLCAnSFRNTEZvbnRFbGVt
ZW50JywKKyAgICAnSFRNTEZvcm1FbGVtZW50JywgJ0hUTUxGcmFtZUVsZW1lbnQnLCAnSFRNTEZy
YW1lU2V0RWxlbWVudCcsCisgICAgJ0hUTUxIZWFkaW5nRWxlbWVudCcsICdIVE1MSGVhZEVsZW1l
bnQnLCAnSFRNTEhSRWxlbWVudCcsCisgICAgJ0hUTUxIdG1sRWxlbWVudCcsICdIVE1MSUZyYW1l
RWxlbWVudCcsICdIVE1MSW1hZ2VFbGVtZW50JywKKyAgICAnSFRNTElucHV0RWxlbWVudCcsICdI
VE1MSXNJbmRleEVsZW1lbnQnLCAnSFRNTExhYmVsRWxlbWVudCcsCisgICAgJ0hUTUxMZWdlbmRF
bGVtZW50JywgJ0hUTUxMSUVsZW1lbnQnLCAnSFRNTExpbmtFbGVtZW50JywKKyAgICAnSFRNTE1h
cEVsZW1lbnQnLCAnSFRNTE1hcnF1ZWVFbGVtZW50JywgJ0hUTUxNZW51RWxlbWVudCcsCisgICAg
J0hUTUxNZXRhRWxlbWVudCcsICdIVE1MTW9kRWxlbWVudCcsICdIVE1MT2JqZWN0RWxlbWVudCcs
CisgICAgJ0hUTUxPTGlzdEVsZW1lbnQnLCAnSFRNTE9wdEdyb3VwRWxlbWVudCcsICdIVE1MT3B0
aW9uRWxlbWVudCcsCisgICAgJ0hUTUxQYXJhZ3JhcGhFbGVtZW50JywgJ0hUTUxQYXJhbUVsZW1l
bnQnLCAnSFRNTFByZUVsZW1lbnQnLAorICAgICdIVE1MUXVvdGVFbGVtZW50JywgJ0hUTUxTY3Jp
cHRFbGVtZW50JywgJ0hUTUxTZWxlY3RFbGVtZW50JywKKyAgICAnSFRNTFN0eWxlRWxlbWVudCcs
ICdIVE1MVGFibGVDYXB0aW9uRWxlbWVudCcsCisgICAgJ0hUTUxUYWJsZUNvbEVsZW1lbnQnLCAn
SFRNTFRhYmxlRWxlbWVudCcsCisgICAgJ0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50JywgJ0hUTUxU
YWJsZUNlbGxFbGVtZW50JywKKyAgICAnSFRNTFRhYmxlUm93RWxlbWVudCcsICdIVE1MVGV4dEFy
ZWFFbGVtZW50JywgJ0hUTUxUaXRsZUVsZW1lbnQnLAorICAgICdIVE1MVUxpc3RFbGVtZW50Jywg
J0hUTUxFbGVtZW50JywgJ0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCcsCisgICAgJ0NsaXBib2Fy
ZCcsICdDb3VudGVyJywgJ0NTU0NoYXJzZXRSdWxlJywgJ0NTU0ZvbnRGYWNlUnVsZScsCisgICAg
J0NTU0ltcG9ydFJ1bGUnLCAnQ1NTTWVkaWFSdWxlJywgJ0NTU1BhZ2VSdWxlJywKKyAgICAnQ1NT
UHJpbWl0aXZlVmFsdWUnLCAnQ1NTUnVsZScsICdDU1NSdWxlTGlzdCcsCisgICAgJ0NTU1N0eWxl
RGVjbGFyYXRpb24nLCAnQ1NTU3R5bGVSdWxlJywgJ0NTU1N0eWxlU2hlZXQnLAorICAgICdDU1NW
YWx1ZScsICdDU1NWYWx1ZUxpc3QnLCAnRE9NSW1wbGVtZW50YXRpb24nLCAnRXZlbnQnLAorICAg
ICdIVE1MQ29sbGVjdGlvbicsICdLZXlib2FyZEV2ZW50JywgJ01lZGlhTGlzdCcsICdNaW1lVHlw
ZScsCisgICAgJ01pbWVUeXBlQXJyYXknLCAnTW91c2VFdmVudCcsICdNdXRhdGlvbkV2ZW50Jywg
J05hbWVkTm9kZU1hcCcsCisgICAgJ05vZGVGaWx0ZXInLCAnTm9kZUxpc3QnLCAnT3ZlcmZsb3dF
dmVudCcsICdQbHVnaW4nLAorICAgICdQbHVnaW5BcnJheScsICdSYW5nZScsICdSZWN0JywgJ1N0
eWxlU2hlZXQnLCAnU3R5bGVTaGVldExpc3QnLAorICAgICdUZXh0RXZlbnQnLCAnVUlFdmVudCcs
ICdXaGVlbEV2ZW50JywgJ1hQYXRoUmVzdWx0JywgJ0JhckluZm8nLAorICAgICdDYW52YXNHcmFk
aWVudCcsICdDYW52YXNQYXR0ZXJuJywgJ0NvbnNvbGUnLCAnRE9NU2VsZWN0aW9uJywKKyAgICAn
RE9NV2luZG93JywgJ0hpc3RvcnknLCAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uJywgJ0xvY2F0aW9u
JywKKyAgICAnTmF2aWdhdG9yJywgJ05vZGVJdGVyYXRvcicsICdSR0JDb2xvcicsICdTY3JlZW4n
LCAnVHJlZVdhbGtlcicsCisgICAgJ1hQYXRoRXhwcmVzc2lvbicKK107CisKKy8vIFRoZXNlIG9i
amVjdHMgc2hvdWxkIGhhdmUgYSB3b3JraW5nIGNvbnN0cnVjdG9yLgordmFyIG9iamVjdHNfY29u
c3RydWN0b3IgPSBbCisgICAgJ0RPTVBhcnNlcicsICdYTUxIdHRwUmVxdWVzdCcsICdYTUxTZXJp
YWxpemVyJywgJ1hQYXRoRXZhbHVhdG9yJywKKyAgICAnWFNMVFByb2Nlc3NvcicsICdXb3JrZXIn
LCAnTWVzc2FnZUNoYW5uZWwnCitdOworCisvLyBUaGVzZSBvYmplY3RzIHNob3VsZCBoYXZlIG5v
IGNvbnN0cnVjdG9yLgordmFyIG9iamVjdHNfbm9fY29uc3RydWN0b3IgPSBbCisgICAgJ0V2ZW50
VGFyZ2V0Tm9kZScsICdVbmRldGVjdGFibGVIVE1MQ29sbGVjdGlvbicsCisgICAgJ1hQYXRoTlNS
ZXNvbHZlcicsICdFdmVudFRhcmdldCcsICdFdmVudExpc3RlbmVyJywgJ05QT2JqZWN0JywKKyAg
ICAnSFRNTEFsbENvbGxlY3Rpb24nCitdOworCisvLyBUaGVzZSBvYmplY3RzIHNob3VsZCBoYXZl
IGEgd29ya2luZyBjb25zdHJ1Y3RvciwgYnV0IHRoZWlyIGNvbnN0cnVjdGVkCisvLyBvYmplY3Qg
bmFtZXMgZGlmZmVyLiBUaGlzIGlzIHRoZXJlZm9yZSBhIG1hcCBmcm9tIGNvbnN0cnVjdG9yIG5h
bWUgdG8KKy8vIGNvbnN0cnVjdGVkIG9iamVjdC4KK3ZhciBvYmplY3RzX2RpZmZlcmVudF9jb25z
dHJ1Y3RvciA9IHsKKyAgICAnQXVkaW8nOiAnSFRNTEF1ZGlvRWxlbWVudCcsCisgICAgJ09wdGlv
bic6ICdIVE1MT3B0aW9uRWxlbWVudCcsCisgICAgJ0ltYWdlJzogJ0hUTUxJbWFnZUVsZW1lbnQn
Cit9CisKK2Z1bmN0aW9uIFRyeUFsbG9jYXRlKG5vZGUpIHsKKyAgICB2YXIgQ29ucyA9IHRoaXNb
bm9kZV07CisgICAgaWYgKCFDb25zKSByZXR1cm4gJ25vIGNvbnN0cnVjdG9yJzsKKyAgICB0cnkg
eyByZXR1cm4gbmV3IENvbnMoKSArICcnOyB9CisgICAgY2F0Y2ggKGUpIHsgcmV0dXJuICdleGNl
cHRpb24nOyB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrKG5hbWUsIGV4cGVjdGVkKSB7CisgICAgYWN0
dWFsID0gVHJ5QWxsb2NhdGUobm9kZSk7CisgICAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZCkgewor
ICAgICAgZG9jdW1lbnQud3JpdGUoIlBBU1M6ICIgKyBuYW1lICsgIiAnIiArIGV4cGVjdGVkICsg
Iic8YnI+Iik7CisgICAgfSBlbHNlIHsKKyAgICAgIGRvY3VtZW50LndyaXRlKCJGQUlMOiAiICsg
bmFtZSArICIgd2FudGVkICciICsgZXhwZWN0ZWQgKyAiJywgZ290ICciICsKKyAgICAgICAgICBh
Y3R1YWwgKyAiJzxicj4iKTsKKyAgICB9Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0
c19leGNlcHRpb24ubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgb2JqID0gb2JqZWN0c19leGNlcHRp
b25baV07CisgICAgc2hvdWxkQmUoIlRyeUFsbG9jYXRlKCciICsgb2JqICsgIicpIiwgIidleGNl
cHRpb24nIik7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0c19ub19jb25zdHJ1Y3Rv
ci5sZW5ndGg7IGkrKykgeworICAgIHZhciBvYmogPSBvYmplY3RzX25vX2NvbnN0cnVjdG9yW2ld
OworICAgIHNob3VsZEJlKCJUcnlBbGxvY2F0ZSgnIiArIG9iaiArICInKSIsICInbm8gY29uc3Ry
dWN0b3InIik7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0c19jb25zdHJ1Y3Rvci5s
ZW5ndGg7IGkrKykgeworICAgIHZhciBvYmogPSBvYmplY3RzX2NvbnN0cnVjdG9yW2ldOworICAg
IHNob3VsZEJlKCJUcnlBbGxvY2F0ZSgnIiArIG9iaiArICInKSIsICInW29iamVjdCAiICsgb2Jq
ICsgIl0nIik7Cit9CisKK2ZvciAodmFyIG9iaiBpbiBvYmplY3RzX2RpZmZlcmVudF9jb25zdHJ1
Y3RvcikgeworICAgIHNob3VsZEJlKCJUcnlBbGxvY2F0ZSgnIiArIG9iaiArICInKSIsCisgICAg
ICAgICAgICAgIidbb2JqZWN0ICIgKyBvYmplY3RzX2RpZmZlcmVudF9jb25zdHJ1Y3RvcltvYmpd
ICsgIl0nIik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="11816"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>